diff --git a/adapter.cpp b/adapter.cpp index da9da38..16fef95 100644 --- a/adapter.cpp +++ b/adapter.cpp @@ -110,7 +110,7 @@ RtAdapterSetLinkLayerCapabilities( adapter->MaxSpeed); NetAdapterSetLinkLayerCapabilities(adapter->NetAdapter, &linkLayerCapabilities); - NetAdapterSetLinkLayerMtuSize(adapter->NetAdapter, adapter->bsdData.mtu); + NetAdapterSetLinkLayerMtuSize(adapter->NetAdapter, adapter->bsdData.if_net.if_mtu); NetAdapterSetPermanentLinkLayerAddress(adapter->NetAdapter, &adapter->PermanentAddress); NetAdapterSetCurrentLinkLayerAddress(adapter->NetAdapter, &adapter->CurrentAddress); } @@ -200,7 +200,7 @@ RtAdapterSetOffloadCapabilities( const struct re_softc* sc = &adapter->bsdData; - BOOLEAN txSupported = (sc->if_capenable & IFCAP_TXCSUM) != 0; + BOOLEAN txSupported = (sc->if_net.if_capenable & IFCAP_TXCSUM) != 0; if (txSupported) { auto const layer3Flags = NetAdapterOffloadLayer3FlagIPv4NoOptions | NetAdapterOffloadLayer3FlagIPv4WithOptions | @@ -222,7 +222,7 @@ RtAdapterSetOffloadCapabilities( NetAdapterOffloadSetTxChecksumCapabilities(adapter->NetAdapter, &txChecksumOffloadCapabilities); } - BOOLEAN rxSupported = (sc->if_capenable & IFCAP_RXCSUM) != 0; + BOOLEAN rxSupported = (sc->if_net.if_capenable & IFCAP_RXCSUM) != 0; if (rxSupported) { NET_ADAPTER_OFFLOAD_RX_CHECKSUM_CAPABILITIES rxChecksumOffloadCapabilities; @@ -233,7 +233,7 @@ RtAdapterSetOffloadCapabilities( NetAdapterOffloadSetRxChecksumCapabilities(adapter->NetAdapter, &rxChecksumOffloadCapabilities); } - BOOLEAN gsoSupported = (sc->if_capenable & IFCAP_TSO) != 0; + BOOLEAN gsoSupported = (sc->if_net.if_capenable & IFCAP_TSO) != 0; if (gsoSupported) { NET_ADAPTER_OFFLOAD_GSO_CAPABILITIES gsoOffloadCapabilities; @@ -258,7 +258,7 @@ RtAdapterSetOffloadCapabilities( NetAdapterOffloadSetGsoCapabilities(adapter->NetAdapter, &gsoOffloadCapabilities); } - BOOLEAN ieee8021qSupported = (sc->if_capenable & IFCAP_VLAN_HWTAGGING) != 0; + BOOLEAN ieee8021qSupported = (sc->if_net.if_capenable & IFCAP_VLAN_HWTAGGING) != 0; if (ieee8021qSupported) { const NET_ADAPTER_OFFLOAD_IEEE8021Q_TAG_FLAGS ieee8021qTaggingFlag = NetAdapterOffloadIeee8021PriorityTaggingFlag | NetAdapterOffloadIeee8021VlanTaggingFlag; diff --git a/adapter.h b/adapter.h index 637f8dd..dbe7dbf 100644 --- a/adapter.h +++ b/adapter.h @@ -1,5 +1,6 @@ #pragma once +#include "bsd.h" #include "if_re_bsd.h" #include "bsdexport.h" @@ -140,4 +141,4 @@ GetMulticastBit( _In_ NET_ADAPTER_LINK_LAYER_ADDRESS const* address, _Out_ _Post_satisfies_(*byte < MAX_NIC_MULTICAST_REG) UCHAR* byte, _Out_ UCHAR* value -); \ No newline at end of file +); diff --git a/bsd.h b/bsd.h index 47b266f..4e6f90f 100644 --- a/bsd.h +++ b/bsd.h @@ -1,11 +1,6 @@ #pragma once -#pragma warning (disable: 4005) -#pragma warning (disable: 4083) -#include -#pragma warning(default: 4005) -#pragma warning(default: 4083) -#include +#define __NO_STRICT_ALIGNMENT // Driver Options @@ -14,23 +9,18 @@ #define interrupt_mitigation 1 #define phy_power_saving 1 #define phy_mdix_mode RE_ETH_PHY_AUTO_MDI_MDIX -#define max_rx_mbuf_sz MJUM9BYTES #define RE_CSUM_FEATURES_IPV4 (CSUM_IP | CSUM_TCP | CSUM_UDP) #define RE_CSUM_FEATURES_IPV6 (CSUM_TCP_IPV6 | CSUM_UDP_IPV6) #define RE_CSUM_FEATURES (RE_CSUM_FEATURES_IPV4 | RE_CSUM_FEATURES_IPV6) - // BSD Compat +#define __FBSDID(id) + #define MJUM9BYTES (9 * 1024) /* jumbo cluster 9k */ #define MJUM16BYTES (16 * 1024) /* jumbo cluster 16k */ -#define u_int8_t uint8_t -#define u_int16_t uint16_t -#define u_int32_t uint32_t -#define u_int64_t uint64_t - #define __P(x) x #define DELAY(x) KeStallExecutionProcessor(x) @@ -43,8 +33,6 @@ #define ntohs(x) RtlUshortByteSwap(x) -#define caddr_t uintptr_t - #define ENXIO 6 /* Device not configured */ #define EOPNOTSUPP 45 /* Operation not supported */ @@ -58,8 +46,6 @@ #define device_printf(dev, x, ...) __nop() #endif -#define DBGPRINT1(dev, x, ...) DbgPrint(x, __VA_ARGS__) - #if !defined(_ARM_) && !defined(_ARM64_) #define WRITE_REGISTER_NOFENCE_ULONG WRITE_REGISTER_ULONG #define WRITE_REGISTER_NOFENCE_USHORT WRITE_REGISTER_USHORT @@ -70,51 +56,36 @@ #define READ_REGISTER_NOFENCE_UCHAR READ_REGISTER_UCHAR #endif -/* - * register space access macros - */ -#define CSR_WRITE_4(sc, reg, val) ((sc->prohibit_access_reg)?__nop():WRITE_REGISTER_NOFENCE_ULONG((PULONG)MmioAddr(sc, reg), val)) -#define CSR_WRITE_2(sc, reg, val) ((sc->prohibit_access_reg)?__nop():WRITE_REGISTER_NOFENCE_USHORT((PUSHORT)MmioAddr(sc, reg), val)) -#define CSR_WRITE_1(sc, reg, val) ((sc->prohibit_access_reg)?__nop():WRITE_REGISTER_NOFENCE_UCHAR((PUCHAR)MmioAddr(sc, reg), val)) - -#define CSR_READ_4(sc, reg) ((sc->prohibit_access_reg)?0xFFFFFFFF:READ_REGISTER_NOFENCE_ULONG((PULONG)MmioAddr(sc, reg))) -#define CSR_READ_2(sc, reg) ((sc->prohibit_access_reg)?0xFFFF:READ_REGISTER_NOFENCE_USHORT((PUSHORT)MmioAddr(sc, reg))) -#define CSR_READ_1(sc, reg) ((sc->prohibit_access_reg)?0xFF:READ_REGISTER_NOFENCE_UCHAR((PUCHAR)MmioAddr(sc, reg))) - -#if DISABLED_CODE - /* cmac write/read MMIO register */ -#define RE_CMAC_WRITE_1(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_1(sc->re_cmac_tag, sc->re_cmac_handle, reg, val)) -#define RE_CMAC_WRITE_2(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_2(sc->re_cmac_tag, sc->re_cmac_handle, reg, val)) -#define RE_CMAC_WRITE_4(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_4(sc->re_cmac_tag, sc->re_cmac_handle, reg, val)) -#define RE_CMAC_READ_1(sc, reg) ((sc->prohibit_access_reg)?0xFF:bus_space_read_1(sc->re_cmac_tag, sc->re_cmac_handle, reg)) -#define RE_CMAC_READ_2(sc, reg) ((sc->prohibit_access_reg)?0xFFFF:bus_space_read_2(sc->re_cmac_tag, sc->re_cmac_handle, reg)) -#define RE_CMAC_READ_4(sc, reg) (sc->prohibit_access_reg)?0xFFFFFFFF:bus_space_read_4(sc->re_cmac_tag, sc->re_cmac_handle, reg)) -#endif - -#define RE_LOCK(_sc) WdfSpinLockAcquire(_sc->dev->Lock) -#define RE_UNLOCK(_sc) WdfSpinLockRelease(_sc->dev->Lock) -#define RE_LOCK_ASSERT(_sc) - #include "mii.h" #include "ethernet.h" #include "if.h" #include "mbuf.h" -extern "C" NTSYSAPI ULONG RtlRandomEx( - _Inout_ PULONG Seed -); - -static inline void -random_ether_addr(u_int8_t* dst) -{ - LARGE_INTEGER TickCount; - /* Try to generate a more random seed */ - KeQueryTickCount(&TickCount); - - for (int i = 0; i < 6; i++) { - dst[i] = RtlRandomEx(&TickCount.LowPart) % 0xff; - } - - dst[0] &= 0xfe; - dst[0] |= 0x02; -} \ No newline at end of file +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef signed short int16_t; +typedef unsigned short uint16_t; +typedef signed int int32_t; +typedef unsigned int uint32_t; +typedef signed long long int64_t; +typedef unsigned long long uint64_t; + +typedef uint8_t u_int8_t; +typedef uint16_t u_int16_t; +typedef uint32_t u_int32_t; +typedef uint64_t u_int64_t; +typedef uintptr_t caddr_t; + +struct ifnet { + uint16_t if_mtu; + int if_capenable; + int if_hwassist; +}; + +// Placeholder types - fields are not used on WIN32. + +typedef char bus_dma_tag_t; +typedef char bus_dmamap_t; +typedef char bus_dma_segment_t; +typedef char bus_addr_t; +struct bus_dma_tag_common { char x; }; diff --git a/bsdexport.h b/bsdexport.h index 73f77b1..24e9e9f 100644 --- a/bsdexport.h +++ b/bsdexport.h @@ -25,4 +25,4 @@ int re_ifmedia_upd(struct re_softc* sc); int re_ifmedia_upd_8125(struct re_softc* sc); void re_rar_set(struct re_softc* sc, u_int8_t* eaddr); -void re_set_rx_packet_filter(struct re_softc* sc); \ No newline at end of file +void re_set_rx_packet_filter(struct re_softc* sc); diff --git a/device.cpp b/device.cpp index 39d0afb..5a5507f 100644 --- a/device.cpp +++ b/device.cpp @@ -136,7 +136,7 @@ RtInitializeHardware( RtlZeroMemory(&adapter->bsdData, sizeof(adapter->bsdData)); adapter->bsdData.dev = adapter; - adapter->bsdData.mtu = ETHERMTU; + adapter->bsdData.if_net.if_mtu = ETHERMTU; adapter->bsdData.eee_enable = adapter->EEEEnable ? 1 : 0; UINT16 devID = ConfigRead16(adapter, 2); @@ -149,23 +149,23 @@ RtInitializeHardware( re_init_software_variable(&adapter->bsdData); if ((sc->re_type == MACFG_24) || (sc->re_type == MACFG_25) || (sc->re_type == MACFG_26)) - sc->if_hwassist |= CSUM_TCP | CSUM_UDP; + sc->if_net.if_hwassist |= CSUM_TCP | CSUM_UDP; else - sc->if_hwassist |= RE_CSUM_FEATURES; - sc->if_capenable = IFCAP_HWCSUM | IFCAP_HWCSUM_IPV6; + sc->if_net.if_hwassist |= RE_CSUM_FEATURES; + sc->if_net.if_capenable = IFCAP_HWCSUM | IFCAP_HWCSUM_IPV6; /* TSO capability setup */ if (sc->re_if_flags & RL_FLAG_8168G_PLUS) { - sc->if_hwassist |= CSUM_TSO; - sc->if_capenable |= IFCAP_TSO; + sc->if_net.if_hwassist |= CSUM_TSO; + sc->if_net.if_capenable |= IFCAP_TSO; } /* RTL8169/RTL8101E/RTL8168B not support TSO v6 */ if (!(sc->re_if_flags & RL_FLAG_DESCV2)) { - sc->if_hwassist &= ~(CSUM_IP6_TSO | + sc->if_net.if_hwassist &= ~(CSUM_IP6_TSO | CSUM_TCP_IPV6 | CSUM_UDP_IPV6); - sc->if_capenable &= ~(IFCAP_TSO6 | IFCAP_HWCSUM_IPV6); + sc->if_net.if_capenable &= ~(IFCAP_TSO6 | IFCAP_HWCSUM_IPV6); } - sc->if_capenable |= IFCAP_VLAN_MTU | IFCAP_VLAN_HWTAGGING; + sc->if_net.if_capenable |= IFCAP_VLAN_MTU | IFCAP_VLAN_HWTAGGING; adapter->bsdData.re_rx_cstag = 1; adapter->bsdData.re_tx_cstag = 1; diff --git a/if_re.vcxproj b/if_re.vcxproj index 8914ba7..81732a5 100644 --- a/if_re.vcxproj +++ b/if_re.vcxproj @@ -1,240 +1,246 @@ - - - - - Debug - ARM64 - - - Debug - x64 - - - Release - ARM64 - - - Release - x64 - - - - {A80FE9DD-C140-40F6-A3F4-55A2A55BFAD4} - $(MSBuildProjectName) - 1 - Debug - Win32 - {157FF815-CA85-49A2-B622-5D57EFAB0A13} - $(LatestTargetPlatformVersion) - - - - Windows10 - False - Desktop - KMDF - WindowsKernelModeDriver10.0 - Driver - true - 2 - 3 - 23 - - - Windows10 - False - Desktop - KMDF - WindowsKernelModeDriver10.0 - Driver - true - 2 - 3 - 23 - - - Windows10 - True - Desktop - KMDF - WindowsKernelModeDriver10.0 - Driver - true - 2 - 3 - 23 - - - Windows10 - True - Desktop - KMDF - WindowsKernelModeDriver10.0 - Driver - true - 2 - 3 - 23 - - - - $(IntDir) - - - - - - - - - - - - - - - - * - true - $(InfArch) - true - .\$(IntDir)\if_re.inf - - - - if_re - - - if_re - - - if_re - - - if_re - - - - %(AdditionalDependencies);$(DDK_LIB_PATH)\ksguid.lib;$(DDK_LIB_PATH)\ntstrsafe.lib;$(DDK_LIB_PATH)\msgpioclxstub.lib - - - false - Level4 - - - Create - precomp.h - - - sha256 - - - 1.0.3 - - - - - %(AdditionalDependencies);$(DDK_LIB_PATH)\ksguid.lib;$(DDK_LIB_PATH)\ntstrsafe.lib;$(DDK_LIB_PATH)\msgpioclxstub.lib - - - false - Level4 - - - Create - precomp.h - - - sha256 - - - 1.0.3 - - - - - %(AdditionalDependencies);$(DDK_LIB_PATH)\ksguid.lib;$(DDK_LIB_PATH)\ntstrsafe.lib;$(DDK_LIB_PATH)\msgpioclxstub.lib - - - false - Level4 - - - Create - precomp.h - - - sha256 - - - 1.0.3 - - - - - %(AdditionalDependencies);$(DDK_LIB_PATH)\ksguid.lib;$(DDK_LIB_PATH)\ntstrsafe.lib;$(DDK_LIB_PATH)\msgpioclxstub.lib - - - false - Level4 - - - Create - precomp.h - - - sha256 - - - 1.0.3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + ARM64 + + + Debug + x64 + + + Release + ARM64 + + + Release + x64 + + + + {A80FE9DD-C140-40F6-A3F4-55A2A55BFAD4} + $(MSBuildProjectName) + 1 + Debug + Win32 + {157FF815-CA85-49A2-B622-5D57EFAB0A13} + $(LatestTargetPlatformVersion) + + + + Windows10 + False + Desktop + KMDF + WindowsKernelModeDriver10.0 + Driver + true + 2 + 3 + 23 + + + Windows10 + False + Desktop + KMDF + WindowsKernelModeDriver10.0 + Driver + true + 2 + 3 + 23 + + + Windows10 + True + Desktop + KMDF + WindowsKernelModeDriver10.0 + Driver + true + 2 + 3 + 23 + + + Windows10 + True + Desktop + KMDF + WindowsKernelModeDriver10.0 + Driver + true + 2 + 3 + 23 + + + + $(IntDir) + + + + + + + + + + + + + + + + * + true + $(InfArch) + true + .\$(IntDir)\if_re.inf + + + + if_re + + + if_re + + + if_re + + + if_re + + + + %(AdditionalDependencies);$(DDK_LIB_PATH)\ksguid.lib;$(DDK_LIB_PATH)\ntstrsafe.lib;$(DDK_LIB_PATH)\msgpioclxstub.lib;$(DDK_LIB_PATH)Ksecdd.lib + + + false + Level4 + + + precomp.h + Use + + + sha256 + + + 1.0.3 + + + + + %(AdditionalDependencies);$(DDK_LIB_PATH)\ksguid.lib;$(DDK_LIB_PATH)\ntstrsafe.lib;$(DDK_LIB_PATH)\msgpioclxstub.lib;$(DDK_LIB_PATH)Ksecdd.lib + + + false + Level4 + + + precomp.h + Use + + + sha256 + + + 1.0.3 + + + + + %(AdditionalDependencies);$(DDK_LIB_PATH)\ksguid.lib;$(DDK_LIB_PATH)\ntstrsafe.lib;$(DDK_LIB_PATH)\msgpioclxstub.lib;$(DDK_LIB_PATH)Ksecdd.lib + + + false + Level4 + + + precomp.h + Use + + + sha256 + + + 1.0.3 + + + + + %(AdditionalDependencies);$(DDK_LIB_PATH)\ksguid.lib;$(DDK_LIB_PATH)\ntstrsafe.lib;$(DDK_LIB_PATH)\msgpioclxstub.lib;$(DDK_LIB_PATH)Ksecdd.lib + + + false + Level4 + + + precomp.h + Use + + + sha256 + + + 1.0.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create + Create + Create + Create + + + + + + \ No newline at end of file diff --git a/if_re_bsd.h b/if_re_bsd.h index 0ec31c1..8e25a5e 100644 --- a/if_re_bsd.h +++ b/if_re_bsd.h @@ -1,6 +1,59 @@ -#pragma once +/* + * Copyright (c) 1997, 1998 + * Bill Paul . All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgment: + * This product includes software developed by Bill Paul. + * 4. Neither the name of the author nor the names of any co-contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/re/if_rereg.h,v 1.14.2.1 2001/07/19 18:33:07 wpaul Exp $ + */ + +#ifndef _WIN32 +#include +#include +#endif // !_WIN32 + +/*#define VERSION(_MainVer,_MinorVer) ((_MainVer)*10+(_MinorVer))*/ +/*#define OS_VER VERSION(5,1)*/ +#if __FreeBSD_version < 500000 +#define VERSION(_MainVer,_MinorVer) ((_MainVer)*100000+(_MinorVer)*10000) +#else +#define VERSION(_MainVer,_MinorVer) ((_MainVer)*100000+(_MinorVer)*1000) +#endif +#define OS_VER __FreeBSD_version + +#ifndef M_DONTWAIT +#define M_DONTWAIT M_NOWAIT +#endif + +#if OS_VER>=VERSION(4,0) +#define RE_USE_NEW_CALLOUT_FUN 1 +#endif -#include "bsd.h" /* * RealTek RTL8110S/SB/SC register offsets @@ -8,11 +61,11 @@ #define RE_TPPOLL 0x0038 /* transmit priority polling */ - /* - * RealTek RTL8110S/SB/SC register contents - */ +/* + * RealTek RTL8110S/SB/SC register contents + */ - /* Transmit Priority Polling --- 0x40 */ +/* Transmit Priority Polling --- 0x40 */ #define RE_HPQ 0x80 /* high priority queue polling */ #define RE_NPQ 0x40 /* normal priority queue polling */ #define RE_FSWInt 0x01 /* Forced Software Interrupt */ @@ -29,7 +82,7 @@ #define RE_IDR3 0x0003 #define RE_IDR4 0x0004 #define RE_IDR5 0x0005 - /* 0006-0007 reserved */ +/* 0006-0007 reserved */ #define RE_MAR0 0x0008 /* Multicast hash table */ #define RE_MAR1 0x0009 #define RE_MAR2 0x000A @@ -53,9 +106,10 @@ #define RE_TXADDR2 0x0028 /* address of TX descriptor 2 */ #define RE_TXADDR3 0x002C /* address of TX descriptor 3 */ -#define RE_FLASH 0x0030 +#define RE_RXADDR 0x0030 /* RX ring start address */ #define RE_COMMAND 0x0037 /* command register */ -#define RE_TXPOLL 0x0038 /* current address of packet read */ +#define RE_CURRXADDR 0x0038 /* current address of packet read */ +#define RE_CURRXBUF 0x003A /* current RX buffer address */ #define RE_IMR 0x003C /* interrupt mask register */ #define RE_ISR 0x003E /* interrupt status register */ #define RE_TXCFG 0x0040 /* transmit config */ @@ -102,8 +156,12 @@ #define RE_EFUSEAR 0x00DC #define RE_CPlusCmd 0x00E0 #define RE_IntrMitigate 0x00E2 + +#ifdef _WIN32 #define RE_RXADDR0 0x00E4 /* address of RX descriptor 0 */ #define RE_RXADDR1 0x00E8 /* address of RX descriptor 1 */ +#endif // _WIN32 + #define RE_MTPS 0x00EC #define RE_CMAC_IBCR0 0x00F8 #define RE_CMAC_IBCR2 0x00F9 @@ -134,8 +192,11 @@ #define ERIAR_ByteEn_shift 12 #define ERIAR_OOB 2 - - +/* IPC2 */ +#define RE_IB2SOC_SET 0x0010 +#define RE_IB2SOC_DATA 0x0014 +#define RE_IB2SOC_CMD 0x0018 +#define RE_IB2SOC_IMR 0x001C /* Direct PHY access registers only available on 8139 */ @@ -173,9 +234,9 @@ #define RE_TXDMA_1024BYTES 0x00000600 #define RE_TXDMA_2048BYTES 0x00000700 - /* - * Transmit descriptor status register bits. - */ +/* + * Transmit descriptor status register bits. + */ #define RE_TXSTAT_LENMASK 0x00001FFF #define RE_TXSTAT_OWN 0x00002000 #define RE_TXSTAT_TX_UNDERRUN 0x00004000 @@ -186,9 +247,9 @@ #define RE_TXSTAT_TXABRT 0x40000000 #define RE_TXSTAT_CARRLOSS 0x80000000 - /* - * Interrupt status register bits. - */ +/* + * Interrupt status register bits. + */ #define RE_ISR_RX_OK 0x0001 #define RE_ISR_RX_ERR 0x0002 #define RE_ISR_TX_OK 0x0004 @@ -201,21 +262,31 @@ #define RE_ISR_PCS_TIMEOUT 0x4000 /* 8129 only */ #define RE_ISR_SYSTEM_ERR 0x8000 - /* - #define RE_INTRS \ - (RE_ISR_TX_OK|RE_ISR_RX_OK|RE_ISR_RX_ERR|RE_ISR_TX_ERR| \ - RE_ISR_RX_OVERRUN|RE_ISR_PKT_UNDERRUN|RE_ISR_FIFO_OFLOW| \ - RE_ISR_PCS_TIMEOUT|RE_ISR_SYSTEM_ERR) - */ +/* +#define RE_INTRS \ + (RE_ISR_TX_OK|RE_ISR_RX_OK|RE_ISR_RX_ERR|RE_ISR_TX_ERR| \ + RE_ISR_RX_OVERRUN|RE_ISR_PKT_UNDERRUN|RE_ISR_FIFO_OFLOW| \ + RE_ISR_PCS_TIMEOUT|RE_ISR_SYSTEM_ERR) +*/ +#define RE_INTRS \ + (RE_ISR_TX_OK|RE_ISR_RX_OK|RE_ISR_RX_ERR|RE_ISR_TX_ERR| \ + RE_ISR_RX_OVERRUN|RE_ISR_PKT_UNDERRUN|RE_ISR_TDU| \ + RE_ISR_PCS_TIMEOUT|RE_ISR_SYSTEM_ERR) + +#ifdef _WIN32 +#undef RE_INTRS +// Remove: RE_ISR_RX_OVERRUN, RE_ISR_TDU +// Add: RE_ISR_LINKCHG #define RE_INTRS \ (RE_ISR_TX_OK|RE_ISR_RX_OK|RE_ISR_RX_ERR|RE_ISR_TX_ERR| \ RE_ISR_PKT_UNDERRUN|RE_ISR_LINKCHG| \ RE_ISR_PCS_TIMEOUT|RE_ISR_SYSTEM_ERR) +#endif // _WIN32 - /* - * Media status register. (8139 only) - */ +/* + * Media status register. (8139 only) + */ #define RE_MEDIASTAT_RXPAUSE 0x01 #define RE_MEDIASTAT_TXPAUSE 0x02 #define RE_MEDIASTAT_LINK 0x04 @@ -223,9 +294,9 @@ #define RE_MEDIASTAT_RXFLOWCTL 0x40 /* duplex mode */ #define RE_MEDIASTAT_TXFLOWCTL 0x80 /* duplex mode */ - /* - * Receive config register. - */ +/* + * Receive config register. + */ #define RE_RXCFG_RX_ALLPHYS 0x00000001 /* accept all nodes */ #define RE_RXCFG_RX_INDIV 0x00000002 /* match filter */ #define RE_RXCFG_RX_MULTI 0x00000004 /* accept all multicast */ @@ -253,10 +324,10 @@ #define RE_RXRESVERED 0x0000E000 - /* - * Bits in RX status header (included with RX'ed packet - * in ring buffer). - */ +/* + * Bits in RX status header (included with RX'ed packet + * in ring buffer). + */ #define RE_RXSTAT_RXOK 0x00000001 #define RE_RXSTAT_ALIGNERR 0x00000002 #define RE_RXSTAT_CRCERR 0x00000004 @@ -269,18 +340,18 @@ #define RE_RXSTAT_LENMASK 0xFFFF0000 #define RE_RXSTAT_UNFINISHED 0xFFF0 /* DMA still in progress */ - /* - * Command register. - */ +/* + * Command register. + */ #define RE_CMD_EMPTY_RXBUF 0x0001 #define RE_CMD_TX_ENB 0x0004 #define RE_CMD_RX_ENB 0x0008 #define RE_CMD_RESET 0x0010 #define RE_CMD_STOP_REQ 0x0080 - /* - * EEPROM control register - */ +/* + * EEPROM control register + */ #define RE_EE_DATAOUT 0x01 /* Data out */ #define RE_EE_DATAIN 0x02 /* Data in */ #define RE_EE_CLK 0x04 /* clock */ @@ -292,7 +363,7 @@ #define RE_EEMODE_PROGRAM 0x80 #define RE_EEMODE_WRITECFG (0x80|0x40) - /* 9346 EEPROM commands */ +/* 9346 EEPROM commands */ #define RE_EECMD_WRITE 0x140 #define RE_EECMD_READ 0x180 #define RE_EECMD_ERASE 0x1c0 @@ -311,9 +382,9 @@ #define RE_MII_DATAOUT 0x04 #define RE_MII_DIR 0x80 /* 0 == input, 1 == output */ - /* - * Config 0 register - */ +/* + * Config 0 register + */ #define RE_CFG0_ROM0 0x01 #define RE_CFG0_ROM1 0x02 #define RE_CFG0_ROM2 0x04 @@ -323,9 +394,9 @@ #define RE_CFG0_PCS 0x40 #define RE_CFG0_SCR 0x80 - /* - * Config 1 register - */ +/* + * Config 1 register + */ #define RE_CFG1_PME 0x01 #define RE_CFG1_IOMAP 0x04 #define RE_CFG1_MEMMAP 0x08 @@ -333,33 +404,33 @@ #define RE_CFG1_LED0 0x40 #define RE_CFG1_LED1 0x80 - /* - * Config 3 register - */ +/* + * Config 3 register + */ #define RL_CFG3_GRANTSEL 0x80 #define RL_CFG3_WOL_MAGIC 0x20 #define RL_CFG3_WOL_LINK 0x10 #define RL_CFG3_JUMBO_EN0 0x04 /* RTL8168C or later. */ #define RL_CFG3_FAST_B2B 0x01 - /* - * Config 4 register - */ +/* + * Config 4 register + */ #define RL_CFG4_LWPTN 0x04 #define RL_CFG4_LWPME 0x10 #define RL_CFG4_JUMBO_EN1 0x02 /* RTL8168C or later. */ #define RL_CFG4_CUSTOMIZED_LED 0x40 - /* - * Config 5 register - */ +/* + * Config 5 register + */ #define RL_CFG5_WOL_BCAST 0x40 #define RL_CFG5_WOL_MCAST 0x20 #define RL_CFG5_WOL_UCAST 0x10 #define RL_CFG5_WOL_LANWAKE 0x02 #define RL_CFG5_PME_STS 0x01 - /* RL_DUMPSTATS_LO register */ +/* RL_DUMPSTATS_LO register */ #define RE_DUMPSTATS_START 0x00000008 /* @@ -379,7 +450,7 @@ #define RL_PHY_STATUS_LINK_STS 0x02 #define RL_PHY_STATUS_FULL_DUP 0x01 - /* OCP GPHY access */ +/* OCP GPHY access */ #define OCPDR_Write 0x80000000 #define OCPDR_Read 0x00000000 #define OCPDR_Reg_Mask 0xFF @@ -414,49 +485,68 @@ * Statistics counter structure */ struct re_stats { - uint64_t re_tx_pkts; - uint64_t re_rx_pkts; - uint64_t re_tx_errs; - uint32_t re_rx_errs; - uint16_t re_missed_pkts; - uint16_t re_rx_framealign_errs; - uint32_t re_tx_onecoll; - uint32_t re_tx_multicolls; - uint64_t re_rx_ucasts; - uint64_t re_rx_bcasts; - uint32_t re_rx_mcasts; - uint16_t re_tx_aborts; - uint16_t re_rx_underruns; - - /* extended */ - uint64_t re_tx_octets; - uint64_t re_rx_octets; - uint64_t re_rx_multicast64; - uint64_t re_tx_unicast64; - uint64_t re_tx_broadcast64; - uint64_t re_tx_multicast64; - uint32_t re_tx_pause_on; - uint32_t re_tx_pause_off; - uint32_t re_tx_pause_all; - uint32_t re_tx_deferred; - uint32_t re_tx_late_collision; - uint32_t re_tx_all_collision; - uint32_t re_tx_aborted32; - uint32_t re_align_errors32; - uint32_t re_rx_frame_too_long; - uint32_t re_rx_runt; - uint32_t re_rx_pause_on; - uint32_t re_rx_pause_off; - uint32_t re_rx_pause_all; - uint32_t re_rx_unknown_opcode; - uint32_t re_rx_mac_error; - uint32_t re_tx_underrun32; - uint32_t re_rx_mac_missed; - uint32_t re_rx_tcam_dropped; - uint32_t re_tdu; - uint32_t re_rdu; + uint64_t re_tx_pkts; + uint64_t re_rx_pkts; + uint64_t re_tx_errs; + uint32_t re_rx_errs; + uint16_t re_missed_pkts; + uint16_t re_rx_framealign_errs; + uint32_t re_tx_onecoll; + uint32_t re_tx_multicolls; + uint64_t re_rx_ucasts; + uint64_t re_rx_bcasts; + uint32_t re_rx_mcasts; + uint16_t re_tx_aborts; + uint16_t re_rx_underruns; + + /* extended */ + uint64_t re_tx_octets; + uint64_t re_rx_octets; + uint64_t re_rx_multicast64; + uint64_t re_tx_unicast64; + uint64_t re_tx_broadcast64; + uint64_t re_tx_multicast64; + uint32_t re_tx_pause_on; + uint32_t re_tx_pause_off; + uint32_t re_tx_pause_all; + uint32_t re_tx_deferred; + uint32_t re_tx_late_collision; + uint32_t re_tx_all_collision; + uint32_t re_tx_aborted32; + uint32_t re_align_errors32; + uint32_t re_rx_frame_too_long; + uint32_t re_rx_runt; + uint32_t re_rx_pause_on; + uint32_t re_rx_pause_off; + uint32_t re_rx_pause_all; + uint32_t re_rx_unknown_opcode; + uint32_t re_rx_mac_error; + uint32_t re_tx_underrun32; + uint32_t re_rx_mac_missed; + uint32_t re_rx_tcam_dropped; + uint32_t re_tdu; + uint32_t re_rdu; }; +/* + * The RealTek doesn't use a fragment-based descriptor mechanism. + * Instead, there are only four register sets, each or which represents + * one 'descriptor.' Basically, each TX descriptor is just a contiguous + * packet buffer (32-bit aligned!) and we place the buffer addresses in + * the registers so the chip knows where they are. + * + * We can sort of kludge together the same kind of buffer management + * used in previous drivers, but we have to do buffer copies almost all + * the time, so it doesn't really buy us much. + * + * For reception, there's just one large buffer where the chip stores + * all received packets. + */ +#ifndef __NO_STRICT_ALIGNMENT +#define RE_FIXUP_RX 1 +#endif + + #define RE_RX_BUF_SZ RE_RXBUF_64 #define RE_RXBUFLEN (1 << ((RE_RX_BUF_SZ >> 11) + 13)) #define RE_TX_LIST_CNT 4 /* C mode Tx buffer number */ @@ -493,8 +583,22 @@ struct re_stats { #define Jumbo_Frame_7k ((7 * 1024) - ETHER_VLAN_ENCAP_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) #define Jumbo_Frame_8k ((8 * 1024) - ETHER_VLAN_ENCAP_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) #define Jumbo_Frame_9k ((9 * 1024) - ETHER_VLAN_ENCAP_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) +struct re_chain_data { + u_int32_t cur_rx; + caddr_t re_rx_buf; + caddr_t re_rx_buf_ptr; + + struct mbuf *re_tx_chain[RE_TX_LIST_CNT]; + u_int32_t last_tx; /* Previous Tx OK */ + u_int32_t cur_tx; /* Next to TX */ +}; #define HW_SUPPORT_MAC_MCU(_M) ((_M)->HwSuppMacMcuVer > 0) +#define HW_SUPPORT_OCP_CHANNEL(_M) ((_M)->HwSuppOcpChannelVer > 0) + +//+++ From FreeBSD 9.0 +++ + +#define RL_MSI_MESSAGES 1 #define RL_ADDR_LO(y) ((uint64_t) (y) & 0xFFFFFFFF) #define RL_ADDR_HI(y) ((uint64_t) (y) >> 32) @@ -519,7 +623,7 @@ struct re_stats { #define RL_TDESC_VLANCTL_TAG 0x00020000 /* Insert VLAN tag */ #define RL_TDESC_VLANCTL_DATA 0x0000FFFF /* TAG data */ - /* RTL8168C/RTL8168CP/RTL8111C/RTL8111CP */ +/* RTL8168C/RTL8168CP/RTL8111C/RTL8111CP */ #define RL_TDESC_CMD_UDPCSUMV2 0x80000000 #define RL_TDESC_CMD_TCPCSUMV2 0x40000000 #define RL_TDESC_CMD_IPCSUMV2 0x20000000 @@ -566,9 +670,9 @@ struct re_stats { RL_RDESC_STAT_CRCERR) #define RL_RDESC_VLANCTL_TAG 0x00010000 /* VLAN tag available - (rl_vlandata valid)*/ + (rl_vlandata valid)*/ #define RL_RDESC_VLANCTL_DATA 0x0000FFFF /* TAG data */ - /* RTL8168C/RTL8168CP/RTL8111C/RTL8111CP */ +/* RTL8168C/RTL8168CP/RTL8111C/RTL8111CP */ #define RL_RDESC_RES 0x00200000 #define RL_RDESC_IPV6 0x80000000 #define RL_RDESC_IPV4 0x40000000 @@ -582,57 +686,136 @@ struct re_stats { #define RL_UDPPKT(x) (((x) & RL_RDESC_STAT_PROTOID) == \ RL_PROTOID_UDPIP) +//--- From FreeBSD 9.0--- + + union RxDesc { - u_int32_t ul[4]; - struct { - u_int32_t Frame_Length : 14; - u_int32_t TCPF : 1; - u_int32_t UDPF : 1; - u_int32_t IPF : 1; - u_int32_t TCPT : 1; - u_int32_t UDPT : 1; - u_int32_t CRC : 1; - u_int32_t RUNT : 1; - u_int32_t RES : 1; - u_int32_t RWT : 1; - u_int32_t RESV : 2; - u_int32_t BAR : 1; - u_int32_t PAM : 1; - u_int32_t MAR : 1; - u_int32_t LS : 1; - u_int32_t FS : 1; - u_int32_t EOR : 1; - u_int32_t OWN : 1; - - u_int32_t VLAN_TAG : 16; - u_int32_t TAVA : 1; - u_int32_t RESV1 : 15; - u_int64_t RxBuff; - } so0; /* symbol owner=0 */ + u_int32_t ul[4]; + struct { +#if defined(_LITTLE_ENDIAN) + u_int32_t Frame_Length:14; + u_int32_t TCPF:1; + u_int32_t UDPF:1; + u_int32_t IPF:1; + u_int32_t TCPT:1; + u_int32_t UDPT:1; + u_int32_t CRC:1; + u_int32_t RUNT:1; + u_int32_t RES:1; + u_int32_t RWT:1; + u_int32_t RESV:2; + u_int32_t BAR:1; + u_int32_t PAM:1; + u_int32_t MAR:1; + u_int32_t LS:1; + u_int32_t FS:1; + u_int32_t EOR:1; + u_int32_t OWN:1; + + u_int32_t VLAN_TAG:16; + u_int32_t TAVA:1; + u_int32_t RESV1:15; +#elif defined(_BIG_ENDIAN) + u_int32_t OWN:1; + u_int32_t EOR:1; + u_int32_t FS:1; + u_int32_t LS:1; + u_int32_t MAR:1; + u_int32_t PAM:1; + u_int32_t BAR:1; + u_int32_t RESV:2; + u_int32_t RWT:1; + u_int32_t RES:1; + u_int32_t RUNT:1; + u_int32_t CRC:1; + u_int32_t UDPT:1; + u_int32_t TCPT:1; + u_int32_t IPF:1; + u_int32_t UDPF:1; + u_int32_t TCPF:1; + u_int32_t Frame_Length:14; + + u_int32_t RESV1:15; + u_int32_t TAVA:1; + u_int32_t VLAN_TAG:16; +#else +#error "what endian is this machine?" +#endif + u_int64_t RxBuff; + } so0; /* symbol owner=0 */ }; union TxDesc { - u_int32_t ul[4]; - struct { - u_int32_t Frame_Length : 16; - u_int32_t TCPCS : 1; - u_int32_t UDPCS : 1; - u_int32_t IPCS : 1; - u_int32_t SCRC : 1; - u_int32_t RESV : 6; - u_int32_t TDMA : 1; - u_int32_t LGSEN : 1; - u_int32_t LS : 1; - u_int32_t FS : 1; - u_int32_t EOR : 1; - u_int32_t OWN : 1; - - u_int32_t VLAN_TAG : 16; - u_int32_t TAGC0 : 1; - u_int32_t TAGC1 : 1; - u_int32_t RESV1 : 14; - u_int64_t TxBuff; - } so1; /* symbol owner=1 */ + u_int32_t ul[4]; + struct { +#if defined(_LITTLE_ENDIAN) + u_int32_t Frame_Length:16; + u_int32_t TCPCS:1; + u_int32_t UDPCS:1; + u_int32_t IPCS:1; + u_int32_t SCRC:1; + u_int32_t RESV:6; + u_int32_t TDMA:1; + u_int32_t LGSEN:1; + u_int32_t LS:1; + u_int32_t FS:1; + u_int32_t EOR:1; + u_int32_t OWN:1; + + u_int32_t VLAN_TAG:16; + u_int32_t TAGC0:1; + u_int32_t TAGC1:1; + u_int32_t RESV1:14; +#elif defined(_BIG_ENDIAN) + u_int32_t OWN:1; + u_int32_t EOR:1; + u_int32_t FS:1; + u_int32_t LS:1; + u_int32_t LGSEN:1; + u_int32_t TDMA:1; + u_int32_t RESV:6; + u_int32_t SCRC:1; + u_int32_t IPCS:1; + u_int32_t UDPCS:1; + u_int32_t TCPCS:1; + u_int32_t Frame_Length:16; + + u_int32_t RESV1:14; + u_int32_t TAGC1:1; + u_int32_t TAGC0:1; + u_int32_t VLAN_TAG:16; +#else +#error "what endian is this machine?" +#endif + u_int64_t TxBuff; + } so1; /* symbol owner=1 */ +}; + +struct re_descriptor { + u_int32_t rx_cur_index; + union RxDesc *rx_desc; /* 8 bits alignment */ + struct mbuf *rx_buf[RE_RX_BUF_NUM]; + + u_int32_t tx_cur_index; + u_int32_t tx_last_index; + union TxDesc *tx_desc; /* 8 bits alignment */ + struct mbuf *tx_buf[RE_TX_BUF_NUM]; + bus_dma_tag_t rx_desc_tag; + bus_dmamap_t rx_desc_dmamap; + bus_dma_tag_t re_rx_mtag; /* mbuf RX mapping tag */ + bus_dmamap_t re_rx_dmamap[RE_RX_BUF_NUM]; + + bus_dma_tag_t tx_desc_tag; + bus_dmamap_t tx_desc_dmamap; + bus_dma_tag_t re_tx_mtag; /* mbuf TX mapping tag */ + bus_dmamap_t re_tx_dmamap[RE_TX_BUF_NUM]; +}; + +struct re_tally_counter { + bus_dma_tag_t re_stag; /* stats mapping tag */ + bus_dmamap_t re_smap; /* stats map */ + struct re_stats *re_stats; + bus_addr_t re_stats_addr; }; #define RE_INC(x) (x = (x + 1) % RE_TX_LIST_CNT) @@ -643,6 +826,21 @@ union TxDesc { #define RE_LAST_TXSTAT(x) ((x->re_cdata.last_tx * 4) + RE_TXSTAT0) #define RE_LAST_TXMBUF(x) (x->re_cdata.re_tx_chain[x->re_cdata.last_tx]) +struct re_type { + u_int16_t re_vid; + u_int16_t re_did; + char *re_name; +}; + +struct re_mii_frame { + u_int8_t mii_stdelim; + u_int8_t mii_opcode; + u_int8_t mii_phyaddr; + u_int8_t mii_regaddr; + u_int8_t mii_turnaround; + u_int16_t mii_data; +}; + /* * MII constants */ @@ -663,7 +861,10 @@ union TxDesc { #define RL_FLAG_PCIE 0x40000000 #define RL_FLAG_MAGIC_PACKET_V3 0x80000000 +#ifdef _WIN32 #define RL_CRC (1 << 19) +#endif // _WIN32 + #define RL_PID0 (1<<17) #define RL_PID1 (1<<18) #define RL_ProtoUDP (RL_PID1) @@ -688,190 +889,374 @@ union TxDesc { #define RL_RxChkSum (1<<5) -enum { - EFUSE_NOT_SUPPORT = 0, - EFUSE_SUPPORT_V1, - EFUSE_SUPPORT_V2, - EFUSE_SUPPORT_V3, - EFUSE_SUPPORT_V4, +enum { + EFUSE_NOT_SUPPORT = 0, + EFUSE_SUPPORT_V1, + EFUSE_SUPPORT_V2, + EFUSE_SUPPORT_V3, + EFUSE_SUPPORT_V4, }; enum { - MACFG_3 = 3, - MACFG_4, - MACFG_5, - MACFG_6, - - MACFG_11 = 11, - MACFG_12, - MACFG_13, - MACFG_14, - MACFG_15, - MACFG_16, - MACFG_17, - MACFG_18, - MACFG_19, - - MACFG_21 = 21, - MACFG_22, - MACFG_23, - MACFG_24, - MACFG_25, - MACFG_26, - MACFG_27, - MACFG_28, - - MACFG_31 = 31, - MACFG_32, - MACFG_33, - - MACFG_36 = 36, - MACFG_37, - MACFG_38, - MACFG_39, - - MACFG_41 = 41, - MACFG_42, - MACFG_43, - - MACFG_50 = 50, - MACFG_51, - MACFG_52, - MACFG_53, - MACFG_54, - MACFG_55, - MACFG_56, - MACFG_57, - MACFG_58, - MACFG_59, - MACFG_60, - MACFG_61, - MACFG_62, - MACFG_63, - MACFG_64, - MACFG_65, - MACFG_66, - MACFG_67, - MACFG_68, - MACFG_69, - MACFG_70, - MACFG_71, - MACFG_72, - MACFG_73, - MACFG_74, - MACFG_75, - MACFG_76, - - MACFG_80 = 80, - MACFG_81, - MACFG_82, - MACFG_83, - - MACFG_90 = 90, - MACFG_91, - MACFG_92, - - MACFG_FF = 0xFF + MACFG_3 = 3, + MACFG_4, + MACFG_5, + MACFG_6, + + MACFG_11 = 11, + MACFG_12, + MACFG_13, + MACFG_14, + MACFG_15, + MACFG_16, + MACFG_17, + MACFG_18, + MACFG_19, + + MACFG_21 = 21, + MACFG_22, + MACFG_23, + MACFG_24, + MACFG_25, + MACFG_26, + MACFG_27, + MACFG_28, + + MACFG_31 = 31, + MACFG_32, + MACFG_33, + + MACFG_36 = 36, + MACFG_37, + MACFG_38, + MACFG_39, + + MACFG_41 = 41, + MACFG_42, + MACFG_43, + + MACFG_50 = 50, + MACFG_51, + MACFG_52, + MACFG_53, + MACFG_54, + MACFG_55, + MACFG_56, + MACFG_57, + MACFG_58, + MACFG_59, + MACFG_60, + MACFG_61, + MACFG_62, + MACFG_63, + MACFG_64, + MACFG_65, + MACFG_66, + MACFG_67, + MACFG_68, + MACFG_69, + MACFG_70, + MACFG_71, + MACFG_72, + MACFG_73, + MACFG_74, + MACFG_75, + MACFG_76, + + MACFG_80 = 80, + MACFG_81, + MACFG_82, + MACFG_83, + MACFG_84, + MACFG_85, + MACFG_86, + MACFG_87, + + MACFG_90 = 90, + MACFG_91, + MACFG_92, + + MACFG_FF = 0xFF }; +//#define MAC_STYLE_1 1 /* RTL8110S/SB/SC, RTL8111B and RTL8101E */ +//#define MAC_STYLE_2 2 /* RTL8111C/CP/D and RTL8102E */ + struct re_softc { - struct _RT_ADAPTER* dev; - /* Variable for 8169 family */ - u_int8_t re_8169_MacVersion; - u_int8_t re_8169_PhyVersion; +#ifdef _WIN32 + struct _RT_ADAPTER* dev; + struct ifnet if_net; + u_int8_t eee_enable; +#endif // _WIN32 - u_int8_t re_type; - u_int16_t re_device_id; - int max_jumbo_frame_size; - int re_rx_mbuf_sz; - int re_if_flags; - int re_tx_cstag; - int re_rx_cstag; +#ifndef _WIN32 +#if OS_VER=VERSION(7,0) + struct task re_inttask; + struct task re_inttask_poll; +#endif + u_int16_t cur_page; - u_int8_t re_hw_supp_now_is_oob_ver; + u_int16_t phy_reg_anlpar; - u_int8_t hw_hw_supp_serdes_phy_ver; +#ifndef _WIN32 + u_int8_t re_hw_enable_msi_msix; - u_int8_t HwSuppDashVer; - u_int8_t re_dash; + u_int8_t re_coalesce_tx_pkt; - u_int8_t HwPkgDet; + u_int8_t link_state; +#endif // !_WIN32 - u_int32_t HwFiberModeVer; - u_int32_t HwFiberStat; + u_int8_t prohibit_access_reg; - u_int8_t HwSuppExtendTallyCounterVer; + u_int8_t re_hw_supp_now_is_oob_ver; - u_int8_t HwSuppMacMcuVer; - u_int16_t MacMcuPageSize; + u_int8_t hw_hw_supp_serdes_phy_ver; + u_int8_t HwSuppOcpChannelVer; - //Our Additions - u_int16_t mtu; - u_int8_t eee_enable; + u_int8_t HwSuppDashVer; + u_int8_t re_dash; - int if_capenable; - int if_hwassist; + u_int8_t AllowAccessDashOcp; + u_int32_t re_dash_fw_ver; + +#ifndef _WIN32 + bus_space_handle_t re_mapped_cmac_handle; /* bus space tag */ + bus_space_tag_t re_mapped_cmac_tag; /* bus space tag */ + bus_space_handle_t re_cmac_handle; /* bus space handle */ + bus_space_tag_t re_cmac_tag; /* bus space tag */ + bus_space_handle_t re_msix_tbl_handle; /* bus space handle */ + bus_space_tag_t re_msix_tbl_tag; /* bus space tag */ +#endif // !_WIN32 + + u_int8_t HwPkgDet; + + u_int32_t HwFiberModeVer; + u_int32_t HwFiberStat; + + u_int8_t HwSuppExtendTallyCounterVer; + + u_int8_t HwSuppMacMcuVer; + u_int16_t MacMcuPageSize; + +#ifndef _WIN32 + struct lro_ctrl re_lro; + + int (*ifmedia_upd)(struct ifnet *); + void (*ifmedia_sts)(struct ifnet *, struct ifmediareq *); +#if OS_VER < VERSION(7,0) + void (*intr)(void *); +#else + int (*intr)(void *); +#endif //OS_VER < VERSION(7,0) + void (*int_task)(void *, int); + void (*int_task_poll)(void *, int); + void (*hw_start_unlock)(struct re_softc *); + struct taskqueue *re_tq; +#endif // !_WIN32 }; enum bits { - BIT_0 = (1 << 0), - BIT_1 = (1 << 1), - BIT_2 = (1 << 2), - BIT_3 = (1 << 3), - BIT_4 = (1 << 4), - BIT_5 = (1 << 5), - BIT_6 = (1 << 6), - BIT_7 = (1 << 7), - BIT_8 = (1 << 8), - BIT_9 = (1 << 9), - BIT_10 = (1 << 10), - BIT_11 = (1 << 11), - BIT_12 = (1 << 12), - BIT_13 = (1 << 13), - BIT_14 = (1 << 14), - BIT_15 = (1 << 15), - BIT_16 = (1 << 16), - BIT_17 = (1 << 17), - BIT_18 = (1 << 18), - BIT_19 = (1 << 19), - BIT_20 = (1 << 20), - BIT_21 = (1 << 21), - BIT_22 = (1 << 22), - BIT_23 = (1 << 23), - BIT_24 = (1 << 24), - BIT_25 = (1 << 25), - BIT_26 = (1 << 26), - BIT_27 = (1 << 27), - BIT_28 = (1 << 28), - BIT_29 = (1 << 29), - BIT_30 = (1 << 30), - BIT_31 = (1 << 31) + BIT_0 = (1 << 0), + BIT_1 = (1 << 1), + BIT_2 = (1 << 2), + BIT_3 = (1 << 3), + BIT_4 = (1 << 4), + BIT_5 = (1 << 5), + BIT_6 = (1 << 6), + BIT_7 = (1 << 7), + BIT_8 = (1 << 8), + BIT_9 = (1 << 9), + BIT_10 = (1 << 10), + BIT_11 = (1 << 11), + BIT_12 = (1 << 12), + BIT_13 = (1 << 13), + BIT_14 = (1 << 14), + BIT_15 = (1 << 15), + BIT_16 = (1 << 16), + BIT_17 = (1 << 17), + BIT_18 = (1 << 18), + BIT_19 = (1 << 19), + BIT_20 = (1 << 20), + BIT_21 = (1 << 21), + BIT_22 = (1 << 22), + BIT_23 = (1 << 23), + BIT_24 = (1 << 24), + BIT_25 = (1 << 25), + BIT_26 = (1 << 26), + BIT_27 = (1 << 27), + BIT_28 = (1 << 28), + BIT_29 = (1 << 29), + BIT_30 = (1 << 30), + BIT_31 = (1 << 31) }; +#ifdef _WIN32 +#define RE_LOCK(_sc) WdfSpinLockAcquire(_sc->dev->Lock) +#define RE_UNLOCK(_sc) WdfSpinLockRelease(_sc->dev->Lock) +#define RE_LOCK_ASSERT(_sc) +#else // _WIN32 +#define RE_LOCK(_sc) mtx_lock(&(_sc)->mtx) +#define RE_UNLOCK(_sc) mtx_unlock(&(_sc)->mtx) +#define RE_LOCK_INIT(_sc,_name) mtx_init(&(_sc)->mtx,_name,MTX_NETWORK_LOCK,MTX_DEF) +#define RE_LOCK_DESTROY(_sc) mtx_destroy(&(_sc)->mtx) +#define RE_LOCK_ASSERT(_sc) mtx_assert(&(_sc)->mtx,MA_OWNED) +#endif // _WIN32 + +/* + * register space access macros + */ +#if OS_VER>VERSION(5,9) +#define CSR_WRITE_STREAM_4(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_stream_4(sc->re_btag, sc->re_bhandle, reg, val)) +#define CSR_WRITE_STREAM_2(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_stream_2(sc->re_btag, sc->re_bhandle, reg, val)) +#endif +#define CSR_WRITE_4(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_4(sc->re_btag, sc->re_bhandle, reg, val)) +#define CSR_WRITE_2(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_2(sc->re_btag, sc->re_bhandle, reg, val)) +#define CSR_WRITE_1(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_1(sc->re_btag, sc->re_bhandle, reg, val)) + +#ifdef _WIN32 +#undef CSR_WRITE_4 +#undef CSR_WRITE_2 +#undef CSR_WRITE_1 +#define CSR_WRITE_4(sc, reg, val) ((sc->prohibit_access_reg)?__nop():WRITE_REGISTER_NOFENCE_ULONG((PULONG)MmioAddr(sc, reg), val)) +#define CSR_WRITE_2(sc, reg, val) ((sc->prohibit_access_reg)?__nop():WRITE_REGISTER_NOFENCE_USHORT((PUSHORT)MmioAddr(sc, reg), val)) +#define CSR_WRITE_1(sc, reg, val) ((sc->prohibit_access_reg)?__nop():WRITE_REGISTER_NOFENCE_UCHAR((PUCHAR)MmioAddr(sc, reg), val)) +#endif // _WIN32 + +#define CSR_READ_4(sc, reg) ((sc->prohibit_access_reg)?0xFFFFFFFF:bus_space_read_4(sc->re_btag, sc->re_bhandle, reg)) +#define CSR_READ_2(sc, reg) ((sc->prohibit_access_reg)?0xFFFF:bus_space_read_2(sc->re_btag, sc->re_bhandle, reg)) +#define CSR_READ_1(sc, reg) ((sc->prohibit_access_reg)?0xFF:bus_space_read_1(sc->re_btag, sc->re_bhandle, reg)) + +#ifdef _WIN32 +#undef CSR_READ_4 +#undef CSR_READ_2 +#undef CSR_READ_1 +#define CSR_READ_4(sc, reg) ((sc->prohibit_access_reg)?0xFFFFFFFF:READ_REGISTER_NOFENCE_ULONG((PULONG)MmioAddr(sc, reg))) +#define CSR_READ_2(sc, reg) ((sc->prohibit_access_reg)?0xFFFF:READ_REGISTER_NOFENCE_USHORT((PUSHORT)MmioAddr(sc, reg))) +#define CSR_READ_1(sc, reg) ((sc->prohibit_access_reg)?0xFF:READ_REGISTER_NOFENCE_UCHAR((PUCHAR)MmioAddr(sc, reg))) +#endif // _WIN32 + +/* cmac write/read MMIO register */ +#define RE_CMAC_WRITE_1(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_1(sc->re_cmac_tag, sc->re_cmac_handle, reg, val)) +#define RE_CMAC_WRITE_2(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_2(sc->re_cmac_tag, sc->re_cmac_handle, reg, val)) +#define RE_CMAC_WRITE_4(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_4(sc->re_cmac_tag, sc->re_cmac_handle, reg, val)) +#define RE_CMAC_READ_1(sc, reg) ((sc->prohibit_access_reg)?0xFF:bus_space_read_1(sc->re_cmac_tag, sc->re_cmac_handle, reg)) +#define RE_CMAC_READ_2(sc, reg) ((sc->prohibit_access_reg)?0xFFFF:bus_space_read_2(sc->re_cmac_tag, sc->re_cmac_handle, reg)) +#define RE_CMAC_READ_4(sc, reg) ((sc->prohibit_access_reg)?0xFFFFFFFF:bus_space_read_4(sc->re_cmac_tag, sc->re_cmac_handle, reg)) + +/* msix table write/read MMIO register */ +#define RE_MSIX_TBL_WRITE_4(sc, reg, val) ((sc->re_res_pba == NULL)?:bus_space_write_4(sc->re_msix_tbl_tag, sc->re_msix_tbl_handle, reg, val)) +#define RE_MSIX_TBL_READ_4(sc, reg) ((sc->re_res_pba == NULL)?0xFFFFFFFF:bus_space_read_4(sc->re_msix_tbl_tag, sc->re_msix_tbl_handle, reg)) + +#ifdef _WIN32 +#undef RE_CMAC_WRITE_1 +#undef RE_CMAC_WRITE_2 +#undef RE_CMAC_WRITE_4 +#undef RE_CMAC_READ_1 +#undef RE_CMAC_READ_2 +#undef RE_CMAC_READ_4 +#define RE_CMAC_WRITE_1(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_1(sc->re_cmac_tag, sc->re_cmac_handle, reg, val)) +#define RE_CMAC_WRITE_2(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_2(sc->re_cmac_tag, sc->re_cmac_handle, reg, val)) +#define RE_CMAC_WRITE_4(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_4(sc->re_cmac_tag, sc->re_cmac_handle, reg, val)) +#define RE_CMAC_READ_1(sc, reg) ((sc->prohibit_access_reg)?0xFF:bus_space_read_1(sc->re_cmac_tag, sc->re_cmac_handle, reg)) +#define RE_CMAC_READ_2(sc, reg) ((sc->prohibit_access_reg)?0xFFFF:bus_space_read_2(sc->re_cmac_tag, sc->re_cmac_handle, reg)) +#define RE_CMAC_READ_4(sc, reg) (sc->prohibit_access_reg)?0xFFFFFFFF:bus_space_read_4(sc->re_cmac_tag, sc->re_cmac_handle, reg)) +#endif // _WIN32 + #define RE_TIMEOUT 1000 /* @@ -881,9 +1266,9 @@ enum bits { */ #define RT_VENDORID 0x10EC - /* - * RealTek chip device IDs. - */ +/* + * RealTek chip device IDs. + */ #define RT_DEVICEID_8129 0x8129 #define RT_DEVICEID_8139 0x8139 #define RT_DEVICEID_8169 0x8169 /* For RTL8169 */ @@ -896,50 +1281,50 @@ enum bits { #define RT_DEVICEID_3000 0x3000 /* For Killer E3000/E3100 with RTL8125 */ #define RT_DEVICEID_8126 0x8126 /* For RTL8126 */ - /* - * Accton PCI vendor ID - */ +/* + * Accton PCI vendor ID + */ #define ACCTON_VENDORID 0x1113 - /* - * Accton MPX 5030/5038 device ID. - */ +/* + * Accton MPX 5030/5038 device ID. + */ #define ACCTON_DEVICEID_5030 0x1211 - /* - * Delta Electronics Vendor ID. - */ +/* + * Delta Electronics Vendor ID. + */ #define DELTA_VENDORID 0x1500 - /* - * Delta device IDs. - */ +/* + * Delta device IDs. + */ #define DELTA_DEVICEID_8139 0x1360 - /* - * Addtron vendor ID. - */ +/* + * Addtron vendor ID. + */ #define ADDTRON_VENDORID 0x4033 - /* - * Addtron device IDs. - */ +/* + * Addtron device IDs. + */ #define ADDTRON_DEVICEID_8139 0x1360 - /* - * D-Link vendor ID. - */ +/* + * D-Link vendor ID. + */ #define DLINK_VENDORID 0x1186 - /* - * D-Link DFE-530TX+ device ID - */ +/* + * D-Link DFE-530TX+ device ID + */ #define DLINK_DEVICEID_530TXPLUS 0x1300 - /* - * PCI low memory base and low I/O base register, and - * other PCI registers. - */ +/* + * PCI low memory base and low I/O base register, and + * other PCI registers. + */ #define RE_PCI_VENDOR_ID 0x00 #define RE_PCI_DEVICE_ID 0x02 @@ -982,13 +1367,14 @@ enum bits { #define RTL8125_INT_CFG0_TIMEOUT0_BYPASS (0x0002) #define RTL8125_INT_CFG0_MITIGATION_BYPASS (0x0004) #define RTL8126_INT_CFG0_RDU_BYPASS (0x0010) +#define RTL8125_INT_CFG0_MSIX_ENTRY_NUM_MODE (0x0020) - //Ram Code Version +//Ram Code Version #define NIC_RAMCODE_VERSION_8168E (0x0057) #define NIC_RAMCODE_VERSION_8168EVL (0x0055) #define NIC_RAMCODE_VERSION_8168F (0x0052) #define NIC_RAMCODE_VERSION_8411 (0x0044) -#define NIC_RAMCODE_VERSION_8168G (0x0042) +#define NIC_RAMCODE_VERSION_8168G (0x0048) #define NIC_RAMCODE_VERSION_8168GU (0x0001) #define NIC_RAMCODE_VERSION_8168EP (0x0019) #define NIC_RAMCODE_VERSION_8411B (0x0012) @@ -999,10 +1385,26 @@ enum bits { #define NIC_RAMCODE_VERSION_8125A_REV_A (0x0B11) #define NIC_RAMCODE_VERSION_8125A_REV_B (0x0B33) #define NIC_RAMCODE_VERSION_8125B_REV_A (0x0B17) -#define NIC_RAMCODE_VERSION_8125B_REV_B (0x0B74) +#define NIC_RAMCODE_VERSION_8125B_REV_B (0x0B99) +#define NIC_RAMCODE_VERSION_8125BP_REV_A (0x0013) +#define NIC_RAMCODE_VERSION_8125BP_REV_B (0x0001) #define NIC_RAMCODE_VERSION_8126A_REV_A (0x0023) #define NIC_RAMCODE_VERSION_8126A_REV_B (0x0033) -#define NIC_RAMCODE_VERSION_8126A_REV_C (0x0001) +#define NIC_RAMCODE_VERSION_8126A_REV_C (0x0051) +#define NIC_RAMCODE_VERSION_8125D_REV_A (0x0016) +#define NIC_RAMCODE_VERSION_8125D_REV_B (0x0001) + +#ifdef __alpha__ +#undef vtophys +#define vtophys(va) alpha_XXX_dmamap((vm_offset_t)va) +#endif + +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif #define PHYAR_Flag 0x80000000 #define RE_CPlusMode 0x20 /* In Revision ID */ @@ -1013,10 +1415,86 @@ enum bits { #define RE_REGS_SIZE (256) +#define OCP_REG_FIRMWARE_MAJOR_VERSION (0x120) #define RTL8168FP_OOBMAC_BASE 0xBAF70000 -#define HW_DASH_SUPPORT_DASH(_M) ((_M)->HwSuppDashVer > 0 ) -#define HW_DASH_SUPPORT_TYPE_1(_M) ((_M)->HwSuppDashVer == 1 ) -#define HW_DASH_SUPPORT_TYPE_2(_M) ((_M)->HwSuppDashVer == 2 ) -#define HW_DASH_SUPPORT_TYPE_3(_M) ((_M)->HwSuppDashVer == 3 ) +#define HW_DASH_SUPPORT_DASH(_M) ((_M)->HwSuppDashVer > 0) +#define HW_DASH_SUPPORT_TYPE_1(_M) ((_M)->HwSuppDashVer == 1) +#define HW_DASH_SUPPORT_TYPE_2(_M) ((_M)->HwSuppDashVer == 2) +#define HW_DASH_SUPPORT_TYPE_3(_M) ((_M)->HwSuppDashVer == 3) +#define HW_DASH_SUPPORT_TYPE_4(_M) ((_M)->HwSuppDashVer == 4) +#define HW_DASH_SUPPORT_CMAC(_M) (HW_DASH_SUPPORT_TYPE_2(_M) || HW_DASH_SUPPORT_TYPE_3(_M)) +#define HW_DASH_SUPPORT_IPC2(_M) (HW_DASH_SUPPORT_TYPE_4(_M)) +#define HW_DASH_SUPPORT_GET_FIRMWARE_VERSION(_M) (HW_DASH_SUPPORT_TYPE_2(_M) || \ + HW_DASH_SUPPORT_TYPE_3(_M) || \ + HW_DASH_SUPPORT_TYPE_4(_M)) + +#define HW_SUPP_SERDES_PHY(_M) ((_M)->hw_hw_supp_serdes_phy_ver > 0) +#define HW_HAS_WRITE_PHY_MCU_RAM_CODE(_M) ((_M)->re_hw_ram_code_ver == (_M)->re_sw_ram_code_ver) + +/*#define RE_DBG*/ + +#ifdef RE_DBG +#define DBGPRINT(_unit, _msg) printf ("re%d: %s\n", _unit,_msg) +#define DBGPRINT1(_unit, _msg, _para1) \ + { \ + char buf[100]; \ + sprintf(buf,_msg,_para1); \ + printf ("re%d: %s\n", _unit,buf); \ + } +#else +#define DBGPRINT(_unit, _msg) +#define DBGPRINT1(_unit, _msg, _para1) +#endif + +#ifdef _WIN32 +#undef DBGPRINT +#undef DBGPRINT1 +#if DEBUG +#define DBGPRINT(_unit, _msg) DbgPrint(_msg "\n") +#define DBGPRINT1(_unit, _msg, _para1) DbgPrint(_msg "\n", _para1) +#else // DEBUG +#define DBGPRINT(_unit, _msg) __nop() +#define DBGPRINT1(_unit, _msg, _para1) __nop() +#endif // DEBUG +#endif // _WIN32 + +#if OS_VERarpcom.ac_if +#define if_drv_flags if_flags +#define IFF_DRV_RUNNING IFF_RUNNING +#define IFF_DRV_OACTIVE IFF_OACTIVE +#else +#define RE_GET_IFNET(SC) SC->re_ifp +#endif -#define HW_SUPP_SERDES_PHY(_M) ((_M)->hw_hw_supp_serdes_phy_ver > 0) \ No newline at end of file +#ifdef _WIN32 +#undef RE_GET_IFNET +#define RE_GET_IFNET(SC) &SC->if_net +#endif // _WIN32 + +#if OS_VER>=VERSION(10,0) +#define IF_ADDR_LOCK IF_ADDR_WLOCK +#define IF_ADDR_UNLOCK IF_ADDR_WUNLOCK +#endif + +#if OS_VER>=VERSION(7,4) +#if OS_VER>=VERSION(9,2) +#define RE_PCIEM_LINK_CAP_ASPM PCIEM_LINK_CAP_ASPM +#define RE_PCIER_LINK_CTL PCIER_LINK_CTL +#define RE_PCIER_LINK_CAP PCIER_LINK_CAP +#else //OS_VER>=VERSION(9,2) +#define RE_PCIEM_LINK_CAP_ASPM PCIM_LINK_CAP_ASPM +#define RE_PCIER_LINK_CTL PCIR_EXPRESS_LINK_CTL +#define RE_PCIER_LINK_CAP PCIR_EXPRESS_LINK_CAP +#endif +#endif //OS_VER>=VERSION(7,4) + +#ifndef IFM_2500_X +#define IFM_2500_X IFM_X(63) +#endif + +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(_a) (sizeof((_a)) / sizeof((_a)[0])) +#endif diff --git a/import/if_re.c b/import/if_re.c new file mode 100644 index 0000000..d734302 --- /dev/null +++ b/import/if_re.c @@ -0,0 +1,38584 @@ +/* + * Copyright (c) 1997, 1998 + * Bill Paul . All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Bill Paul. + * 4. Neither the name of the author nor the names of any co-contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/if_rl.c,v 1.38.2.7 2001/07/19 18:33:07 wpaul Exp $ + */ + +/* + * RealTek 8129/8139 PCI NIC driver + * + * Written by Bill Paul + * Electrical Engineering Department + * Columbia University, New York City + */ + +#include + +#ifdef ENABLE_FIBER_SUPPORT +#define FIBER_SUFFIX "-FIBER" +#else +#define FIBER_SUFFIX "" +#endif +#define RE_VERSION "1.100.00" FIBER_SUFFIX + +__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v " RE_VERSION __DATE__ " " __TIME__ " wpaul Exp $"); + +/* +* This driver also support Realtek RTL8110/RTL8169, RTL8111/RTL8168, RTL8125, RTL8126, and RTL8136/RTL810x. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include /* for vtophys */ +#include /* for vtophys */ +#include /* for DELAY */ + +#include +#include +#include +#include +#include + +#include +#include "if_rereg.h" +#ifdef ENABLE_FIBER_SUPPORT +#include +#endif //ENABLE_FIBER_SUPPORT + +#if OS_VER < VERSION(5,3) +#include +#include +#include +#include +#else +#include +#include +#include +#endif + +#if OS_VER > VERSION(5,9) +#include +#include +#include +#include +#endif + +#include +#include +#include + +#include + +#include "opt_inet.h" +#include "opt_inet6.h" + +#define EE_SET(x) \ + CSR_WRITE_1(sc, RE_EECMD, \ + CSR_READ_1(sc, RE_EECMD) | x) + +#define EE_CLR(x) \ + CSR_WRITE_1(sc, RE_EECMD, \ + CSR_READ_1(sc, RE_EECMD) & ~x) + +struct bus_dma_tag { + struct bus_dma_tag_common common; + int map_count; + int bounce_flags; + bus_dma_segment_t *segments; + struct bounce_zone *bounce_zone; +}; + +/* + * Various supported device vendors/types and their names. + */ +static struct re_type re_devs[] = { + { + RT_VENDORID, RT_DEVICEID_8169, + "Realtek PCI GbE Family Controller" + }, + { + RT_VENDORID, RT_DEVICEID_8169SC, + "Realtek PCI GbE Family Controller" + }, + { + RT_VENDORID, RT_DEVICEID_8168, + "Realtek PCIe GbE Family Controller" + }, + { + RT_VENDORID, RT_DEVICEID_8161, + "Realtek PCIe GbE Family Controller" + }, + { + RT_VENDORID, RT_DEVICEID_8162, + "Realtek PCIe GbE Family Controller" + }, + { + RT_VENDORID, RT_DEVICEID_8136, + "Realtek PCIe FE Family Controller" + }, + { + DLINK_VENDORID, 0x4300, + "Realtek PCI GbE Family Controller" + }, + { + RT_VENDORID, RT_DEVICEID_8125, + "Realtek PCIe 2.5GbE Family Controller" + }, + { + RT_VENDORID, RT_DEVICEID_3000, + "Killer PCIe 3x00 2.5GbE Family Controller" + }, + { + RT_VENDORID, RT_DEVICEID_8126, + "Realtek PCIe 5GbE Family Controller" + }, + { 0, 0, NULL } +}; + +static int re_probe __P((device_t)); +static int re_attach __P((device_t)); +static int re_detach __P((device_t)); +static int re_suspend __P((device_t)); +static int re_resume __P((device_t)); +static int re_shutdown __P((device_t)); + +void re_mdio_write __P((struct re_softc*, u_int8_t, u_int16_t)); +u_int16_t re_mdio_read __P((struct re_softc*, u_int8_t)); +static void re_ephy_write __P((struct re_softc*, u_int8_t, u_int16_t)); +static u_int16_t re_ephy_read __P((struct re_softc*, u_int8_t)); +static u_int8_t re_efuse_read __P((struct re_softc*, u_int16_t)); +static void re_real_ocp_phy_write __P((struct re_softc*, u_int16_t, u_int16_t)); +static u_int16_t re_real_ocp_phy_read __P((struct re_softc*, u_int16_t)); +static void re_ocp_phy_write __P((struct re_softc*, u_int16_t, u_int8_t, u_int16_t)); +static u_int16_t re_ocp_phy_read __P((struct re_softc*, u_int16_t, u_int8_t)); +void re_mac_ocp_write __P((struct re_softc*, u_int16_t, u_int16_t)); +u_int16_t re_mac_ocp_read __P((struct re_softc*, u_int16_t)); +static void re_csi_other_fun_write __P((struct re_softc *, u_int8_t, u_int16_t, u_int32_t Regata)); +static u_int32_t re_csi_other_fun_read __P((struct re_softc *, u_int8_t, u_int16_t)); +static void re_csi_write __P((struct re_softc*, u_int16_t, u_int32_t)); +static u_int32_t re_csi_read __P((struct re_softc*, u_int16_t)); +//static u_int8_t re_csi_fun0_read_byte __P((struct re_softc*, u_int16_t)); +static bool re_set_phy_mcu_patch_request __P((struct re_softc *)); +static bool re_clear_phy_mcu_patch_request __P((struct re_softc *)); + +static int re_check_dash __P((struct re_softc *)); + +static void re_driver_start __P((struct re_softc*)); +static void re_driver_stop __P((struct re_softc*)); + +static void re_hw_phy_config __P((struct re_softc *)); +static void re_init __P((void *)); +static int re_var_init __P((struct re_softc *)); +static void re_reset __P((struct re_softc *)); +static void re_stop __P((struct re_softc *)); +static void re_setwol __P((struct re_softc *)); +static void re_clrwol __P((struct re_softc *)); +static u_int8_t re_set_wol_linkspeed __P((struct re_softc *)); + +static void re_start __P((struct ifnet *)); +static void re_start_locked __P((struct ifnet *)); +static int re_encap __P((struct re_softc *, struct mbuf **)); +static int re_8125_pad __P((struct re_softc *, struct mbuf *)); +static void WritePacket __P((struct re_softc *, bus_dma_segment_t*, int, int, uint32_t, uint32_t, uint32_t)); +static void re_start_tx __P((struct re_softc *)); +static uint32_t CountFreeTxDescNum __P((struct re_descriptor *)); +//static int CountMbufNum __P((struct mbuf *)); +#ifdef RE_FIXUP_RX +static __inline void re_fixup_rx __P((struct mbuf *)); +#endif +static void re_txeof __P((struct re_softc *)); + +//static int re_rxeof __P((struct re_softc *)); + +#if OS_VER < VERSION(7,0) +static void re_intr __P((void *)); +#else +static int re_intr __P((void *)); +#endif //OS_VER < VERSION(7,0) +#if OS_VER < VERSION(7,0) +static void re_intr_8125 __P((void *)); +#else +static int re_intr_8125 __P((void *)); +#endif //OS_VER < VERSION(7,0) +//static void re_set_multicast_reg __P((struct re_softc *, u_int32_t, u_int32_t)); +static void re_clear_all_rx_packet_filter __P((struct re_softc *)); +static void re_set_rx_packet_filter_in_sleep_state __P((struct re_softc *)); +static void re_set_rx_packet_filter __P((struct re_softc *)); +static void re_setmulti __P((struct re_softc *)); +static int re_ioctl __P((struct ifnet *, u_long, caddr_t)); +static u_int8_t re_link_ok __P((struct re_softc *)); +static void re_link_on_patch __P((struct re_softc *)); +static void re_link_down_patch __P((struct re_softc *)); +static void re_init_timer __P((struct re_softc *)); +static void re_stop_timer __P((struct re_softc *)); +static void re_start_timer __P((struct re_softc *)); +static void re_tick __P((void *)); +#if OS_VER < VERSION(7,0) +static void re_watchdog __P((struct ifnet *)); +#endif + +static int re_ifmedia_upd __P((struct ifnet *)); +static void re_ifmedia_sts __P((struct ifnet *, struct ifmediareq *)); + +static int re_ifmedia_upd_8125 __P((struct ifnet *)); +static void re_ifmedia_sts_8125 __P((struct ifnet *, struct ifmediareq *)); + +static void re_eeprom_ShiftOutBits __P((struct re_softc *, int, int)); +//static u_int16_t re_eeprom_ShiftInBits __P((struct re_softc *)); +//static void re_eeprom_EEpromCleanup __P((struct re_softc *)); +//static void re_eeprom_getword __P((struct re_softc *, int, u_int16_t *)); +static void re_read_eeprom __P((struct re_softc *, caddr_t, int, int, int)); +static void re_int_task_poll (void *, int); +static void re_int_task (void *, int); +static void re_int_task_8125_poll (void *, int); +static void re_int_task_8125 (void *, int); + +//static void re_phy_power_up(device_t dev); +//static void re_phy_power_down(device_t dev); +static int re_alloc_buf(struct re_softc *); +static void re_release_buf(struct re_softc *); +static void set_rxbufsize(struct re_softc*); +static void re_release_rx_buf(struct re_softc *); +static void re_release_tx_buf(struct re_softc *); +static u_int32_t re_eri_read(struct re_softc *, int, int, int); +static int re_eri_write(struct re_softc *, int, int, u_int32_t, int); +static void OOB_mutex_lock(struct re_softc *); +static void OOB_mutex_unlock(struct re_softc *); +static void re_hw_start_unlock(struct re_softc *sc); +static void re_hw_start_unlock_8125(struct re_softc *sc); + +static void re_add_sysctls (struct re_softc *); +static int re_sysctl_driver_variable (SYSCTL_HANDLER_ARGS); +static int re_sysctl_stats (SYSCTL_HANDLER_ARGS); +static int re_sysctl_registers (SYSCTL_HANDLER_ARGS); +static int re_sysctl_registers2 (SYSCTL_HANDLER_ARGS); +static int re_sysctl_registers3 (SYSCTL_HANDLER_ARGS); +static int re_sysctl_registers4 (SYSCTL_HANDLER_ARGS); +static int re_sysctl_registers5 (SYSCTL_HANDLER_ARGS); +static int re_sysctl_eth_phy (SYSCTL_HANDLER_ARGS); +static int re_sysctl_dump_rx_desc (SYSCTL_HANDLER_ARGS); +static int re_sysctl_dump_tx_desc (SYSCTL_HANDLER_ARGS); +static int re_sysctl_pcie_phy (SYSCTL_HANDLER_ARGS); +static int re_sysctl_extended_registers (SYSCTL_HANDLER_ARGS); +static int re_sysctl_pci_registers (SYSCTL_HANDLER_ARGS); +static int re_sysctl_msix_tbl (SYSCTL_HANDLER_ARGS); + +/* Tunables. */ +SYSCTL_NODE(_hw, OID_AUTO, re, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, ""); +static int msi_disable = 1; +SYSCTL_INT(_hw_re, OID_AUTO, msi_disable, CTLFLAG_RDTUN, &msi_disable, 0, + ""); +static int msix_disable = 0; +SYSCTL_INT(_hw_re, OID_AUTO, msix_disable, CTLFLAG_RDTUN, &msix_disable, 0, + ""); +static int prefer_iomap = 0; +SYSCTL_INT(_hw_re, OID_AUTO, prefer_iomap, CTLFLAG_RDTUN, &prefer_iomap, 0, + ""); +static int re_lro_entry_count = 128; +SYSCTL_INT(_hw_re, OID_AUTO, lro_entry_count, CTLFLAG_RDTUN, + &re_lro_entry_count, 0, ""); +static int re_lro_mbufq_depth = RE_RX_BUF_NUM; +SYSCTL_INT(_hw_re, OID_AUTO, lro_mbufq_depth, CTLFLAG_RDTUN, + &re_lro_mbufq_depth, 0, ""); +#ifdef ENABLE_EEE +static int eee_enable = 1; +#else +static int eee_enable = 0; +#endif +SYSCTL_INT(_hw_re, OID_AUTO, eee_enable, CTLFLAG_RDTUN, &eee_enable, 0, + ""); +static int phy_power_saving = 1; +SYSCTL_INT(_hw_re, OID_AUTO, phy_power_saving, CTLFLAG_RDTUN, + &phy_power_saving, 0, ""); +static int phy_mdix_mode = RE_ETH_PHY_AUTO_MDI_MDIX; +SYSCTL_INT(_hw_re, OID_AUTO, phy_mdix_mode, CTLFLAG_RDTUN, &phy_mdix_mode, + 0, ""); +#ifdef ENABLE_S5WOL +static int s5wol = 1; +#else +static int s5wol = 0; +SYSCTL_INT(_hw_re, OID_AUTO, s5wol, CTLFLAG_RDTUN, &s5wol, 0, ""); +#endif +#ifdef ENABLE_S0_MAGIC_PACKET +static int s0_magic_packet = 1; +#else +static int s0_magic_packet = 0; +#endif +SYSCTL_INT(_hw_re, OID_AUTO, s0_magic_packet, CTLFLAG_RDTUN, + &s0_magic_packet, 0, ""); +#ifdef CONFIG_SOC_LAN +static int config_soc_lan = 1; +#else +static int config_soc_lan = 0; +#endif +SYSCTL_INT(_hw_re, OID_AUTO, config_soc_lan, CTLFLAG_RDTUN, + &config_soc_lan, 0, ""); +#ifdef ENABLE_INTERRUPT_MITIGATIN +static int interrupt_mitigation = 1; +#else +static int interrupt_mitigation = 0; +#endif +SYSCTL_INT(_hw_re, OID_AUTO, interrupt_mitigation, CTLFLAG_RDTUN, + &interrupt_mitigation, 0, ""); +static int max_rx_mbuf_sz = MJUM9BYTES; +SYSCTL_INT(_hw_re, OID_AUTO, max_rx_mbuf_sz, CTLFLAG_RDTUN, + &max_rx_mbuf_sz, 0, ""); + +#define RE_CSUM_FEATURES_IPV4 (CSUM_IP | CSUM_TCP | CSUM_UDP) +#define RE_CSUM_FEATURES_IPV6 (CSUM_TCP_IPV6 | CSUM_UDP_IPV6) +#define RE_CSUM_FEATURES (RE_CSUM_FEATURES_IPV4 | RE_CSUM_FEATURES_IPV6) + +static device_method_t re_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, re_probe), + DEVMETHOD(device_attach, re_attach), + DEVMETHOD(device_detach, re_detach), + DEVMETHOD(device_suspend, re_suspend), + DEVMETHOD(device_resume, re_resume), + DEVMETHOD(device_shutdown, re_shutdown), + { 0, 0 } +}; + +static driver_t re_driver = { + "re", + re_methods, + sizeof(struct re_softc) +}; + +#if OS_VER>=VERSION(14,0) +DRIVER_MODULE(if_re, pci, re_driver, 0, 0); +#else +static devclass_t re_devclass; +DRIVER_MODULE(if_re, pci, re_driver, re_devclass, 0, 0); +#endif +MODULE_DEPEND(if_re, pci, 1, 1, 1); +MODULE_DEPEND(if_re, ether, 1, 1, 1); + +static void +re_clear_set_eth_phy_bit( + struct re_softc *sc, + u_int8_t addr, + u_int16_t clearmask, + u_int16_t setmask +) +{ + u_int16_t PhyRegValue; + + PhyRegValue = re_mdio_read(sc, addr); + PhyRegValue &= ~clearmask; + PhyRegValue |= setmask; + re_mdio_write(sc, addr, PhyRegValue); +} + +static void +re_clear_eth_phy_bit( + struct re_softc *sc, + u_int8_t addr, + u_int16_t mask +) +{ + re_clear_set_eth_phy_bit(sc, + addr, + mask, + 0 + ); +} + +static void +re_set_eth_phy_bit( + struct re_softc *sc, + u_int8_t addr, + u_int16_t mask +) +{ + re_clear_set_eth_phy_bit(sc, + addr, + 0, + mask + ); +} + +static void +re_clear_set_eth_ocp_phy_bit( + struct re_softc *sc, + u_int16_t addr, + u_int16_t clearmask, + u_int16_t setmask +) +{ + u_int16_t PhyRegValue; + + PhyRegValue = re_real_ocp_phy_read(sc, addr); + PhyRegValue &= ~clearmask; + PhyRegValue |= setmask; + re_real_ocp_phy_write(sc, addr, PhyRegValue); +} + +static void +re_clear_eth_ocp_phy_bit( + struct re_softc *sc, + u_int16_t addr, + u_int16_t mask +) +{ + re_clear_set_eth_ocp_phy_bit(sc, + addr, + mask, + 0 + ); +} + +static void +re_set_eth_ocp_phy_bit( + struct re_softc *sc, + u_int16_t addr, + u_int16_t mask +) +{ + re_clear_set_eth_ocp_phy_bit(sc, + addr, + 0, + mask + ); +} + +static void +re_clear_set_mac_ocp_bit( + struct re_softc *sc, + u_int16_t addr, + u_int16_t clearmask, + u_int16_t setmask +) +{ + u_int16_t PhyRegValue; + + PhyRegValue = re_mac_ocp_read(sc, addr); + PhyRegValue &= ~clearmask; + PhyRegValue |= setmask; + re_mac_ocp_write(sc, addr, PhyRegValue); +} + +static void +re_clear_mac_ocp_bit( + struct re_softc *sc, + u_int16_t addr, + u_int16_t mask +) +{ + re_clear_set_mac_ocp_bit(sc, + addr, + mask, + 0 + ); +} + +static void +re_set_mac_ocp_bit( + struct re_softc *sc, + u_int16_t addr, + u_int16_t mask +) +{ + re_clear_set_mac_ocp_bit(sc, + addr, + 0, + mask + ); +} + +static void re_clear_phy_ups_reg(struct re_softc *sc) +{ + switch(sc->re_type) { + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_clear_eth_ocp_phy_bit(sc, 0xA466, BIT_0); + /* FALLTHROUGH */ + case MACFG_80: + case MACFG_81: + re_clear_eth_ocp_phy_bit(sc, 0xA468, BIT_3 | BIT_1); + break; + }; +} + +static int re_is_ups_resume(struct re_softc *sc) +{ + switch(sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + return (re_mac_ocp_read(sc, 0xD42C) & BIT_8); + default: + return (re_mac_ocp_read(sc, 0xD408) & BIT_0); + } +} + +static void re_clear_ups_resume_bit(struct re_softc *sc) +{ + switch(sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_mac_ocp_write(sc, 0xD42C, re_mac_ocp_read(sc, 0xD42C) & ~(BIT_8)); + break; + default: + re_mac_ocp_write(sc, 0xD408, re_mac_ocp_read(sc, 0xD408) & ~(BIT_0)); + break; + } +} + +static u_int8_t re_get_phy_state(struct re_softc *sc) +{ + switch(sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + return (re_real_ocp_phy_read(sc, 0xA420) & 0x7); + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + return (re_ocp_phy_read(sc, 0x0A42, 0x10) & 0x7); + default: + return 0xff; + }; +} + +static void re_wait_phy_ups_resume(struct re_softc *sc, u_int16_t PhyState) +{ + switch(sc->re_type) { + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + for (int i=0; i< 100; i++) { + if (re_get_phy_state(sc) == PhyState) + break; + else + DELAY(1000); + } + break; + default: + break; + }; +} + +static void re_phy_power_up(device_t dev) +{ + struct re_softc *sc; + u_int8_t Data8; + + sc = device_get_softc(dev); + + if ((sc->re_if_flags & RL_FLAG_PHYWAKE_PM) != 0) + CSR_WRITE_1(sc, RE_PMCH, CSR_READ_1(sc, RE_PMCH) | (BIT_6|BIT_7)); + + re_mdio_write(sc, 0x1F, 0x0000); + + switch (sc->re_type) { + case MACFG_4: + case MACFG_5: + case MACFG_6: + case MACFG_21: + case MACFG_22: + case MACFG_23: + case MACFG_24: + case MACFG_25: + case MACFG_26: + case MACFG_27: + case MACFG_28: + case MACFG_31: + case MACFG_32: + case MACFG_33: + case MACFG_63: + case MACFG_64: + case MACFG_65: + case MACFG_66: + re_mdio_write(sc, 0x0e, 0x0000); + break; + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_61: + Data8 = re_eri_read(sc, 0x1AB, 1, ERIAR_ExGMAC); + Data8 |= (BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7); + re_eri_write(sc, 0x1AB, 1, Data8, ERIAR_ExGMAC); + break; + default: + break; + }; + + + re_mdio_write(sc, MII_BMCR, BMCR_AUTOEN); + + //wait mdc/mdio ready + switch(sc->re_type) { + case MACFG_61: + case MACFG_62: + case MACFG_67: + DELAY(10000); + break; + } + + //wait ups resume (phy state 3) + switch(sc->re_type) { + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_wait_phy_ups_resume(sc, 3); + break; + }; +} + +static u_int16_t re_get_phy_lp_ability(struct re_softc *sc) +{ + u_int16_t anlpar; + + re_mdio_write(sc, 0x1F, 0x0000); + anlpar = re_mdio_read(sc, MII_ANLPAR); + + return anlpar; +} + +static void re_phy_power_down(device_t dev) +{ + struct re_softc *sc; + u_int8_t Data8; + + sc = device_get_softc(dev); + +#ifdef ENABLE_FIBER_SUPPORT + if (HW_FIBER_MODE_ENABLED(sc)) + return; +#endif //ENABLE_FIBER_SUPPORT + + if (sc->re_dash) { + re_set_wol_linkspeed(sc); + return; + } + + re_mdio_write(sc, 0x1F, 0x0000); + + switch (sc->re_type) { + case MACFG_21: + case MACFG_22: + case MACFG_23: + case MACFG_24: + case MACFG_25: + case MACFG_26: + case MACFG_27: + case MACFG_28: + case MACFG_31: + case MACFG_32: + case MACFG_33: + case MACFG_63: + case MACFG_64: + case MACFG_65: + case MACFG_66: + re_mdio_write(sc, 0x0e, 0x0200); + re_mdio_write(sc, MII_BMCR, (BMCR_AUTOEN|BMCR_PDOWN)); + break; + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_61: + Data8 = re_eri_read(sc, 0x1AB, 1, ERIAR_ExGMAC); + Data8 &= ~(BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7); + re_eri_write(sc, 0x1AB, 1, Data8, ERIAR_ExGMAC); + + re_mdio_write(sc, MII_BMCR, (BMCR_AUTOEN|BMCR_PDOWN)); + break; + default: + re_mdio_write(sc, MII_BMCR, (BMCR_AUTOEN|BMCR_PDOWN)); + break; + } + + switch (sc->re_type) { + case MACFG_36: + case MACFG_37: + case MACFG_42: + case MACFG_43: + case MACFG_54: + case MACFG_55: + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) & ~BIT_6); + break; + case MACFG_38: + case MACFG_39: + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) & ~BIT_6); + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~BIT_6); + break; + } + + if ((sc->re_if_flags & RL_FLAG_PHYWAKE_PM) != 0) + CSR_WRITE_1(sc, RE_PMCH, CSR_READ_1(sc, RE_PMCH) & ~(BIT_6|BIT_7)); +} + +/* +static void re_tx_dma_map_buf(void *arg, bus_dma_segment_t *segs, int nseg, int error) +{ + union TxDesc *txptr = arg; + + if (error) { + txptr->ul[0] &= ~htole32(RL_TDESC_CMD_BUFLEN); + txptr->so1.TxBuff = 0; + return; + } + + txptr->so1.TxBuff = htole64(segs->ds_addr); +} +*/ + +static void re_rx_dma_map_buf(void *arg, bus_dma_segment_t *segs, int nseg, int error) +{ + union RxDesc *rxptr = arg; + + if (error) { + rxptr->ul[0] &= ~htole32(RL_RDESC_CMD_BUFLEN); + /* make sure desc is releasing before change buffer address */ + wmb(); + rxptr->so0.RxBuff = 0; + return; + } + + rxptr->so0.RxBuff = htole64(segs->ds_addr); +} + +static void re_dma_map_rxdesc(void *arg, bus_dma_segment_t *segs, int nseg, int error) +{ + struct re_softc *sc = arg; + + if (error) + return; + + CSR_WRITE_4(sc, 0xe4, RL_ADDR_LO(segs->ds_addr)); + CSR_WRITE_4(sc, 0xe8, RL_ADDR_HI(segs->ds_addr)); +} + +static void re_dma_map_txdesc(void *arg, bus_dma_segment_t *segs, int nseg, int error) +{ + struct re_softc *sc = arg; + + if (error) + return; + + CSR_WRITE_4(sc, 0x20, RL_ADDR_LO(segs->ds_addr)); + CSR_WRITE_4(sc, 0x24, RL_ADDR_HI(segs->ds_addr)); +} + +/* + * Probe for a RealTek 8129/8139 chip. Check the PCI vendor and device + * IDs against our list and return a device name if we find a match. + */ +static int re_probe(device_t dev) /* Search for Realtek NIC chip */ +{ + struct re_type *t; + t = re_devs; + while (t->re_name != NULL) { + if ((pci_get_vendor(dev) == t->re_vid) && + (pci_get_device(dev) == t->re_did)) { + device_set_desc(dev, t->re_name); + return(0); + } + t++; + } + + return(ENXIO); +} + + +static u_int32_t re_eri_read_with_oob_base_address(struct re_softc *sc, int addr, int len, int type, const u_int32_t base_address) +{ + int i, val_shift, shift = 0; + u_int32_t value1 = 0, value2 = 0, mask; + const u_int32_t transformed_base_address = ((base_address & 0x00FFF000) << 6) | (base_address & 0x000FFF); + + if (len > 4 || len <= 0) + return -1; + + while (len > 0) { + val_shift = addr % ERIAR_Addr_Align; + addr = addr & ~0x3; + + CSR_WRITE_4(sc,RE_ERIAR, + ERIAR_Read | + transformed_base_address | + type << ERIAR_Type_shift | + ERIAR_ByteEn << ERIAR_ByteEn_shift | + addr); + + for (i = 0; i < 10; i++) { + DELAY(100); + + /* Check if the RTL8168 has completed ERI read */ + if (CSR_READ_4(sc,RE_ERIAR) & ERIAR_Flag) + break; + } + + if (len == 1) mask = (0xFF << (val_shift * 8)) & 0xFFFFFFFF; + else if (len == 2) mask = (0xFFFF << (val_shift * 8)) & 0xFFFFFFFF; + else if (len == 3) mask = (0xFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; + else mask = (0xFFFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; + + value1 = CSR_READ_4(sc,RE_ERIDR) & mask; + value2 |= (value1 >> val_shift * 8) << shift * 8; + + if (len <= 4 - val_shift) + len = 0; + else { + len -= (4 - val_shift); + shift = 4 - val_shift; + addr += 4; + } + } + + return value2; +} + +static u_int32_t re_eri_read(struct re_softc *sc, int addr, int len, int type) +{ + return re_eri_read_with_oob_base_address(sc, addr, len, type, 0); +} + +static int re_eri_write_with_oob_base_address(struct re_softc *sc, int addr, int len, u_int32_t value, int type, const u_int32_t base_address) +{ + int i, val_shift, shift = 0; + u_int32_t value1 = 0, mask; + const u_int32_t transformed_base_address = ((base_address & 0x00FFF000) << 6) | (base_address & 0x000FFF); + + if (len > 4 || len <= 0) + return -1; + + while (len > 0) { + val_shift = addr % ERIAR_Addr_Align; + addr = addr & ~0x3; + + if (len == 1) mask = (0xFF << (val_shift * 8)) & 0xFFFFFFFF; + else if (len == 2) mask = (0xFFFF << (val_shift * 8)) & 0xFFFFFFFF; + else if (len == 3) mask = (0xFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; + else mask = (0xFFFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; + + value1 = re_eri_read_with_oob_base_address(sc, addr, 4, type, base_address) & ~mask; + value1 |= ((value << val_shift * 8) >> shift * 8); + + CSR_WRITE_4(sc,RE_ERIDR, value1); + CSR_WRITE_4(sc,RE_ERIAR, + ERIAR_Write | + transformed_base_address | + type << ERIAR_Type_shift | + ERIAR_ByteEn << ERIAR_ByteEn_shift | + addr); + + for (i = 0; i < 10; i++) { + DELAY(100); + + /* Check if the RTL8168 has completed ERI write */ + if (!(CSR_READ_4(sc,RE_ERIAR) & ERIAR_Flag)) + break; + } + + if (len <= 4 - val_shift) + len = 0; + else { + len -= (4 - val_shift); + shift = 4 - val_shift; + addr += 4; + } + } + + return 0; +} + +static int re_eri_write(struct re_softc *sc, int addr, int len, u_int32_t value, int type) +{ + return re_eri_write_with_oob_base_address(sc, addr, len, value, type, 0); +} + +static void +re_dma_map_addr(void *arg, bus_dma_segment_t *segs, int nseg, int error) +{ + bus_addr_t *addr; + + if (error) + return; + + KASSERT(nseg == 1, ("too many DMA segments, %d should be 1", nseg)); + addr = arg; + *addr = segs->ds_addr; +} + +static int re_alloc_stats(device_t dev, struct re_softc *sc) +{ + int error; + + /* Create DMA map for statistics. */ + error = bus_dma_tag_create(sc->re_parent_tag, RE_DUMP_ALIGN, 0, + BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, NULL, + sizeof(struct re_stats), 1, sizeof(struct re_stats), 0, NULL, NULL, + &sc->re_tally.re_stag); + if (error) { + device_printf(dev, "could not create statistics DMA tag\n"); + return (error); + } + /* Allocate DMA'able memory for statistics. */ + error = bus_dmamem_alloc(sc->re_tally.re_stag, + (void **)&sc->re_tally.re_stats, + BUS_DMA_WAITOK | BUS_DMA_COHERENT | BUS_DMA_ZERO, + &sc->re_tally.re_smap); + if (error) { + device_printf(dev, + "could not allocate statistics DMA memory\n"); + return (error); + } + /* Load the map for statistics. */ + sc->re_tally.re_stats_addr = 0; + error = bus_dmamap_load(sc->re_tally.re_stag, sc->re_tally.re_smap, + sc->re_tally.re_stats, sizeof(struct re_stats), re_dma_map_addr, + &sc->re_tally.re_stats_addr, BUS_DMA_NOWAIT); + if (error != 0 || sc->re_tally.re_stats_addr == 0) { + device_printf(dev, "could not load statistics DMA memory\n"); + return (ENOMEM); + } + + return (0); +} + +static void re_release_rx_buf(struct re_softc *sc) +{ + int i; + + if (sc->re_desc.re_rx_mtag) { + for (i = 0; i < RE_RX_BUF_NUM; i++) { + if (sc->re_desc.rx_buf[i]!=NULL) { + bus_dmamap_sync(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[i], + BUS_DMASYNC_POSTREAD); + bus_dmamap_unload(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[i]); + bus_dmamap_destroy(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[i]); + m_freem(sc->re_desc.rx_buf[i]); + sc->re_desc.rx_buf[i] =NULL; + } + } + bus_dma_tag_destroy(sc->re_desc.re_rx_mtag); + sc->re_desc.re_rx_mtag =0; + } + +} + +static void re_release_tx_buf(struct re_softc *sc) +{ + int i; + + if (sc->re_desc.re_tx_mtag) { + for (i = 0; i < RE_TX_BUF_NUM; i++) { + bus_dmamap_destroy(sc->re_desc.re_tx_mtag, + sc->re_desc.re_tx_dmamap[i]); + m_freem(sc->re_desc.tx_buf[i]); + } + bus_dma_tag_destroy(sc->re_desc.re_tx_mtag); + sc->re_desc.re_tx_mtag = 0; + } +} + +static void +re_free_soft_lro(struct re_softc *sc) +{ +#if defined(INET) || defined(INET6) + if (sc->re_lro.ifp) { + tcp_lro_free(&sc->re_lro); + sc->re_lro.ifp = NULL; + } +#endif +} + +static int +re_config_soft_lro(struct re_softc *sc) +{ + struct lro_ctrl *lro; + + lro = &sc->re_lro; + bzero(lro, sizeof(struct lro_ctrl)); + +#if defined(INET) || defined(INET6) +#if OS_VER >= VERSION(11,0) + if (tcp_lro_init_args(lro, sc->re_ifp, + max(TCP_LRO_ENTRIES, re_lro_entry_count), + min(1024, re_lro_mbufq_depth)) != 0) { + device_printf(sc->dev, + "%s: tcp_lro_init_args failed\n", + __func__); + return (ENOMEM); + } +#else + if (tcp_lro_init(lro)) { + device_printf(sc->dev, + "%s: tcp_lro_init failed\n", + __func__); + return (-1); + } +#endif //OS_VER >= VERSION(11,0) +#endif + lro->ifp = sc->re_ifp; + + return (0); +} + +static void re_release_buf(struct re_softc *sc) +{ + re_release_rx_buf(sc); + re_release_tx_buf(sc); +} + +static int re_alloc_buf(struct re_softc *sc) +{ + int error =0; + int i,size; + + switch(sc->re_type) { + case MACFG_3: + case MACFG_4: + case MACFG_5: + case MACFG_6: + case MACFG_11: + case MACFG_12: + case MACFG_13: + case MACFG_21: + case MACFG_22: + case MACFG_23: + size = RE_TX_MAXSIZE_32K; + break; + default: + size = RE_TX_MAXSIZE_64K; + break; + } + RE_UNLOCK(sc); + error = bus_dma_tag_create(sc->re_parent_tag, 1, 0, + BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, + NULL, size, RE_NTXSEGS, size, 0, + NULL, NULL, &sc->re_desc.re_tx_mtag); + + if (error) { + //device_printf(dev,"re_tx_mtag fail\n"); + //goto fail; + RE_LOCK(sc); + return error; + } + + error = bus_dma_tag_create( + sc->re_parent_tag, + RE_RX_BUFFER_ALIGN, 0, /* alignment, boundary */ + BUS_SPACE_MAXADDR, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + sc->re_rx_desc_buf_sz, 1, /* maxsize,nsegments */ + sc->re_rx_desc_buf_sz, /* maxsegsize */ + 0, /* flags */ + NULL, NULL, /* lockfunc, lockarg */ + &sc->re_desc.re_rx_mtag); + if (error) { + //device_printf(dev,"re_rx_mtag fail\n"); + //goto fail; + RE_LOCK(sc); + return error; + } + + RE_LOCK(sc); + if (sc->re_rx_mbuf_sz <= MCLBYTES) + size = MCLBYTES; + else if (sc->re_rx_mbuf_sz <= MJUMPAGESIZE) + size = MJUMPAGESIZE; + else + size =MJUM9BYTES; + for (i = 0; i < RE_RX_BUF_NUM; i++) { + sc->re_desc.rx_buf[i] = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, size); + if (!sc->re_desc.rx_buf[i]) { + //device_printf(dev, "m_getcl fail!!!\n"); + error = ENXIO; + //goto fail; + return error; + } + + sc->re_desc.rx_buf[i]->m_len = sc->re_desc.rx_buf[i]->m_pkthdr.len = size; +#ifdef RE_FIXUP_RX + /* + * This is part of an evil trick to deal with non-x86 platforms. + * The RealTek chip requires RX buffers to be aligned on 64-bit + * boundaries, but that will hose non-x86 machines. To get around + * this, we leave some empty space at the start of each buffer + * and for non-x86 hosts, we copy the buffer back six bytes + * to achieve word alignment. This is slightly more efficient + * than allocating a new buffer, copying the contents, and + * discarding the old buffer. + */ + m_adj(sc->re_desc.rx_buf[i], RE_ETHER_ALIGN); +#endif + + error = bus_dmamap_create(sc->re_desc.re_rx_mtag, BUS_DMA_NOWAIT, &sc->re_desc.re_rx_dmamap[i]); + if (error) { + //device_printf(dev, "bus_dmamap_create fail!!!\n"); + //goto fail; + return error; + } + } + + for (i = 0; i < RE_TX_BUF_NUM; i++) { + error = bus_dmamap_create(sc->re_desc.re_tx_mtag, BUS_DMA_NOWAIT, &sc->re_desc.re_tx_dmamap[i]); + if (error) { + //device_printf(dev, "bus_dmamap_create fail!!!\n"); + //goto fail; + return error; + } + } + + return 0; +} + +static void set_rxbufsize(struct re_softc *sc) +{ + struct ifnet *ifp; + ifp = RE_GET_IFNET(sc); + sc->re_rx_desc_buf_sz = (ifp->if_mtu > ETHERMTU) ? ifp->if_mtu: ETHERMTU; + sc->re_rx_desc_buf_sz += (ETHER_VLAN_ENCAP_LEN + ETHER_HDR_LEN + ETHER_CRC_LEN); + if (!(sc->re_if_flags & RL_FLAG_8168G_PLUS) || + sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || + sc->re_type == MACFG_58 || sc->re_type == MACFG_59 || + sc->re_type == MACFG_60) + sc->re_rx_desc_buf_sz += 1; + CSR_WRITE_2(sc, RE_RxMaxSize, sc->re_rx_desc_buf_sz); +} + +static void re_enable_cfg9346_write(struct re_softc *sc) +{ + EE_SET(RE_EEMODE_WRITECFG); +} + +static void re_disable_cfg9346_write(struct re_softc *sc) +{ + EE_CLR(RE_EEMODE_WRITECFG); +} + +static void re_enable_force_clkreq(struct re_softc *sc, bool enable) +{ + if (enable) + CSR_WRITE_1(sc, 0xF1, CSR_READ_1(sc, 0xF1) | BIT_7); + else + CSR_WRITE_1(sc, 0xF1, CSR_READ_1(sc, 0xF1) & ~BIT_7); +} + +static void _re_enable_aspm_clkreq_lock(struct re_softc *sc, bool enable) +{ + switch(sc->re_type) { + case MACFG_91: + case MACFG_92: + if (enable) { + CSR_WRITE_1(sc, RE_INT_CFG0_8125, CSR_READ_1(sc, RE_INT_CFG0_8125) | BIT_3); + CSR_WRITE_1(sc, RE_CFG5, CSR_READ_1(sc, RE_CFG5) | BIT_0); + } else { + CSR_WRITE_1(sc, RE_INT_CFG0_8125, CSR_READ_1(sc, RE_INT_CFG0_8125) & ~BIT_3); + CSR_WRITE_1(sc, RE_CFG5, CSR_READ_1(sc, RE_CFG5) & ~BIT_0); + } + break; + default: + if (enable) { + CSR_WRITE_1(sc, RE_CFG5, CSR_READ_1(sc, RE_CFG5) | BIT_0); + CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | BIT_7); + } else { + CSR_WRITE_1(sc, RE_CFG5, CSR_READ_1(sc, RE_CFG5) & ~BIT_0); + CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) & ~BIT_7); + } + break; + } +} + +static void re_enable_aspm_clkreq_lock(struct re_softc *sc, bool enable) +{ + re_enable_cfg9346_write(sc); + _re_enable_aspm_clkreq_lock(sc, enable); + re_disable_cfg9346_write(sc); +} + +static void re_disable_mcu_bps(struct re_softc *sc) +{ + u_int16_t regAddr; + + switch(sc->re_type) { + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_enable_aspm_clkreq_lock(sc, 0); + break; + } + + switch(sc->re_type) { + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + re_mac_ocp_write(sc, 0xFC38, 0x0000); + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_mac_ocp_write(sc, 0xFC48, 0x0000); + break; + } + + switch(sc->re_type) { + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + re_mac_ocp_write(sc, 0xFC28, 0x0000); + re_mac_ocp_write(sc, 0xFC2A, 0x0000); + re_mac_ocp_write(sc, 0xFC2C, 0x0000); + re_mac_ocp_write(sc, 0xFC2E, 0x0000); + re_mac_ocp_write(sc, 0xFC30, 0x0000); + re_mac_ocp_write(sc, 0xFC32, 0x0000); + re_mac_ocp_write(sc, 0xFC34, 0x0000); + re_mac_ocp_write(sc, 0xFC36, 0x0000); + + DELAY(3000); + + re_mac_ocp_write(sc, 0xFC26, 0x0000); + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + for (regAddr = 0xFC28; regAddr < 0xFC48; regAddr += 2) { + re_mac_ocp_write(sc, regAddr, 0x0000); + } + + DELAY(3000); + + re_mac_ocp_write(sc, 0xFC26, 0x0000); + break; + } +} + +static void +re_switch_mac_mcu_ram_code_page(struct re_softc *sc, u_int16_t page) +{ + u_int16_t tmpUshort; + + page &= (BIT_1 | BIT_0); + tmpUshort = re_mac_ocp_read(sc, 0xE446); + tmpUshort &= ~(BIT_1 | BIT_0); + tmpUshort |= page; + re_mac_ocp_write(sc, 0xE446, tmpUshort); +} + +static void +_re_write_mac_mcu_ram_code(struct re_softc *sc, const u_int16_t *entry, u_int16_t entry_cnt) +{ + u_int16_t i; + + for (i = 0; i < entry_cnt; i++) { + re_mac_ocp_write(sc, 0xF800 + i * 2, entry[i]); + } +} + +static void +_re_write_mac_mcu_ram_code_with_page(struct re_softc *sc, const u_int16_t *entry, u_int16_t entry_cnt, u_int16_t page_size) +{ + u_int16_t i; + u_int16_t offset; + + if (page_size == 0) return; + + for (i = 0; i < entry_cnt; i++) { + offset = i % page_size; + if (offset == 0) { + u_int16_t page = (i / page_size); + re_switch_mac_mcu_ram_code_page(sc, page); + } + re_mac_ocp_write(sc, 0xF800 + offset * 2, entry[i]); + } +} + +static void +re_write_mac_mcu_ram_code(struct re_softc *sc, const u_int16_t *entry, u_int16_t entry_cnt) +{ + if (FALSE == HW_SUPPORT_MAC_MCU(sc)) return; + if (entry == NULL || entry_cnt == 0) return; + + if (sc->MacMcuPageSize > 0) + _re_write_mac_mcu_ram_code_with_page(sc, entry, entry_cnt, sc->MacMcuPageSize); + else + _re_write_mac_mcu_ram_code(sc, entry, entry_cnt); +} + +static void re_set_mac_mcu_8168g_1(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8168g_1[] = { + 0xE008, 0xE01B, 0xE022, 0xE094, 0xE097, 0xE09A, 0xE0B3, 0xE0BA, 0x49D2, + 0xF10D, 0x766C, 0x49E2, 0xF00A, 0x1EC0, 0x8EE1, 0xC60A, 0x77C0, 0x4870, + 0x9FC0, 0x1EA0, 0xC707, 0x8EE1, 0x9D6C, 0xC603, 0xBE00, 0xB416, 0x0076, + 0xE86C, 0xC406, 0x7580, 0x4852, 0x8D80, 0xC403, 0xBC00, 0xD3E0, 0x02C8, + 0x8918, 0xE815, 0x1100, 0xF011, 0xE812, 0x4990, 0xF002, 0xE817, 0xE80E, + 0x4992, 0xF002, 0xE80E, 0xE80A, 0x4993, 0xF002, 0xE818, 0xE806, 0x4991, + 0xF002, 0xE838, 0xC25E, 0xBA00, 0xC056, 0x7100, 0xFF80, 0x7100, 0x4892, + 0x4813, 0x8900, 0xE00A, 0x7100, 0x4890, 0x4813, 0x8900, 0xC74B, 0x74F8, + 0x48C2, 0x4841, 0x8CF8, 0xC746, 0x74FC, 0x49C0, 0xF120, 0x49C1, 0xF11E, + 0x74F8, 0x49C0, 0xF01B, 0x49C6, 0xF119, 0x74F8, 0x49C4, 0xF013, 0xC536, + 0x74B0, 0x49C1, 0xF1FD, 0xC537, 0xC434, 0x9CA0, 0xC435, 0x1C13, 0x484F, + 0x9CA2, 0xC52B, 0x74B0, 0x49C1, 0xF1FD, 0x74F8, 0x48C4, 0x8CF8, 0x7100, + 0x4893, 0x8900, 0xFF80, 0xC520, 0x74B0, 0x49C1, 0xF11C, 0xC71E, 0x74FC, + 0x49C1, 0xF118, 0x49C0, 0xF116, 0x74F8, 0x49C0, 0xF013, 0x48C3, 0x8CF8, + 0xC516, 0x74A2, 0x49CE, 0xF1FE, 0xC411, 0x9CA0, 0xC411, 0x1C13, 0x484F, + 0x9CA2, 0x74A2, 0x49CF, 0xF1FE, 0x7100, 0x4891, 0x8900, 0xFF80, 0xE400, + 0xD3E0, 0xE000, 0x0481, 0x0C81, 0xDE20, 0x0000, 0x0992, 0x1B76, 0xC602, + 0xBE00, 0x059C, 0x1B76, 0xC602, 0xBE00, 0x065A, 0xB400, 0x18DE, 0x2008, + 0x4001, 0xF10F, 0x7342, 0x1880, 0x2008, 0x0009, 0x4018, 0xF109, 0x7340, + 0x25BC, 0x130F, 0xF105, 0xC00A, 0x7300, 0x4831, 0x9B00, 0xB000, 0x7340, + 0x8320, 0xC302, 0xBB00, 0x0C12, 0xE860, 0xC406, 0x7580, 0x4851, 0x8D80, + 0xC403, 0xBC00, 0xD3E0, 0x02C8, 0xC406, 0x7580, 0x4850, 0x8D80, 0xC403, + 0xBC00, 0xD3E0, 0x0298 + }; + + re_mac_ocp_write(sc, 0xE43C, 0x0000); + re_mac_ocp_write(sc, 0xE43E, 0x0000); + + re_mac_ocp_write(sc, 0xE434, 0x0004); + re_mac_ocp_write(sc, 0xE43C, 0x0004); + + re_disable_mcu_bps(sc); + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168g_1, ARRAY_SIZE(mcu_patch_code_8168g_1)); + + re_mac_ocp_write(sc, 0xDE30, 0x0080); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC28, 0x0075); + re_mac_ocp_write(sc, 0xFC2A, 0x02B1); + re_mac_ocp_write(sc, 0xFC2C, 0x0991); + re_mac_ocp_write(sc, 0xFC2E, 0x059B); + re_mac_ocp_write(sc, 0xFC30, 0x0659); + re_mac_ocp_write(sc, 0xFC32, 0x0000); + re_mac_ocp_write(sc, 0xFC34, 0x02C7); + re_mac_ocp_write(sc, 0xFC36, 0x0279); +} + +static void re_set_mac_mcu_8168gu_1(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8168gu_1[] = { + 0xE008, 0xE011, 0xE015, 0xE018, 0xE01B, 0xE027, 0xE043, 0xE065, 0x49E2, + 0xF005, 0x49EA, 0xF003, 0xC404, 0xBC00, 0xC403, 0xBC00, 0x0496, 0x051A, + 0x1D01, 0x8DE8, 0xC602, 0xBE00, 0x0206, 0x1B76, 0xC202, 0xBA00, 0x058A, + 0x1B76, 0xC602, 0xBE00, 0x0648, 0x74E6, 0x1B78, 0x46DC, 0x1300, 0xF005, + 0x74F8, 0x48C3, 0x48C4, 0x8CF8, 0x64E7, 0xC302, 0xBB00, 0x068E, 0x74E4, + 0x49C5, 0xF106, 0x49C6, 0xF107, 0x48C8, 0x48C9, 0xE011, 0x48C9, 0x4848, + 0xE00E, 0x4848, 0x49C7, 0xF00A, 0x48C9, 0xC60D, 0x1D1F, 0x8DC2, 0x1D00, + 0x8DC3, 0x1D11, 0x8DC0, 0xE002, 0x4849, 0x94E5, 0xC602, 0xBE00, 0x0238, + 0xE434, 0x49D9, 0xF01B, 0xC31E, 0x7464, 0x49C4, 0xF114, 0xC31B, 0x6460, + 0x14FA, 0xFA02, 0xE00F, 0xC317, 0x7460, 0x49C0, 0xF10B, 0xC311, 0x7462, + 0x48C1, 0x9C62, 0x4841, 0x9C62, 0xC30A, 0x1C04, 0x8C60, 0xE004, 0x1C15, + 0xC305, 0x8C60, 0xC602, 0xBE00, 0x0374, 0xE434, 0xE030, 0xE61C, 0xE906, + 0xC602, 0xBE00, 0x0000 + }; + + re_disable_mcu_bps(sc); + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168gu_1, ARRAY_SIZE(mcu_patch_code_8168gu_1)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC28, 0x0493); + re_mac_ocp_write(sc, 0xFC2A, 0x0205); + re_mac_ocp_write(sc, 0xFC2C, 0x0589); + re_mac_ocp_write(sc, 0xFC2E, 0x0647); + re_mac_ocp_write(sc, 0xFC30, 0x0000); + re_mac_ocp_write(sc, 0xFC32, 0x0215); + re_mac_ocp_write(sc, 0xFC34, 0x0285); +} + +static void re_set_mac_mcu_8168gu_2(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8168gu_2[] = { + 0xE008, 0xE00A, 0xE00D, 0xE02F, 0xE031, 0xE038, 0xE03A, 0xE051, 0xC202, + 0xBA00, 0x0DFC, 0x7444, 0xC502, 0xBD00, 0x0A30, 0x49D9, 0xF019, 0xC520, + 0x64A5, 0x1400, 0xF007, 0x0C01, 0x8CA5, 0x1C15, 0xC515, 0x9CA0, 0xE00F, + 0xC513, 0x74A0, 0x48C8, 0x48CA, 0x9CA0, 0xC510, 0x1B00, 0x9BA0, 0x1B1C, + 0x483F, 0x9BA2, 0x1B04, 0xC506, 0x9BA0, 0xC603, 0xBE00, 0x0298, 0x03DE, + 0xE434, 0xE096, 0xE860, 0xDE20, 0xD3C0, 0xC602, 0xBE00, 0x0A64, 0xC707, + 0x1D00, 0x8DE2, 0x48C1, 0xC502, 0xBD00, 0x00AA, 0xE0C0, 0xC502, 0xBD00, + 0x0132, 0xC50C, 0x74A2, 0x49CE, 0xF1FE, 0x1C00, 0x9EA0, 0x1C1C, 0x484F, + 0x9CA2, 0xC402, 0xBC00, 0x0AFA, 0xDE20, 0xE000, 0xE092, 0xE430, 0xDE20, + 0xE0C0, 0xE860, 0xE84C, 0xB400, 0xB430, 0xE410, 0xC0AE, 0xB407, 0xB406, + 0xB405, 0xB404, 0xB403, 0xB402, 0xB401, 0xC7EE, 0x76F4, 0xC2ED, 0xC3ED, + 0xC1EF, 0xC5F3, 0x74A0, 0x49CD, 0xF001, 0xC5EE, 0x74A0, 0x49C1, 0xF105, + 0xC5E4, 0x74A2, 0x49CE, 0xF00B, 0x7444, 0x484B, 0x9C44, 0x1C10, 0x9C62, + 0x1C11, 0x8C60, 0x1C00, 0x9CF6, 0xE0EC, 0x49E7, 0xF016, 0x1D80, 0x8DF4, + 0x74F8, 0x4843, 0x8CF8, 0x74F8, 0x74F8, 0x7444, 0x48C8, 0x48C9, 0x48CA, + 0x9C44, 0x74F8, 0x4844, 0x8CF8, 0x1E01, 0xE8DB, 0x7420, 0x48C1, 0x9C20, + 0xE0D5, 0x49E6, 0xF02A, 0x1D40, 0x8DF4, 0x74FC, 0x49C0, 0xF124, 0x49C1, + 0xF122, 0x74F8, 0x49C0, 0xF01F, 0xE8D3, 0x48C4, 0x8CF8, 0x1E00, 0xE8C6, + 0xC5B1, 0x74A0, 0x49C3, 0xF016, 0xC5AF, 0x74A4, 0x49C2, 0xF005, 0xC5AA, + 0x74B2, 0x49C9, 0xF10E, 0xC5A6, 0x74A8, 0x4845, 0x4846, 0x4847, 0x4848, + 0x9CA8, 0x74B2, 0x4849, 0x9CB2, 0x74A0, 0x484F, 0x9CA0, 0xE0AA, 0x49E4, + 0xF018, 0x1D10, 0x8DF4, 0x74F8, 0x74F8, 0x74F8, 0x4843, 0x8CF8, 0x74F8, + 0x74F8, 0x74F8, 0x4844, 0x4842, 0x4841, 0x8CF8, 0x1E01, 0xE89A, 0x7420, + 0x4841, 0x9C20, 0x7444, 0x4848, 0x9C44, 0xE091, 0x49E5, 0xF03E, 0x1D20, + 0x8DF4, 0x74F8, 0x48C2, 0x4841, 0x8CF8, 0x1E01, 0x7444, 0x49CA, 0xF103, + 0x49C2, 0xF00C, 0x49C1, 0xF004, 0x6447, 0x2244, 0xE002, 0x1C01, 0x9C62, + 0x1C11, 0x8C60, 0x1C00, 0x9CF6, 0x7444, 0x49C8, 0xF01D, 0x74FC, 0x49C0, + 0xF11A, 0x49C1, 0xF118, 0x74F8, 0x49C0, 0xF015, 0x49C6, 0xF113, 0xE875, + 0x48C4, 0x8CF8, 0x7420, 0x48C1, 0x9C20, 0xC50A, 0x74A2, 0x8CA5, 0x74A0, + 0xC505, 0x9CA2, 0x1C11, 0x9CA0, 0xE00A, 0xE434, 0xD3C0, 0xDC00, 0x7444, + 0x49CA, 0xF004, 0x48CA, 0x9C44, 0xE855, 0xE052, 0x49E8, 0xF024, 0x1D01, + 0x8DF5, 0x7440, 0x49C0, 0xF11E, 0x7444, 0x49C8, 0xF01B, 0x49CA, 0xF119, + 0xC5EC, 0x76A4, 0x49E3, 0xF015, 0x49C0, 0xF103, 0x49C1, 0xF011, 0x4849, + 0x9C44, 0x1C00, 0x9CF6, 0x7444, 0x49C1, 0xF004, 0x6446, 0x1E07, 0xE003, + 0x1C01, 0x1E03, 0x9C62, 0x1C11, 0x8C60, 0xE830, 0xE02D, 0x49E9, 0xF004, + 0x1D02, 0x8DF5, 0xE79C, 0x49E3, 0xF006, 0x1D08, 0x8DF4, 0x74F8, 0x74F8, + 0xE73A, 0x49E1, 0xF007, 0x1D02, 0x8DF4, 0x1E01, 0xE7A7, 0xDE20, 0xE410, + 0x49E0, 0xF017, 0x1D01, 0x8DF4, 0xC5FA, 0x1C00, 0x8CA0, 0x1C1B, 0x9CA2, + 0x74A2, 0x49CF, 0xF0FE, 0xC5F3, 0x74A0, 0x4849, 0x9CA0, 0x74F8, 0x49C0, + 0xF006, 0x48C3, 0x8CF8, 0xE820, 0x74F8, 0x74F8, 0xC432, 0xBC00, 0xC5E4, + 0x74A2, 0x49CE, 0xF1FE, 0x9EA0, 0x1C1C, 0x484F, 0x9CA2, 0xFF80, 0xB404, + 0xB405, 0xC5D9, 0x74A2, 0x49CE, 0xF1FE, 0xC41F, 0x9CA0, 0xC41C, 0x1C13, + 0x484F, 0x9CA2, 0x74A2, 0x49CF, 0xF1FE, 0xB005, 0xB004, 0xFF80, 0xB404, + 0xB405, 0xC5C7, 0x74A2, 0x49CE, 0xF1FE, 0xC40E, 0x9CA0, 0xC40A, 0x1C13, + 0x484F, 0x9CA2, 0x74A2, 0x49CF, 0xF1FE, 0xB005, 0xB004, 0xFF80, 0x0000, + 0x0481, 0x0C81, 0x0AE0 + }; + + re_disable_mcu_bps(sc); + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168gu_2, ARRAY_SIZE(mcu_patch_code_8168gu_2)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC28, 0x0000); + re_mac_ocp_write(sc, 0xFC2A, 0x0000); + re_mac_ocp_write(sc, 0xFC2C, 0x0297); + re_mac_ocp_write(sc, 0xFC2E, 0x0000); + re_mac_ocp_write(sc, 0xFC30, 0x00A9); + re_mac_ocp_write(sc, 0xFC32, 0x012D); + re_mac_ocp_write(sc, 0xFC34, 0x0000); + re_mac_ocp_write(sc, 0xFC36, 0x08DF); +} + +static void re_set_mac_mcu_8168ep_1(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8168ep_1[] = { + 0xE008, 0xE0D3, 0xE0D6, 0xE0D9, 0xE0DB, 0xE0DD, 0xE0DF, 0xE0E1, 0xC251, + 0x7340, 0x49B1, 0xF010, 0x1D02, 0x8D40, 0xC202, 0xBA00, 0x2C3A, 0xC0F0, + 0xE8DE, 0x2000, 0x8000, 0xC0B6, 0x268C, 0x752C, 0x49D4, 0xF112, 0xE025, + 0xC2F6, 0x7146, 0xC2F5, 0x7340, 0x49BE, 0xF103, 0xC7F2, 0xE002, 0xC7F1, + 0x304F, 0x6226, 0x49A1, 0xF1F0, 0x7222, 0x49A0, 0xF1ED, 0x2525, 0x1F28, + 0x3097, 0x3091, 0x9A36, 0x752C, 0x21DC, 0x25BC, 0xC6E2, 0x77C0, 0x1304, + 0xF014, 0x1303, 0xF014, 0x1302, 0xF014, 0x1301, 0xF014, 0x49D4, 0xF103, + 0xC3D7, 0xBB00, 0xC618, 0x67C6, 0x752E, 0x22D7, 0x26DD, 0x1505, 0xF013, + 0xC60A, 0xBE00, 0xC309, 0xBB00, 0xC308, 0xBB00, 0xC307, 0xBB00, 0xC306, + 0xBB00, 0x25C8, 0x25A6, 0x25AC, 0x25B2, 0x25B8, 0xCD08, 0x0000, 0xC0BC, + 0xC2FF, 0x7340, 0x49B0, 0xF04E, 0x1F46, 0x308F, 0xC3F7, 0x1C04, 0xE84D, + 0x1401, 0xF147, 0x7226, 0x49A7, 0xF044, 0x7222, 0x2525, 0x1F30, 0x3097, + 0x3091, 0x7340, 0xC4EA, 0x401C, 0xF006, 0xC6E8, 0x75C0, 0x49D7, 0xF105, + 0xE036, 0x1D08, 0x8DC1, 0x0208, 0x6640, 0x2764, 0x1606, 0xF12F, 0x6346, + 0x133B, 0xF12C, 0x9B34, 0x1B18, 0x3093, 0xC32A, 0x1C10, 0xE82A, 0x1401, + 0xF124, 0x1A36, 0x308A, 0x7322, 0x25B5, 0x0B0E, 0x1C00, 0xE82C, 0xC71F, + 0x4027, 0xF11A, 0xE838, 0x1F42, 0x308F, 0x1B08, 0xE824, 0x7236, 0x7746, + 0x1700, 0xF00D, 0xC313, 0x401F, 0xF103, 0x1F00, 0x9F46, 0x7744, 0x449F, + 0x445F, 0xE817, 0xC70A, 0x4027, 0xF105, 0xC302, 0xBB00, 0x2E08, 0x2DC2, + 0xC7FF, 0xBF00, 0xCDB8, 0xFFFF, 0x0C02, 0xA554, 0xA5DC, 0x402F, 0xF105, + 0x1400, 0xF1FA, 0x1C01, 0xE002, 0x1C00, 0xFF80, 0x49B0, 0xF004, 0x0B01, + 0xA1D3, 0xE003, 0x0B02, 0xA5D3, 0x3127, 0x3720, 0x0B02, 0xA5D3, 0x3127, + 0x3720, 0x1300, 0xF1FB, 0xFF80, 0x7322, 0x25B5, 0x1E28, 0x30DE, 0x30D9, + 0x7264, 0x1E11, 0x2368, 0x3116, 0xFF80, 0x1B7E, 0xC602, 0xBE00, 0x06A6, + 0x1B7E, 0xC602, 0xBE00, 0x0764, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, + 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, + 0x0000 + }; + + re_disable_mcu_bps(sc); + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168ep_1, ARRAY_SIZE(mcu_patch_code_8168ep_1)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC28, 0x2549); + re_mac_ocp_write(sc, 0xFC2A, 0x06A5); + re_mac_ocp_write(sc, 0xFC2C, 0x0763); +} + +static bool re_check_dash_other_fun_present(struct re_softc *sc) +{ + //check if func 2 exist + if (re_csi_other_fun_read(sc, 2, 0xf000) != 0xffffffff) + return true; + + return false; +} + +static void re_set_mac_mcu_8168ep_2(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8168ep_2[] = { + 0xE008, 0xE017, 0xE052, 0xE056, 0xE058, 0xE05A, 0xE05C, 0xE05E, 0xC50F, + 0x76A4, 0x49E3, 0xF007, 0x49C0, 0xF103, 0xC607, 0xBE00, 0xC606, 0xBE00, + 0xC602, 0xBE00, 0x0BDA, 0x0BB6, 0x0BBA, 0xDC00, 0xB400, 0xB401, 0xB402, + 0xB403, 0xB404, 0xC02E, 0x7206, 0x49AE, 0xF1FE, 0xC12B, 0x9904, 0xC12A, + 0x9906, 0x7206, 0x49AE, 0xF1FE, 0x7200, 0x49A0, 0xF117, 0xC123, 0xC223, + 0xC323, 0xE808, 0xC322, 0xE806, 0xC321, 0xE804, 0xC320, 0xE802, 0xE00C, + 0x740E, 0x49CE, 0xF1FE, 0x9908, 0x990A, 0x9A0C, 0x9B0E, 0x740E, 0x49CE, + 0xF1FE, 0xFF80, 0xB004, 0xB003, 0xB002, 0xB001, 0xB000, 0xC604, 0xC002, + 0xB800, 0x1FC8, 0xE000, 0xE8E0, 0xF128, 0x0002, 0xFFFF, 0xF000, 0x8001, + 0x8002, 0x8003, 0x8004, 0x48C1, 0x48C2, 0xC502, 0xBD00, 0x0490, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000 + }; + + re_disable_mcu_bps(sc); + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168ep_2, ARRAY_SIZE(mcu_patch_code_8168ep_2)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC28, 0x0BB3); + if (false == re_check_dash_other_fun_present(sc)) + re_mac_ocp_write(sc, 0xFC2A, 0x1FC7); + //re_mac_ocp_write(sc, 0xFC2C, 0x0485); +} + +static void re_set_mac_mcu_8411b_1(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8411b_1[] = { + 0xE008, 0xE00A, 0xE00C, 0xE00E, 0xE027, 0xE04F, 0xE05E, 0xE065, 0xC602, + 0xBE00, 0x0000, 0xC502, 0xBD00, 0x074C, 0xC302, 0xBB00, 0x080A, 0x6420, + 0x48C2, 0x8C20, 0xC516, 0x64A4, 0x49C0, 0xF009, 0x74A2, 0x8CA5, 0x74A0, + 0xC50E, 0x9CA2, 0x1C11, 0x9CA0, 0xE006, 0x74F8, 0x48C4, 0x8CF8, 0xC404, + 0xBC00, 0xC403, 0xBC00, 0x0BF2, 0x0C0A, 0xE434, 0xD3C0, 0x49D9, 0xF01F, + 0xC526, 0x64A5, 0x1400, 0xF007, 0x0C01, 0x8CA5, 0x1C15, 0xC51B, 0x9CA0, + 0xE013, 0xC519, 0x74A0, 0x48C4, 0x8CA0, 0xC516, 0x74A4, 0x48C8, 0x48CA, + 0x9CA4, 0xC512, 0x1B00, 0x9BA0, 0x1B1C, 0x483F, 0x9BA2, 0x1B04, 0xC508, + 0x9BA0, 0xC505, 0xBD00, 0xC502, 0xBD00, 0x0300, 0x051E, 0xE434, 0xE018, + 0xE092, 0xDE20, 0xD3C0, 0xC50F, 0x76A4, 0x49E3, 0xF007, 0x49C0, 0xF103, + 0xC607, 0xBE00, 0xC606, 0xBE00, 0xC602, 0xBE00, 0x0C4C, 0x0C28, 0x0C2C, + 0xDC00, 0xC707, 0x1D00, 0x8DE2, 0x48C1, 0xC502, 0xBD00, 0x00AA, 0xE0C0, + 0xC502, 0xBD00, 0x0132 + }; + + re_disable_mcu_bps(sc); + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8411b_1, ARRAY_SIZE(mcu_patch_code_8411b_1)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC2A, 0x0743); + re_mac_ocp_write(sc, 0xFC2C, 0x0801); + re_mac_ocp_write(sc, 0xFC2E, 0x0BE9); + re_mac_ocp_write(sc, 0xFC30, 0x02FD); + re_mac_ocp_write(sc, 0xFC32, 0x0C25); + re_mac_ocp_write(sc, 0xFC34, 0x00A9); + re_mac_ocp_write(sc, 0xFC36, 0x012D); +} + +static void re_set_mac_mcu_8168h_1(struct re_softc *sc) +{ + re_disable_mcu_bps(sc); +} + +static void re_set_mac_mcu_8168h_2(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8168h_2[] = { + 0xE008, 0xE00F, 0xE011, 0xE047, 0xE049, 0xE073, 0xE075, 0xE07A, 0xC707, + 0x1D00, 0x8DE2, 0x48C1, 0xC502, 0xBD00, 0x00E4, 0xE0C0, 0xC502, 0xBD00, + 0x0216, 0xC634, 0x75C0, 0x49D3, 0xF027, 0xC631, 0x75C0, 0x49D3, 0xF123, + 0xC627, 0x75C0, 0xB405, 0xC525, 0x9DC0, 0xC621, 0x75C8, 0x49D5, 0xF00A, + 0x49D6, 0xF008, 0x49D7, 0xF006, 0x49D8, 0xF004, 0x75D2, 0x49D9, 0xF111, + 0xC517, 0x9DC8, 0xC516, 0x9DD2, 0xC618, 0x75C0, 0x49D4, 0xF003, 0x49D0, + 0xF104, 0xC60A, 0xC50E, 0x9DC0, 0xB005, 0xC607, 0x9DC0, 0xB007, 0xC602, + 0xBE00, 0x1A06, 0xB400, 0xE86C, 0xA000, 0x01E1, 0x0200, 0x9200, 0xE84C, + 0xE004, 0xE908, 0xC502, 0xBD00, 0x0B58, 0xB407, 0xB404, 0x2195, 0x25BD, + 0x9BE0, 0x1C1C, 0x484F, 0x9CE2, 0x72E2, 0x49AE, 0xF1FE, 0x0B00, 0xF116, + 0xC71C, 0xC419, 0x9CE0, 0x1C13, 0x484F, 0x9CE2, 0x74E2, 0x49CE, 0xF1FE, + 0xC412, 0x9CE0, 0x1C13, 0x484F, 0x9CE2, 0x74E2, 0x49CE, 0xF1FE, 0xC70C, + 0x74F8, 0x48C3, 0x8CF8, 0xB004, 0xB007, 0xC502, 0xBD00, 0x0F24, 0x0481, + 0x0C81, 0xDE24, 0xE000, 0xC602, 0xBE00, 0x0CA4, 0x48C1, 0x48C2, 0x9C46, + 0xC402, 0xBC00, 0x0578, 0xC602, 0xBE00, 0x0000 + }; + + re_disable_mcu_bps(sc); + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168h_2, ARRAY_SIZE(mcu_patch_code_8168h_2)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC28, 0x00E2); + re_mac_ocp_write(sc, 0xFC2A, 0x0210); + re_mac_ocp_write(sc, 0xFC2C, 0x1A04); + re_mac_ocp_write(sc, 0xFC2E, 0x0B26); + re_mac_ocp_write(sc, 0xFC30, 0x0F02); + re_mac_ocp_write(sc, 0xFC32, 0x0CA0); + //re_mac_ocp_write(sc, 0xFC34, 0x056C); + + if (sc->re_device_id == RT_DEVICEID_8136) + re_mac_ocp_write(sc, 0xFC38, 0x0033); + else + re_mac_ocp_write(sc, 0xFC38, 0x003F); +} + +static void re_set_mac_mcu_8168h_3(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8168h_3[] = { + 0xE008, 0xE00A, 0xE00C, 0xE00E, 0xE010, 0xE03E, 0xE040, 0xE069, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC002, 0xB800, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC72B, 0x76E2, 0x49EE, 0xF1FD, 0x1E00, 0x9EE0, 0x1E1C, + 0x9EE2, 0x76E2, 0x49EE, 0xF1FE, 0xC621, 0x9EE0, 0x1E1D, 0x486F, 0x9EE2, + 0x76E2, 0x49EE, 0xF1FE, 0xC71A, 0x76E0, 0x48E8, 0x48E9, 0x48EA, 0x48EB, + 0x48EC, 0x9EE0, 0xC70D, 0xC60D, 0x9EF4, 0xC60C, 0x9EF6, 0xC70E, 0x76E0, + 0x4863, 0x9EE0, 0xB007, 0xC602, 0xBE00, 0x0ACC, 0xE000, 0x03BF, 0x07FF, + 0xDE24, 0x3200, 0xE096, 0xD438, 0xC602, 0xBE00, 0x0000, 0x8EE6, 0xC726, + 0x76E2, 0x49EE, 0xF1FD, 0x1E00, 0x8EE0, 0x1E1C, 0x8EE2, 0x76E2, 0x49EE, + 0xF1FE, 0xC61C, 0x8EE0, 0x1E1D, 0x486F, 0x8EE2, 0x76E2, 0x49EE, 0xF1FE, + 0xC715, 0x76E0, 0x48E8, 0x48E9, 0x48EA, 0x48EB, 0x48EC, 0x9EE0, 0xC708, + 0xC608, 0x9EF4, 0xC607, 0x9EF6, 0xC602, 0xBE00, 0x0ABE, 0xE000, 0x03BF, + 0x07FF, 0xDE24, 0x3200, 0xE096, 0xC602, 0xBE00, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6838, 0x0A17, 0x0613, 0x0D26 + }; + + re_disable_mcu_bps(sc); + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168h_3, ARRAY_SIZE(mcu_patch_code_8168h_3)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC30, 0x0ACA); + + re_mac_ocp_write(sc, 0xFC38, 0x0010); +} + +static void re_set_mac_mcu_8168h_4(struct re_softc *sc) +{ + re_disable_mcu_bps(sc); +} + +static void re_set_mac_mcu_8168fp_1(struct re_softc *sc) +{ + uint16_t breakPointEnabled = 0; + + re_disable_mcu_bps(sc); + + if(sc->HwPkgDet == 0x00 || sc->HwPkgDet == 0x0F) { + static const uint16_t mcu_patch_code_8168fp_1_1[] = { + 0xE00A, 0xE0C1, 0xE104, 0xE108, 0xE10D, 0xE112, 0xE11C, 0xE121, 0xE000, + 0xE0C8, 0xB400, 0xC1FE, 0x49E2, 0xF04C, 0x49EA, 0xF04A, 0x74E6, 0xC246, + 0x7542, 0x73EC, 0x1800, 0x49C0, 0xF10D, 0x49C1, 0xF10B, 0x49C2, 0xF109, + 0x49B0, 0xF107, 0x49B1, 0xF105, 0x7220, 0x49A2, 0xF102, 0xE002, 0x4800, + 0x49D0, 0xF10A, 0x49D1, 0xF108, 0x49D2, 0xF106, 0x49D3, 0xF104, 0x49DF, + 0xF102, 0xE00C, 0x4801, 0x72E4, 0x49AD, 0xF108, 0xC225, 0x6741, 0x48F0, + 0x8F41, 0x4870, 0x8F41, 0xC7CF, 0x49B5, 0xF01F, 0x49B2, 0xF00B, 0x4980, + 0xF003, 0x484E, 0x94E7, 0x4981, 0xF004, 0x485E, 0xC212, 0x9543, 0xE071, + 0x49B6, 0xF003, 0x49B3, 0xF10F, 0x4980, 0xF003, 0x484E, 0x94E7, 0x4981, + 0xF004, 0x485E, 0xC204, 0x9543, 0xE005, 0xE000, 0xE0FC, 0xE0FA, 0xE065, + 0x49B7, 0xF007, 0x4980, 0xF005, 0x1A38, 0x46D4, 0x1200, 0xF109, 0x4981, + 0xF055, 0x49C3, 0xF105, 0x1A30, 0x46D5, 0x1200, 0xF04F, 0x7220, 0x49A2, + 0xF130, 0x49C1, 0xF12E, 0x49B0, 0xF12C, 0xC2E6, 0x7240, 0x49A8, 0xF003, + 0x49D0, 0xF126, 0x49A9, 0xF003, 0x49D1, 0xF122, 0x49AA, 0xF003, 0x49D2, + 0xF11E, 0x49AB, 0xF003, 0x49DF, 0xF11A, 0x49AC, 0xF003, 0x49D3, 0xF116, + 0x4980, 0xF003, 0x49C7, 0xF105, 0x4981, 0xF02C, 0x49D7, 0xF02A, 0x49C0, + 0xF00C, 0xC721, 0x62F4, 0x49A0, 0xF008, 0x49A4, 0xF106, 0x4824, 0x8AF4, + 0xC71A, 0x1A40, 0x9AE0, 0x49B6, 0xF017, 0x200E, 0xC7B8, 0x72E0, 0x4710, + 0x92E1, 0xC70E, 0x77E0, 0x49F0, 0xF112, 0xC70B, 0x77E0, 0x27FE, 0x1AFA, + 0x4317, 0xC705, 0x9AE2, 0x1A11, 0x8AE0, 0xE008, 0xE41C, 0xC0AE, 0xD23A, + 0xC7A2, 0x74E6, 0x484F, 0x94E7, 0xC79E, 0x8CE6, 0x8BEC, 0xC29C, 0x8D42, + 0x7220, 0xB000, 0xC502, 0xBD00, 0x0932, 0xB400, 0xC240, 0xC340, 0x7060, + 0x498F, 0xF014, 0x488F, 0x9061, 0x744C, 0x49C3, 0xF004, 0x7562, 0x485E, + 0x9563, 0x7446, 0x49C3, 0xF106, 0x7562, 0x1C30, 0x46E5, 0x1200, 0xF004, + 0x7446, 0x484F, 0x9447, 0xC32A, 0x7466, 0x49C0, 0xF00F, 0x48C0, 0x9C66, + 0x7446, 0x4840, 0x4841, 0x4842, 0x9C46, 0x744C, 0x4840, 0x9C4C, 0x744A, + 0x484A, 0x9C4A, 0xE013, 0x498E, 0xF011, 0x488E, 0x9061, 0x744C, 0x49C3, + 0xF004, 0x7446, 0x484E, 0x9447, 0x7446, 0x1D38, 0x46EC, 0x1500, 0xF004, + 0x7446, 0x484F, 0x9447, 0xB000, 0xC502, 0xBD00, 0x074C, 0xE000, 0xE0FC, + 0xE0C0, 0x4830, 0x4837, 0xC502, 0xBD00, 0x0978, 0x63E2, 0x4830, 0x4837, + 0xC502, 0xBD00, 0x09FE, 0x73E2, 0x4830, 0x8BE2, 0xC302, 0xBB00, 0x0A12, + 0x73E2, 0x48B0, 0x48B3, 0x48B4, 0x48B5, 0x48B6, 0x48B7, 0x8BE2, 0xC302, + 0xBB00, 0x0A5A, 0x73E2, 0x4830, 0x8BE2, 0xC302, 0xBB00, 0x0A6C, 0x73E2, + 0x4830, 0x4837, 0xC502, 0xBD00, 0x0A86 + }; + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168fp_1_1, ARRAY_SIZE(mcu_patch_code_8168fp_1_1)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC28, 0x0890); + re_mac_ocp_write(sc, 0xFC2A, 0x0712); + re_mac_ocp_write(sc, 0xFC2C, 0x0974); + re_mac_ocp_write(sc, 0xFC2E, 0x09FC); + re_mac_ocp_write(sc, 0xFC30, 0x0A0E); + re_mac_ocp_write(sc, 0xFC32, 0x0A56); + re_mac_ocp_write(sc, 0xFC34, 0x0A68); + re_mac_ocp_write(sc, 0xFC36, 0x0A84); + + } else if (sc->HwPkgDet == 0x05 || sc->HwPkgDet == 0x06) { + static const uint16_t mcu_patch_code_8168fp_1_2[] = { + 0xE008, 0xE00A, 0xE031, 0xE033, 0xE035, 0xE144, 0xE166, 0xE168, 0xC502, + 0xBD00, 0x0000, 0xC725, 0x75E0, 0x48D0, 0x9DE0, 0xC722, 0x75E0, 0x1C78, + 0x416C, 0x1530, 0xF111, 0xC71D, 0x75F6, 0x49D1, 0xF00D, 0x75E0, 0x1C1F, + 0x416C, 0x1502, 0xF108, 0x75FA, 0x49D3, 0xF005, 0x75EC, 0x9DE4, 0x4853, + 0x9DFA, 0xC70B, 0x75E0, 0x4852, 0x4850, 0x9DE0, 0xC602, 0xBE00, 0x04B8, + 0xE420, 0xE000, 0xE0FC, 0xE43C, 0xDC00, 0xEB00, 0xC202, 0xBA00, 0x0000, + 0xC002, 0xB800, 0x0000, 0xB401, 0xB402, 0xB403, 0xB404, 0xB405, 0xB406, + 0xC44D, 0xC54D, 0x1867, 0xE8A2, 0x2318, 0x276E, 0x1601, 0xF106, 0x1A07, + 0xE861, 0xE86B, 0xE873, 0xE037, 0x231E, 0x276E, 0x1602, 0xF10B, 0x1A07, + 0xE858, 0xE862, 0xC247, 0xC344, 0xE8E3, 0xC73B, 0x66E0, 0xE8B5, 0xE029, + 0x231A, 0x276C, 0xC733, 0x9EE0, 0x1866, 0xE885, 0x251C, 0x120F, 0xF011, + 0x1209, 0xF011, 0x2014, 0x240E, 0x1000, 0xF007, 0x120C, 0xF00D, 0x1203, + 0xF00D, 0x1200, 0xF00D, 0x120C, 0xF00D, 0x1203, 0xF00D, 0x1A03, 0xE00C, + 0x1A07, 0xE00A, 0x1A00, 0xE008, 0x1A01, 0xE006, 0x1A02, 0xE004, 0x1A04, + 0xE002, 0x1A05, 0xE829, 0xE833, 0xB006, 0xB005, 0xB004, 0xB003, 0xB002, + 0xB001, 0x60C4, 0xC702, 0xBF00, 0x2786, 0xDD00, 0xD030, 0xE0C4, 0xE0F8, + 0xDC42, 0xD3F0, 0x0000, 0x0004, 0x0007, 0x0014, 0x0090, 0x1000, 0x0F00, + 0x1004, 0x1008, 0x3000, 0x3004, 0x3008, 0x4000, 0x7777, 0x8000, 0x8001, + 0x8008, 0x8003, 0x8004, 0xC000, 0xC004, 0xF004, 0xFFFF, 0xB406, 0xB407, + 0xC6E5, 0x77C0, 0x27F3, 0x23F3, 0x47FA, 0x9FC0, 0xB007, 0xB006, 0xFF80, + 0xB405, 0xB407, 0xC7D8, 0x75E0, 0x48D0, 0x9DE0, 0xB007, 0xB005, 0xFF80, + 0xB401, 0xC0EA, 0xC2DC, 0xC3D8, 0xE865, 0xC0D3, 0xC1E0, 0xC2E3, 0xE861, + 0xE817, 0xC0CD, 0xC2CF, 0xE85D, 0xC0C9, 0xC1D6, 0xC2DB, 0xE859, 0xE80F, + 0xC1C7, 0xC2CE, 0xE855, 0xC0C0, 0xC1D1, 0xC2D3, 0xE851, 0xE807, 0xC0BE, + 0xC2C2, 0xE84D, 0xE803, 0xB001, 0xFF80, 0xB402, 0xC2C6, 0xE859, 0x499F, + 0xF1FE, 0xB002, 0xFF80, 0xB402, 0xB403, 0xB407, 0xE821, 0x8882, 0x1980, + 0x8983, 0xE81D, 0x7180, 0x218B, 0x25BB, 0x1310, 0xF014, 0x1310, 0xFB03, + 0x1F20, 0x38FB, 0x3288, 0x434B, 0x2491, 0x430B, 0x1F0F, 0x38FB, 0x4313, + 0x2121, 0x4353, 0x2521, 0x418A, 0x6282, 0x2527, 0x212F, 0x418A, 0xB007, + 0xB003, 0xB002, 0xFF80, 0x6183, 0x2496, 0x1100, 0xF1FD, 0xFF80, 0x4800, + 0x4801, 0xC213, 0xC313, 0xE815, 0x4860, 0x8EE0, 0xC210, 0xC310, 0xE822, + 0x481E, 0xC20C, 0xC30C, 0xE80C, 0xC206, 0x7358, 0x483A, 0x9B58, 0xFF80, + 0xE8E0, 0xE000, 0x1008, 0x0F00, 0x800C, 0x0F00, 0xB407, 0xB406, 0xB403, + 0xC7F7, 0x98E0, 0x99E2, 0x9AE4, 0x21B2, 0x4831, 0x483F, 0x9BE6, 0x66E7, + 0x49E6, 0xF1FE, 0xB003, 0xB006, 0xB007, 0xFF80, 0xB407, 0xB406, 0xB403, + 0xC7E5, 0x9AE4, 0x21B2, 0x4831, 0x9BE6, 0x66E7, 0x49E6, 0xF1FE, 0x70E0, + 0x71E2, 0xB003, 0xB006, 0xB007, 0xFF80, 0x4882, 0xB406, 0xB405, 0xC71E, + 0x76E0, 0x1D78, 0x4175, 0x1630, 0xF10C, 0xC715, 0x76E0, 0x4861, 0x9EE0, + 0xC713, 0x1EFF, 0x9EE2, 0x75E0, 0x4850, 0x9DE0, 0xE005, 0xC70B, 0x76E0, + 0x4865, 0x9EE0, 0xB005, 0xB006, 0xC708, 0xC102, 0xB900, 0x279E, 0xEB16, + 0xEB00, 0xE43C, 0xDC00, 0xD3EC, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, + 0x0000 + }; + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168fp_1_2, ARRAY_SIZE(mcu_patch_code_8168fp_1_2)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC28, 0x0000); + re_mac_ocp_write(sc, 0xFC2A, 0x04b4); + re_mac_ocp_write(sc, 0xFC2C, 0x0000); + re_mac_ocp_write(sc, 0xFC2E, 0x0000); + re_mac_ocp_write(sc, 0xFC30, 0x0000); + re_mac_ocp_write(sc, 0xFC32, 0x279C); + re_mac_ocp_write(sc, 0xFC34, 0x0000); + re_mac_ocp_write(sc, 0xFC36, 0x0000); + } + + if (sc->HwPkgDet == 0x00) + breakPointEnabled = 0x00FC; + else if (sc->HwPkgDet == 0x0F) + breakPointEnabled = 0x00FF; + else if (sc->HwPkgDet == 0x05 || sc->HwPkgDet == 0x06) + breakPointEnabled = 0x0022; + + re_mac_ocp_write(sc, 0xFC38, breakPointEnabled); +} + +static void re_set_mac_mcu_8168fp_8116as_2(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8168fp_2[] = { + 0xE008, 0xE00A, 0xE00F, 0xE014, 0xE016, 0xE018, 0xE01A, 0xE01C, 0xC602, + 0xBE00, 0x2AB2, 0x1BC0, 0x46EB, 0x1BFE, 0xC102, 0xB900, 0x0B1A, 0x1BC0, + 0x46EB, 0x1B7E, 0xC102, 0xB900, 0x0BEA, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000 + }; + + re_disable_mcu_bps(sc); + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168fp_2, ARRAY_SIZE(mcu_patch_code_8168fp_2)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC28, 0x2AAC); + re_mac_ocp_write(sc, 0xFC2A, 0x0B14); + re_mac_ocp_write(sc, 0xFC2C, 0x0BE4); + + re_mac_ocp_write(sc, 0xFC38, 0x0007); +} + +static void _re_set_mac_mcu_8168fp_2(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8168fp_2[] = { + 0xE008, 0xE00A, 0xE00F, 0xE014, 0xE05F, 0xE064, 0xE066, 0xE068, 0xC602, + 0xBE00, 0x0000, 0x1BC0, 0x46EB, 0x1BFE, 0xC102, 0xB900, 0x0B1A, 0x1BC0, + 0x46EB, 0x1B7E, 0xC102, 0xB900, 0x0BEA, 0xB400, 0xB401, 0xB402, 0xB403, + 0xB404, 0xB405, 0xC03A, 0x7206, 0x49AE, 0xF1FE, 0xC137, 0x9904, 0xC136, + 0x9906, 0x7206, 0x49AE, 0xF1FE, 0x7200, 0x49A0, 0xF10B, 0xC52F, 0xC12E, + 0xC232, 0xC332, 0xE812, 0xC331, 0xE810, 0xC330, 0xE80E, 0xE018, 0xC126, + 0xC229, 0xC525, 0xC328, 0xE808, 0xC523, 0xC326, 0xE805, 0xC521, 0xC324, + 0xE802, 0xE00C, 0x740E, 0x49CE, 0xF1FE, 0x9908, 0x9D0A, 0x9A0C, 0x9B0E, + 0x740E, 0x49CE, 0xF1FE, 0xFF80, 0xB005, 0xB004, 0xB003, 0xB002, 0xB001, + 0xB000, 0xC604, 0xC002, 0xB800, 0x2A5E, 0xE000, 0xE8E0, 0xF128, 0x3DC2, + 0xFFFF, 0x10EC, 0x816A, 0x816D, 0x816C, 0xF000, 0x8002, 0x8004, 0x8007, + 0x48C1, 0x48C2, 0x9C46, 0xC402, 0xBC00, 0x07BC, 0xC602, 0xBE00, 0x0000, + 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000 + }; + + re_disable_mcu_bps(sc); + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168fp_2, ARRAY_SIZE(mcu_patch_code_8168fp_2)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC28, 0x2AAC); + re_mac_ocp_write(sc, 0xFC2A, 0x0B14); + re_mac_ocp_write(sc, 0xFC2C, 0x0BE4); + re_mac_ocp_write(sc, 0xFC2E, 0x2A5C); + //re_mac_ocp_write(sc, 0xFC30, 0x07B0); + + if (true == re_check_dash_other_fun_present(sc)) + re_mac_ocp_write(sc, 0xFC38, 0x0006); + else + re_mac_ocp_write(sc, 0xFC38, 0x000E); +} + +static void re_set_mac_mcu_8168fp_2(struct re_softc *sc) +{ + if (sc->hw_hw_supp_serdes_phy_ver == 1) + re_set_mac_mcu_8168fp_8116as_2(sc); + else + _re_set_mac_mcu_8168fp_2(sc); +} + +static void re_set_mac_mcu_8168fp_3(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8168fp_3[] = { + 0xE008, 0xE053, 0xE058, 0xE05A, 0xE05C, 0xE05E, 0xE060, 0xE062, 0xB400, + 0xB401, 0xB402, 0xB403, 0xB404, 0xB405, 0xC03A, 0x7206, 0x49AE, 0xF1FE, + 0xC137, 0x9904, 0xC136, 0x9906, 0x7206, 0x49AE, 0xF1FE, 0x7200, 0x49A0, + 0xF10B, 0xC52F, 0xC12E, 0xC232, 0xC332, 0xE812, 0xC331, 0xE810, 0xC330, + 0xE80E, 0xE018, 0xC126, 0xC229, 0xC525, 0xC328, 0xE808, 0xC523, 0xC326, + 0xE805, 0xC521, 0xC324, 0xE802, 0xE00C, 0x740E, 0x49CE, 0xF1FE, 0x9908, + 0x9D0A, 0x9A0C, 0x9B0E, 0x740E, 0x49CE, 0xF1FE, 0xFF80, 0xB005, 0xB004, + 0xB003, 0xB002, 0xB001, 0xB000, 0xC604, 0xC002, 0xB800, 0x2B16, 0xE000, + 0xE8E0, 0xF128, 0x3DC2, 0xFFFF, 0x10EC, 0x816A, 0x816D, 0x816C, 0xF000, + 0x8002, 0x8004, 0x8007, 0x48C1, 0x48C2, 0x9C46, 0xC402, 0xBC00, 0x07BC, + 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, + 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000 + }; + + re_disable_mcu_bps(sc); + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168fp_3, ARRAY_SIZE(mcu_patch_code_8168fp_3)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC28, 0x2B14); + //re_mac_ocp_write(sc, 0xFC2A, 0x07B0); + + if (true == re_check_dash_other_fun_present(sc)) + re_mac_ocp_write(sc, 0xFC38, 0x0000); + else + re_mac_ocp_write(sc, 0xFC38, 0x0001); +} + +static void re_set_mac_mcu_8168fp_4(struct re_softc *sc) +{ + re_disable_mcu_bps(sc); +} + +static void re_set_mac_mcu_8125a_1(struct re_softc *sc) +{ + re_disable_mcu_bps(sc); +} + +static void re_set_mac_mcu_8125a_2(struct re_softc *sc) +{ + static const u_int16_t mcu_patch_code_8125a_2[] = { + 0xE010, 0xE012, 0xE022, 0xE024, 0xE029, 0xE02B, 0xE094, 0xE09D, 0xE09F, + 0xE0AA, 0xE0B5, 0xE0C6, 0xE0CC, 0xE0D1, 0xE0D6, 0xE0D8, 0xC602, 0xBE00, + 0x0000, 0xC60F, 0x73C4, 0x49B3, 0xF106, 0x73C2, 0xC608, 0xB406, 0xC609, + 0xFF80, 0xC605, 0xB406, 0xC605, 0xFF80, 0x0544, 0x0568, 0xE906, 0xCDE8, + 0xC602, 0xBE00, 0x0000, 0x48C1, 0x48C2, 0x9C46, 0xC402, 0xBC00, 0x0A12, + 0xC602, 0xBE00, 0x0EBA, 0x1501, 0xF02A, 0x1500, 0xF15D, 0xC661, 0x75C8, + 0x49D5, 0xF00A, 0x49D6, 0xF008, 0x49D7, 0xF006, 0x49D8, 0xF004, 0x75D2, + 0x49D9, 0xF150, 0xC553, 0x77A0, 0x75C8, 0x4855, 0x4856, 0x4857, 0x4858, + 0x48DA, 0x48DB, 0x49FE, 0xF002, 0x485A, 0x49FF, 0xF002, 0x485B, 0x9DC8, + 0x75D2, 0x4859, 0x9DD2, 0xC643, 0x75C0, 0x49D4, 0xF033, 0x49D0, 0xF137, + 0xE030, 0xC63A, 0x75C8, 0x49D5, 0xF00E, 0x49D6, 0xF00C, 0x49D7, 0xF00A, + 0x49D8, 0xF008, 0x75D2, 0x49D9, 0xF005, 0xC62E, 0x75C0, 0x49D7, 0xF125, + 0xC528, 0x77A0, 0xC627, 0x75C8, 0x4855, 0x4856, 0x4857, 0x4858, 0x48DA, + 0x48DB, 0x49FE, 0xF002, 0x485A, 0x49FF, 0xF002, 0x485B, 0x9DC8, 0x75D2, + 0x4859, 0x9DD2, 0xC616, 0x75C0, 0x4857, 0x9DC0, 0xC613, 0x75C0, 0x49DA, + 0xF003, 0x49D0, 0xF107, 0xC60B, 0xC50E, 0x48D9, 0x9DC0, 0x4859, 0x9DC0, + 0xC608, 0xC702, 0xBF00, 0x3AE0, 0xE860, 0xB400, 0xB5D4, 0xE908, 0xE86C, + 0x1200, 0xC409, 0x6780, 0x48F1, 0x8F80, 0xC404, 0xC602, 0xBE00, 0x10AA, + 0xC010, 0xEA7C, 0xC602, 0xBE00, 0x0000, 0x740A, 0x4846, 0x4847, 0x9C0A, + 0xC607, 0x74C0, 0x48C6, 0x9CC0, 0xC602, 0xBE00, 0x13FE, 0xE054, 0x72CA, + 0x4826, 0x4827, 0x9ACA, 0xC607, 0x72C0, 0x48A6, 0x9AC0, 0xC602, 0xBE00, + 0x07DC, 0xE054, 0xC60F, 0x74C4, 0x49CC, 0xF109, 0xC60C, 0x74CA, 0x48C7, + 0x9CCA, 0xC609, 0x74C0, 0x4846, 0x9CC0, 0xC602, 0xBE00, 0x2480, 0xE092, + 0xE0C0, 0xE054, 0x7420, 0x48C0, 0x9C20, 0x7444, 0xC602, 0xBE00, 0x12F8, + 0x1BFF, 0x46EB, 0x1BFF, 0xC102, 0xB900, 0x0D5A, 0x1BFF, 0x46EB, 0x1BFF, + 0xC102, 0xB900, 0x0E2A, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6486, + 0x0B15, 0x090E, 0x1139 + }; + + re_disable_mcu_bps(sc); + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8125a_2, ARRAY_SIZE(mcu_patch_code_8125a_2)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC2A, 0x0540); + re_mac_ocp_write(sc, 0xFC2E, 0x0A06); + re_mac_ocp_write(sc, 0xFC30, 0x0EB8); + re_mac_ocp_write(sc, 0xFC32, 0x3A5C); + re_mac_ocp_write(sc, 0xFC34, 0x10A8); + re_mac_ocp_write(sc, 0xFC40, 0x0D54); + re_mac_ocp_write(sc, 0xFC42, 0x0E24); + + re_mac_ocp_write(sc, 0xFC48, 0x307A); +} + +static void re_set_mac_mcu_8125b_1(struct re_softc *sc) +{ + re_disable_mcu_bps(sc); +} + +static void re_set_mac_mcu_8125b_2(struct re_softc *sc) +{ + static const u_int16_t mcu_patch_code_8125b_2[] = { + 0xE010, 0xE01B, 0xE026, 0xE037, 0xE03D, 0xE057, 0xE05B, 0xE060, 0xE062, + 0xE064, 0xE066, 0xE068, 0xE06A, 0xE06C, 0xE06E, 0xE070, 0x740A, 0x4846, + 0x4847, 0x9C0A, 0xC607, 0x74C0, 0x48C6, 0x9CC0, 0xC602, 0xBE00, 0x13F0, + 0xE054, 0x72CA, 0x4826, 0x4827, 0x9ACA, 0xC607, 0x72C0, 0x48A6, 0x9AC0, + 0xC602, 0xBE00, 0x081C, 0xE054, 0xC60F, 0x74C4, 0x49CC, 0xF109, 0xC60C, + 0x74CA, 0x48C7, 0x9CCA, 0xC609, 0x74C0, 0x4846, 0x9CC0, 0xC602, 0xBE00, + 0x2494, 0xE092, 0xE0C0, 0xE054, 0x7420, 0x48C0, 0x9C20, 0x7444, 0xC602, + 0xBE00, 0x12DC, 0x733A, 0x21B5, 0x25BC, 0x1304, 0xF111, 0x1B12, 0x1D2A, + 0x3168, 0x3ADA, 0x31AB, 0x1A00, 0x9AC0, 0x1300, 0xF1FB, 0x7620, 0x236E, + 0x276F, 0x1A3C, 0x22A1, 0x41B5, 0x9EE2, 0x76E4, 0x486F, 0x9EE4, 0xC602, + 0xBE00, 0x4A26, 0x733A, 0x49BB, 0xC602, 0xBE00, 0x47A2, 0x48C1, 0x48C2, + 0x9C46, 0xC402, 0xBC00, 0x0A52, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, + 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, + 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, + 0x0000, 0xC602, 0xBE00, 0x0000 + }; + + re_disable_mcu_bps(sc); + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8125b_2, ARRAY_SIZE(mcu_patch_code_8125b_2)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC28, 0x13E6); + re_mac_ocp_write(sc, 0xFC2A, 0x0812); + re_mac_ocp_write(sc, 0xFC2C, 0x248C); + re_mac_ocp_write(sc, 0xFC2E, 0x12DA); + re_mac_ocp_write(sc, 0xFC30, 0x4A20); + re_mac_ocp_write(sc, 0xFC32, 0x47A0); + //re_mac_ocp_write(sc, 0xFC34, 0x0A46); + + re_mac_ocp_write(sc, 0xFC48, 0x003F); +} + +static void re_set_mac_mcu_8125bp_1(struct re_softc *sc) +{ + static const u_int16_t mcu_patch_code_8125bp_1[] = { + 0xE003, 0xE007, 0xE01A, 0x1BC8, 0x46EB, 0xC302, 0xBB00, 0x0F14, 0xC211, + 0x400A, 0xF00A, 0xC20F, 0x400A, 0xF007, 0x73A4, 0xC20C, 0x400A, 0xF102, + 0x48B0, 0x9B20, 0x1B00, 0x9BA0, 0xC602, 0xBE00, 0x4364, 0xE6E0, 0xE6E2, + 0xC01C, 0xB406, 0x1000, 0xF016, 0xC61F, 0x400E, 0xF012, 0x218E, 0x25BE, + 0x1300, 0xF007, 0x7340, 0xC618, 0x400E, 0xF102, 0x48B0, 0x8320, 0xB400, + 0x2402, 0x1000, 0xF003, 0x7342, 0x8322, 0xB000, 0xE007, 0x7322, 0x9B42, + 0x7320, 0x9B40, 0x0300, 0x0300, 0xB006, 0xC302, 0xBB00, 0x413E, 0xE6E0, + 0xC01C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x1171, 0x0B17, 0x0816, 0x1108 + }; + + re_disable_mcu_bps(sc); + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8125bp_1, ARRAY_SIZE(mcu_patch_code_8125bp_1)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC28, 0x0f10); + re_mac_ocp_write(sc, 0xFC2A, 0x435c); + re_mac_ocp_write(sc, 0xFC2C, 0x4112); + + re_mac_ocp_write(sc, 0xFC48, 0x0007); +} + +static void re_set_mac_mcu_8125bp_2(struct re_softc *sc) +{ + static const u_int16_t mcu_patch_code_8125bp_2[] = { + 0xE010, 0xE033, 0xE046, 0xE04A, 0xE04C, 0xE04E, 0xE050, 0xE052, 0xE054, + 0xE056, 0xE058, 0xE05A, 0xE05C, 0xE05E, 0xE060, 0xE062, 0xB406, 0x1000, + 0xF016, 0xC61F, 0x400E, 0xF012, 0x218E, 0x25BE, 0x1300, 0xF007, 0x7340, + 0xC618, 0x400E, 0xF102, 0x48B0, 0x8320, 0xB400, 0x2402, 0x1000, 0xF003, + 0x7342, 0x8322, 0xB000, 0xE007, 0x7322, 0x9B42, 0x7320, 0x9B40, 0x0300, + 0x0300, 0xB006, 0xC302, 0xBB00, 0x4168, 0xE6E0, 0xC01C, 0xC211, 0x400A, + 0xF00A, 0xC20F, 0x400A, 0xF007, 0x73A4, 0xC20C, 0x400A, 0xF102, 0x48B0, + 0x9B20, 0x1B00, 0x9BA0, 0xC602, 0xBE00, 0x4392, 0xE6E0, 0xE6E2, 0xC01C, + 0x4166, 0x9CF6, 0xC002, 0xB800, 0x143C, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC102, + 0xB900, 0x0000, 0xC002, 0xB800, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1171, + 0x0B18, 0x030D, 0x0A2A + }; + + re_disable_mcu_bps(sc); + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8125bp_2, ARRAY_SIZE(mcu_patch_code_8125bp_2)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC28, 0x413C); + re_mac_ocp_write(sc, 0xFC2A, 0x438A); + re_mac_ocp_write(sc, 0xFC2C, 0x143A); + + re_mac_ocp_write(sc, 0xFC48, 0x0007); +} + +static void re_set_mac_mcu_8125d_1(struct re_softc *sc) +{ + static const u_int16_t mcu_patch_code_8125d_1[] = { + 0xE002, 0xE006, 0x4166, 0x9CF6, 0xC002, 0xB800, 0x14A4, 0xC102, 0xB900, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6938, + 0x0A18, 0x0217, 0x0D2A + }; + + re_disable_mcu_bps(sc); + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8125d_1, ARRAY_SIZE(mcu_patch_code_8125d_1)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC28, 0x14A2); + + re_mac_ocp_write(sc, 0xFC48, 0x0001); +} + +static void re_set_mac_mcu_8125d_2(struct re_softc *sc) +{ + re_disable_mcu_bps(sc); +} + +static void re_set_mac_mcu_8126a_1(struct re_softc *sc) +{ + static const u_int16_t mcu_patch_code_8126a_1[] = { + 0xE010, 0xE019, 0xE01B, 0xE01D, 0xE01F, 0xE021, 0xE023, 0xE025, 0xE027, + 0xE029, 0xE02B, 0xE02D, 0xE02F, 0xE031, 0xE033, 0xE035, 0x48C0, 0x9C66, + 0x7446, 0x4840, 0x48C1, 0x48C2, 0x9C46, 0xC402, 0xBC00, 0x0AD6, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000 + }; + + re_disable_mcu_bps(sc); + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8126a_1, ARRAY_SIZE(mcu_patch_code_8126a_1)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC28, 0x0AAA); + + re_mac_ocp_write(sc, 0xFC48, 0x0001); +} + +static void re_set_mac_mcu_8126a_2(struct re_softc *sc) +{ + re_disable_mcu_bps(sc); +} + +static void re_set_mac_mcu_8126a_3(struct re_softc *sc) +{ + re_disable_mcu_bps(sc); +} + +static void re_hw_mac_mcu_config(struct re_softc *sc) +{ + switch(sc->re_type) { + case MACFG_56: + re_set_mac_mcu_8168g_1(sc); + break; + case MACFG_58: + re_set_mac_mcu_8168gu_1(sc); + break; + case MACFG_59: + re_set_mac_mcu_8168gu_2(sc); + break; + case MACFG_60: + re_set_mac_mcu_8411b_1(sc); + break; + case MACFG_62: + re_set_mac_mcu_8168ep_1(sc); + break; + case MACFG_67: + re_set_mac_mcu_8168ep_2(sc); + break; + case MACFG_68: + re_set_mac_mcu_8168h_1(sc); + break; + case MACFG_69: + case MACFG_76: + re_set_mac_mcu_8168h_2(sc); + break; + case MACFG_70: + re_set_mac_mcu_8168fp_1(sc); + break; + case MACFG_71: + re_set_mac_mcu_8168fp_2(sc); + break; + case MACFG_72: + re_set_mac_mcu_8168fp_3(sc); + break; + case MACFG_73: + re_set_mac_mcu_8168fp_4(sc); + break; + case MACFG_74: + re_set_mac_mcu_8168h_3(sc); + break; + case MACFG_75: + re_set_mac_mcu_8168h_4(sc); + break; + case MACFG_80: + re_set_mac_mcu_8125a_1(sc); + break; + case MACFG_81: + re_set_mac_mcu_8125a_2(sc); + break; + case MACFG_82: + re_set_mac_mcu_8125b_1(sc); + break; + case MACFG_83: + re_set_mac_mcu_8125b_2(sc); + break; + case MACFG_84: + re_set_mac_mcu_8125bp_1(sc); + break; + case MACFG_85: + re_set_mac_mcu_8125bp_2(sc); + break; + case MACFG_86: + re_set_mac_mcu_8125d_1(sc); + break; + case MACFG_87: + re_set_mac_mcu_8125d_2(sc); + break; + case MACFG_90: + re_set_mac_mcu_8126a_1(sc); + break; + case MACFG_91: + re_set_mac_mcu_8126a_2(sc); + break; + case MACFG_92: + re_set_mac_mcu_8126a_3(sc); + break; + } +} + +#define ISRIMR_DASH_TYPE2_TX_DISABLE_IDLE BIT_5 +static void Dash2DisableTx(struct re_softc *sc) +{ + u_int16_t WaitCnt; + u_int8_t TmpUchar; + + if (!HW_DASH_SUPPORT_CMAC(sc)) + return; + + //Disable oob Tx + RE_CMAC_WRITE_1(sc, RE_CMAC_IBCR2, RE_CMAC_READ_1(sc, RE_CMAC_IBCR2) & ~(BIT_0)); + WaitCnt = 0; + + //wait oob tx disable + do { + TmpUchar = RE_CMAC_READ_1(sc, RE_CMAC_IBISR0); + + if (TmpUchar & ISRIMR_DASH_TYPE2_TX_DISABLE_IDLE) { + break; + } + + DELAY(50); + WaitCnt++; + } while(WaitCnt < 2000); + + //Clear ISRIMR_DASH_TYPE2_TX_DISABLE_IDLE + RE_CMAC_WRITE_1(sc, RE_CMAC_IBISR0, RE_CMAC_READ_1(sc, RE_CMAC_IBISR0) | ISRIMR_DASH_TYPE2_TX_DISABLE_IDLE); +} + +static void Dash2DisableRx(struct re_softc *sc) +{ + if (!HW_DASH_SUPPORT_CMAC(sc)) + return; + + RE_CMAC_WRITE_1(sc, RE_CMAC_IBCR0, RE_CMAC_READ_1(sc, RE_CMAC_IBCR0) & ~(BIT_0)); +} + +static void Dash2DisableTxRx(struct re_softc *sc) +{ + if (!HW_DASH_SUPPORT_CMAC(sc)) + return; + + Dash2DisableTx(sc); + Dash2DisableRx(sc); +} + +static inline bool +is_zero_ether_addr(const u_int8_t * addr) +{ + return ((addr[0] + addr[1] + addr[2] + addr[3] + addr[4] + addr[5]) == 0x00); +} + +static inline bool +is_multicast_ether_addr(const u_int8_t * addr) +{ + return (0x01 & addr[0]); +} + +/* +static inline bool +is_broadcast_ether_addr(const u_int8_t * addr) +{ + return ((addr[0] + addr[1] + addr[2] + addr[3] + addr[4] + addr[5]) == (6 * 0xff)); +} +*/ + +static inline bool +is_valid_ether_addr(const u_int8_t * addr) +{ + return !is_multicast_ether_addr(addr) && !is_zero_ether_addr(addr); +} + +static void re_disable_now_is_oob(struct re_softc *sc) +{ + if (sc->re_hw_supp_now_is_oob_ver == 1) + CSR_WRITE_1(sc, RE_MCU_CMD, CSR_READ_1(sc, RE_MCU_CMD) & ~RE_NOW_IS_OOB); +} + +static void re_switch_to_sgmii_mode(struct re_softc *sc) +{ + if (FALSE == HW_SUPP_SERDES_PHY(sc)) return; + + switch (sc->hw_hw_supp_serdes_phy_ver) { + case 1: + re_mac_ocp_write(sc, 0xEB00, 0x2); + re_set_mac_ocp_bit(sc, 0xEB16, BIT_1); + break; + } +} + +static void +re_enable_magic_packet(struct re_softc *sc) +{ + if (sc->re_if_flags & RL_FLAG_MAGIC_PACKET_V3) + re_set_mac_ocp_bit(sc, 0xC0B6, BIT_0); + else if (sc->re_if_flags & RL_FLAG_MAGIC_PACKET_V2) + re_eri_write(sc, 0xDC, 4, + re_eri_read(sc, 0xDC, 4, ERIAR_ExGMAC) | BIT_16, + ERIAR_ExGMAC); + else + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | RL_CFG3_WOL_MAGIC); +} + +static void +re_disable_magic_packet(struct re_softc *sc) +{ + if (sc->re_if_flags & RL_FLAG_MAGIC_PACKET_V3) + re_clear_mac_ocp_bit(sc, 0xC0B6, BIT_0); + else if (sc->re_if_flags & RL_FLAG_MAGIC_PACKET_V2) + re_eri_write(sc, 0xDC, 4, + re_eri_read(sc, 0xDC, 4, ERIAR_ExGMAC) & ~BIT_16, + ERIAR_ExGMAC); + else + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~RL_CFG3_WOL_MAGIC); +} + +static void re_exit_oob(struct re_softc *sc) +{ + u_int16_t data16; + int i; + + re_disable_cfg9346_write(sc); + + if (HW_SUPP_SERDES_PHY(sc)) { + if (sc->hw_hw_supp_serdes_phy_ver == 1) { + re_switch_to_sgmii_mode(sc); + } + } + + switch(sc->re_type) { + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_80: + case MACFG_81: + Dash2DisableTxRx(sc); + break; + } + + if (HW_DASH_SUPPORT_DASH(sc)) + re_driver_start(sc); + + switch(sc->re_type) { + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_3); + DELAY(2000); + + for (i = 0; i < 3000; i++) { + DELAY(50); + if (CSR_READ_4(sc, RE_TXCFG) & BIT_11) + break; + } + + if (CSR_READ_1(sc, RE_COMMAND) & (RE_CMD_TX_ENB | RE_CMD_RX_ENB)) { + DELAY(100); + CSR_WRITE_1(sc, RE_COMMAND, CSR_READ_1(sc, RE_COMMAND) & ~(RE_CMD_TX_ENB | RE_CMD_RX_ENB)); + } + + for (i = 0; i < 3000; i++) { + DELAY(50); + if ((CSR_READ_1(sc, RE_MCU_CMD) & (RE_TXFIFO_EMPTY | RE_RXFIFO_EMPTY)) == (RE_TXFIFO_EMPTY | RE_RXFIFO_EMPTY)) + break; + } + break; + case MACFG_80: + case MACFG_81: + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_3); + DELAY(2000); + + if (CSR_READ_1(sc, RE_COMMAND) & (RE_CMD_TX_ENB | RE_CMD_RX_ENB)) { + DELAY(100); + CSR_WRITE_1(sc, RE_COMMAND, CSR_READ_1(sc, RE_COMMAND) & ~(RE_CMD_TX_ENB | RE_CMD_RX_ENB)); + } + + for (i = 0; i < 3000; i++) { + DELAY(50); + if ((CSR_READ_1(sc, RE_MCU_CMD) & (RE_TXFIFO_EMPTY | RE_RXFIFO_EMPTY)) == (RE_TXFIFO_EMPTY | RE_RXFIFO_EMPTY)) + break; + } + break; + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_3); + DELAY(2000); + + if (CSR_READ_1(sc, RE_COMMAND) & (RE_CMD_TX_ENB | RE_CMD_RX_ENB)) { + DELAY(100); + CSR_WRITE_1(sc, RE_COMMAND, CSR_READ_1(sc, RE_COMMAND) & ~(RE_CMD_TX_ENB | RE_CMD_RX_ENB)); + } + + CSR_WRITE_1(sc, RE_COMMAND, CSR_READ_1(sc, RE_COMMAND) | RE_CMD_STOP_REQ); + + for (i = 0; i < 3000; i++) { + DELAY(50); + if ((CSR_READ_1(sc, RE_MCU_CMD) & (RE_TXFIFO_EMPTY | RE_RXFIFO_EMPTY)) == (RE_TXFIFO_EMPTY | RE_RXFIFO_EMPTY)) + break; + } + + for (i = 0; i < 3000; i++) { + DELAY(50); + if ((CSR_READ_2(sc, RE_IntrMitigate) & (BIT_0 | BIT_1 | BIT_8)) == (BIT_0 | BIT_1 | BIT_8)) + break; + } + break; + } + + //Disable realwow function + switch (sc->re_type) { + case MACFG_50: + case MACFG_51: + CSR_WRITE_4(sc, RE_MCUACCESS, 0xE5A90000); + CSR_WRITE_4(sc, RE_MCUACCESS, 0xF2100010); + break; + case MACFG_52: + CSR_WRITE_4(sc, RE_MCUACCESS, 0xE5A90000); + CSR_WRITE_4(sc, RE_MCUACCESS, 0xE4640000); + CSR_WRITE_4(sc, RE_MCUACCESS, 0xF2100010); + break; + case MACFG_56: + case MACFG_57: + CSR_WRITE_4(sc, RE_MCUACCESS, 0x605E0000); + CSR_WRITE_4(sc, RE_MCUACCESS, (0xE05E << 16) | (CSR_READ_4(sc, RE_MCUACCESS) & 0xFFFE)); + CSR_WRITE_4(sc, RE_MCUACCESS, 0xE9720000); + CSR_WRITE_4(sc, RE_MCUACCESS, 0xF2140010); + break; + case MACFG_60: + CSR_WRITE_4(sc, RE_MCUACCESS, 0xE05E00FF); + CSR_WRITE_4(sc, RE_MCUACCESS, 0xE9720000); + re_mac_ocp_write(sc, 0xE428, 0x0010); + break; + } + + if (sc->re_hw_supp_now_is_oob_ver >0) + re_disable_now_is_oob(sc); + + switch(sc->re_type) { + case MACFG_52: + for (i = 0; i < 10; i++) { + DELAY(100); + if (CSR_READ_2(sc, 0xD2) & BIT_9) + break; + } + + data16 = re_mac_ocp_read(sc, 0xD4DE) | BIT_15; + re_mac_ocp_write(sc, 0xD4DE, data16); + + for (i = 0; i < 10; i++) { + DELAY(100); + if (CSR_READ_2(sc, 0xD2) & BIT_9) + break; + } + break; + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + data16 = re_mac_ocp_read(sc, 0xE8DE) & ~BIT_14; + re_mac_ocp_write(sc, 0xE8DE, data16); + for (i = 0; i < 10; i++) { + DELAY(100); + if (CSR_READ_2(sc, 0xD2) & BIT_9) + break; + } + + data16 = re_mac_ocp_read(sc, 0xE8DE) | BIT_15; + re_mac_ocp_write(sc, 0xE8DE, data16); + + for (i = 0; i < 10; i++) { + DELAY(100); + if (CSR_READ_2(sc, 0xD2) & BIT_9) + break; + } + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + data16 = re_mac_ocp_read(sc, 0xE8DE) & ~BIT_14; + re_mac_ocp_write(sc, 0xE8DE, data16); + for (i = 0; i < 10; i++) { + DELAY(100); + if (CSR_READ_2(sc, 0xD2) & BIT_9) + break; + } + + re_mac_ocp_write(sc, 0xC0AA, 0x07D0); + re_mac_ocp_write(sc, 0xC0A6, 0x01B5); + re_mac_ocp_write(sc, 0xC01E, 0x5555); + + for (i = 0; i < 10; i++) { + DELAY(100); + if (CSR_READ_2(sc, 0xD2) & BIT_9) + break; + } + break; + } + + //wait ups resume (phy state 2) + switch(sc->re_type) { + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + if (re_is_ups_resume(sc)) { + re_wait_phy_ups_resume(sc, 2); + re_clear_ups_resume_bit(sc); + re_clear_phy_ups_reg(sc); + } + break; + }; + + /* + * Config MAC MCU + */ + re_hw_mac_mcu_config(sc); +} + +static void re_hw_init(struct re_softc *sc) +{ + /* + * disable EDT. + */ + switch(sc->re_type) { + case MACFG_16: + case MACFG_17: + case MACFG_18: + case MACFG_19: + case MACFG_41: + CSR_WRITE_1(sc, 0xF4, CSR_READ_1(sc, 0xF4) & ~(BIT_0|BIT_1)); + break; + case MACFG_36: + case MACFG_37: + case MACFG_38: + case MACFG_39: + case MACFG_42: + case MACFG_43: + case MACFG_50: + case MACFG_51: + case MACFG_54: + case MACFG_55: + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~(BIT_0|BIT_1|BIT_2)); + break; + } + + re_enable_cfg9346_write(sc); + + if (s0_magic_packet == 0) + re_disable_magic_packet(sc); + else + re_enable_magic_packet(sc); + + re_disable_cfg9346_write(sc); + + switch(sc->re_type) { + case MACFG_5: + if (CSR_READ_1(sc, RE_CFG2) & 1) { + CSR_WRITE_4(sc, 0x7C, 0x000FFFFF); + } else { + CSR_WRITE_4(sc, 0x7C, 0x000FFF00); + } + break; + case MACFG_6: + if (CSR_READ_1(sc, RE_CFG2) & 1) { + CSR_WRITE_4(sc, 0x7C, 0x003FFFFF); + } else { + CSR_WRITE_4(sc, 0x7C, 0x003FFF00); + } + break; + } + + switch(sc->re_type) { + case MACFG_33: + case MACFG_36: + case MACFG_37: + CSR_WRITE_1(sc, 0xF3, CSR_READ_1(sc, 0xF3) | BIT_2); + break; + } + + switch(sc->re_type) { + case MACFG_36: + case MACFG_37: + case MACFG_38: + case MACFG_39: + case MACFG_42: + case MACFG_43: + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_53: + case MACFG_54: + case MACFG_55: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_enable_force_clkreq(sc, 0); + re_enable_aspm_clkreq_lock(sc, 0); + re_enable_cfg9346_write(sc); + CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | BIT_5); + re_disable_cfg9346_write(sc); + break; + } + + if (sc->re_if_flags & RL_FLAG_PCIE) { + uint32_t Data32; + //Set PCIE uncorrectable error status mask pcie 0x108 + Data32 = re_csi_read(sc, 0xF108); + Data32 |= BIT_20; + re_csi_write(sc, 0xF108, Data32); + } +} + +static void re_rar_set(struct re_softc *sc, u_int8_t *eaddr) +{ + re_enable_cfg9346_write(sc); + + CSR_WRITE_4(sc, RE_IDR0, + htole32(*(u_int32_t *)(&eaddr[0]))); + CSR_WRITE_2(sc, RE_IDR4, + htole16(*(u_int32_t *)(&eaddr[4]))); + + switch (sc->re_type) { + case MACFG_36: + case MACFG_37: + case MACFG_42: + case MACFG_43: + case MACFG_54: + case MACFG_55: + CSR_WRITE_4(sc, RE_SecMAC0, + htole32(*(u_int32_t *)(&eaddr[0]))); + CSR_WRITE_2(sc, RE_SecMAC4, + htole16(*(u_int16_t *)(&eaddr[4]))); + break; + } + + switch (sc->re_type) { + case MACFG_38: + case MACFG_39: + re_eri_write(sc, 0xF0, 4, *(u_int16_t *)(&eaddr[0])<<16, ERIAR_ExGMAC); + re_eri_write(sc, 0xF4, 4, *(u_int32_t *)(&eaddr[2]), ERIAR_ExGMAC); + break; + } + + re_disable_cfg9346_write(sc); +} + +static void re_get_hw_mac_address(struct re_softc *sc, u_int8_t *eaddr) +{ + device_t dev = sc->dev; + u_int16_t re_eeid = 0; + int i; + + for (i = 0; i < ETHER_ADDR_LEN; i++) + eaddr[i] = CSR_READ_1(sc, RE_IDR0 + i); + + switch(sc->re_type) { + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_53: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + *(u_int32_t *)&eaddr[0] = re_eri_read(sc, 0xE0, 4, ERIAR_ExGMAC); + *(u_int16_t *)&eaddr[4] = (u_int16_t)re_eri_read(sc, 0xE4, 4, ERIAR_ExGMAC); + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + *(u_int32_t *)&eaddr[0] = CSR_READ_4(sc, RE_BACKUP_ADDR0_8125); + *(u_int16_t *)&eaddr[4] = CSR_READ_2(sc, RE_BACKUP_ADDR4_8125); + break; + case MACFG_63: + case MACFG_64: + case MACFG_65: + case MACFG_66: + break; + default: + re_read_eeprom(sc, (caddr_t)&re_eeid, RE_EE_ID, 1, 0); + if (re_eeid == 0x8129) + re_read_eeprom(sc, (caddr_t)&eaddr[0], RE_EE_EADDR, 3, 0); + break; + } + + if (!is_valid_ether_addr(eaddr)) { + device_printf(dev,"Invalid ether addr: %6D\n", eaddr, ":"); + ether_gen_addr(sc->re_ifp, (struct ether_addr *)eaddr); + device_printf(dev,"Random ether addr: %6D\n", eaddr, ":"); + sc->random_mac = 1; + } + + re_rar_set(sc, eaddr); +} + +static int re_check_mac_version(struct re_softc *sc) +{ + device_t dev = sc->dev; + int error = 0; + + switch(CSR_READ_4(sc, RE_TXCFG) & 0xFCF00000) { + case 0x00800000: + case 0x04000000: + sc->re_type = MACFG_3; + sc->max_jumbo_frame_size = Jumbo_Frame_7k; + CSR_WRITE_4(sc, RE_RXCFG, 0xFF00); + break; + case 0x10000000: + sc->re_type = MACFG_4; + sc->max_jumbo_frame_size = Jumbo_Frame_7k; + CSR_WRITE_4(sc, RE_RXCFG, 0xFF00); + break; + case 0x18000000: + sc->re_type = MACFG_5; + sc->max_jumbo_frame_size = Jumbo_Frame_7k; + CSR_WRITE_4(sc, RE_RXCFG, 0xFF00); + break; + case 0x98000000: + sc->re_type = MACFG_6; + sc->max_jumbo_frame_size = Jumbo_Frame_7k; + CSR_WRITE_4(sc, RE_RXCFG, 0xFF00); + break; + case 0x34000000: + case 0xB4000000: + sc->re_type = MACFG_11; + sc->max_jumbo_frame_size = ETHERMTU; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x34200000: + case 0xB4200000: + sc->re_type = MACFG_12; + sc->max_jumbo_frame_size = ETHERMTU; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x34300000: + case 0xB4300000: + sc->re_type = MACFG_13; + sc->max_jumbo_frame_size = ETHERMTU; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x34900000: + case 0x24900000: + sc->re_type = MACFG_14; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x34A00000: + case 0x24A00000: + sc->re_type = MACFG_15; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x34B00000: + case 0x24B00000: + sc->re_type = MACFG_16; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x34C00000: + case 0x24C00000: + sc->re_type = MACFG_17; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x34D00000: + case 0x24D00000: + sc->re_type = MACFG_18; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x34E00000: + case 0x24E00000: + sc->re_type = MACFG_19; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x30000000: + sc->re_type = MACFG_21; + sc->max_jumbo_frame_size = Jumbo_Frame_4k; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x38000000: + sc->re_type = MACFG_22; + sc->max_jumbo_frame_size = Jumbo_Frame_4k; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x38500000: + case 0xB8500000: + case 0x38700000: + case 0xB8700000: + sc->re_type = MACFG_23; + sc->max_jumbo_frame_size = Jumbo_Frame_4k; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x3C000000: + sc->re_type = MACFG_24; + sc->max_jumbo_frame_size = Jumbo_Frame_6k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xC700); + break; + case 0x3C200000: + sc->re_type = MACFG_25; + sc->max_jumbo_frame_size = Jumbo_Frame_6k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xC700); + break; + case 0x3C400000: + sc->re_type = MACFG_26; + sc->max_jumbo_frame_size = Jumbo_Frame_6k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xC700); + break; + case 0x3C900000: + sc->re_type = MACFG_27; + sc->max_jumbo_frame_size = Jumbo_Frame_6k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xC700); + break; + case 0x3CB00000: + sc->re_type = MACFG_28; + sc->max_jumbo_frame_size = Jumbo_Frame_6k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xC700); + break; + case 0x28100000: + sc->re_type = MACFG_31; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0x8700); + break; + case 0x28200000: + sc->re_type = MACFG_32; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0x8700); + break; + case 0x28300000: + sc->re_type = MACFG_33; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0x8700); + break; + case 0x2C100000: + sc->re_type = MACFG_36; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0x8700); + break; + case 0x2C200000: + sc->re_type = MACFG_37; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0x8700); + break; + case 0x2C800000: + sc->re_type = MACFG_38; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0xBF00); + break; + case 0x2C900000: + sc->re_type = MACFG_39; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0xBF00); + break; + case 0x24000000: + sc->re_type = MACFG_41; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x40900000: + sc->re_type = MACFG_42; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x40A00000: + case 0x40B00000: + case 0x40C00000: + sc->re_type = MACFG_43; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x48000000: + sc->re_type = MACFG_50; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0xBF00); + break; + case 0x48100000: + sc->re_type = MACFG_51; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0xBF00); + break; + case 0x48800000: + sc->re_type = MACFG_52; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0xBF00); + break; + case 0x44000000: + sc->re_type = MACFG_53; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x44800000: + sc->re_type = MACFG_54; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x44900000: + sc->re_type = MACFG_55; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x4C000000: + sc->re_type = MACFG_56; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x4C100000: + sc->re_type = MACFG_57; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x50800000: + sc->re_type = MACFG_58; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x50900000: + sc->re_type = MACFG_59; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x5C800000: + sc->re_type = MACFG_60; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x50000000: + sc->re_type = MACFG_61; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x50100000: + sc->re_type = MACFG_62; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x50200000: + sc->re_type = MACFG_67; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x28800000: + sc->re_type = MACFG_63; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0x8700); + break; + case 0x28900000: + sc->re_type = MACFG_64; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0x8700); + break; + case 0x28A00000: + sc->re_type = MACFG_65; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0x8700); + break; + case 0x28B00000: + sc->re_type = MACFG_66; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0x8700); + break; + case 0x54000000: + sc->re_type = MACFG_68; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x54100000: + sc->re_type = MACFG_69; + if ((re_mac_ocp_read(sc, 0xD006) & 0xFF00) == 0x0100) + sc->re_type = MACFG_74; + else if ((re_mac_ocp_read(sc, 0xD006) & 0xFF00) == 0x0300) + sc->re_type = MACFG_75; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x6C000000: + sc->re_type = MACFG_76; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_8168G_PLUS | + RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x54900000: + sc->re_type = MACFG_70; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x54A00000: + sc->re_type = MACFG_71; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x54B00000: + sc->re_type = MACFG_72; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x54C00000: + sc->re_type = MACFG_73; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x60800000: + sc->re_type = MACFG_80; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00400); + break; + case 0x60900000: + sc->re_type = MACFG_81; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00400); + break; + case 0x64000000: + sc->re_type = MACFG_82; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00C00); + break; + case 0x64100000: + sc->re_type = MACFG_83; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00C00); + break; + case 0x68000000: + sc->re_type = MACFG_84; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00C00); + break; + case 0x68100000: + sc->re_type = MACFG_85; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00C00); + break; + case 0x68800000: + sc->re_type = MACFG_86; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00C00); + break; + case 0x68900000: + sc->re_type = MACFG_87; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00C00); + break; + case 0x64800000: + sc->re_type = MACFG_90; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00F00); + break; + case 0x64900000: + sc->re_type = MACFG_91; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00D00); + break; + case 0x64A00000: + sc->re_type = MACFG_92; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00D00); + break; + default: + device_printf(dev,"unknown device\n"); + sc->re_type = MACFG_FF; + error = ENXIO; + break; + } + + switch(sc->re_device_id) { + case RT_DEVICEID_8169: + case RT_DEVICEID_8169SC: + case RT_DEVICEID_8168: + case RT_DEVICEID_8161: + case RT_DEVICEID_8162: + case RT_DEVICEID_8125: + case RT_DEVICEID_3000: + case RT_DEVICEID_8126: + //do nothing + break; + default: + sc->max_jumbo_frame_size = ETHERMTU; + break; + } + + return error; +} + +static bool +re_is_allow_access_dash_ocp(struct re_softc *sc) +{ + bool allow_access = false; + u_int16_t mac_ocp_data; + + if (!HW_SUPPORT_OCP_CHANNEL(sc)) + goto exit; + + switch (sc->re_type) { + case MACFG_80: + case MACFG_81: + mac_ocp_data = re_mac_ocp_read(sc, 0xd460); + if (mac_ocp_data == 0xffff || !(mac_ocp_data & BIT_0)) + goto exit; + break; + case MACFG_84: + case MACFG_85: + mac_ocp_data = re_mac_ocp_read(sc, 0xd4c0); + if (mac_ocp_data == 0xffff || (mac_ocp_data & BIT_3)) + goto exit; + break; + default: + break; + } + + allow_access = true; + +exit: + return allow_access; +} + +static void re_init_software_variable(struct re_softc *sc) +{ + switch(sc->re_device_id) { + case RT_DEVICEID_8168: + case RT_DEVICEID_8161: + case RT_DEVICEID_8162: + case RT_DEVICEID_8136: + case RT_DEVICEID_8125: + case RT_DEVICEID_3000: + case RT_DEVICEID_8126: + sc->re_if_flags |= RL_FLAG_PCIE; + break; + } + + sc->re_rx_mbuf_sz = sc->max_jumbo_frame_size + ETHER_VLAN_ENCAP_LEN + ETHER_HDR_LEN + ETHER_CRC_LEN + RE_ETHER_ALIGN + 1; + + if (sc->re_rx_mbuf_sz > max_rx_mbuf_sz) { + sc->max_jumbo_frame_size -= (sc->re_rx_mbuf_sz - max_rx_mbuf_sz); + sc->re_rx_mbuf_sz = max_rx_mbuf_sz; + } + + switch(sc->re_type) { + case MACFG_63: + case MACFG_64: + case MACFG_65: + case MACFG_66: + sc->HwSuppDashVer = 1; + break; + case MACFG_61: + case MACFG_62: + case MACFG_67: + sc->HwSuppDashVer = 2; + break; + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + sc->HwSuppDashVer = 3; + break; + case MACFG_80: + case MACFG_81: { + u_int8_t tmpUchar; + tmpUchar = (u_int8_t)re_mac_ocp_read(sc, 0xD006); + if (tmpUchar == 0x02 || tmpUchar == 0x04) + sc->HwSuppDashVer = 2; + } + break; + case MACFG_84: + case MACFG_85: + sc->HwSuppDashVer = 4; + break; + default: + sc->HwSuppDashVer = 0; + break; + } + + switch(sc->re_type) { + case MACFG_63: + case MACFG_64: + case MACFG_65: + case MACFG_66: + sc->HwSuppOcpChannelVer = 1; + break; + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_84: + case MACFG_85: + sc->HwSuppOcpChannelVer = 2; + break; + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + sc->HwSuppOcpChannelVer = 3; + break; + case MACFG_80: + case MACFG_81: + if (sc->HwSuppDashVer > 0) + sc->HwSuppOcpChannelVer = 2; + break; + default: + sc->HwSuppOcpChannelVer = 0; + break; + } + + switch(sc->re_type) { + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + sc->HwPkgDet = re_mac_ocp_read(sc, 0xDC00); + sc->HwPkgDet = (sc->HwPkgDet >> 3) & 0x0F; + break; + } + + switch(sc->re_type) { + case MACFG_71: + case MACFG_72: + case MACFG_73: + if (sc->HwPkgDet == 0x06) { + u_int8_t tmpUchar = re_eri_read(sc, 0xE6, 1, ERIAR_ExGMAC); + if (tmpUchar == 0x02) + sc->hw_hw_supp_serdes_phy_ver = 1; + else if (tmpUchar == 0x00) + sc->hw_hw_supp_serdes_phy_ver = 2; + } + break; + } + + if (HW_SUPP_SERDES_PHY(sc)) + eee_enable = 0; + + if (HW_DASH_SUPPORT_DASH(sc)) { + sc->AllowAccessDashOcp = re_is_allow_access_dash_ocp(sc); + sc->re_dash = re_check_dash(sc); + } + + if (sc->re_dash) { +#if defined(__amd64__) || defined(__i386__) + if (HW_DASH_SUPPORT_TYPE_3(sc)) { + u_int64_t CmacMemPhysAddress; + bus_space_handle_t cmac_ioaddr; + + CmacMemPhysAddress = re_csi_other_fun_read(sc, 0, 0xf018); + if (!(CmacMemPhysAddress & BIT_0)) { + if (CmacMemPhysAddress & BIT_2) + CmacMemPhysAddress |= (u_int64_t)re_csi_other_fun_read(sc, 0, 0xf01c) << 32; + + CmacMemPhysAddress &= 0xFFFFFFF0; + /* ioremap MMIO region */ + sc->re_mapped_cmac_tag = X86_BUS_SPACE_MEM; + if (bus_space_map(sc->re_mapped_cmac_tag, CmacMemPhysAddress, RE_REGS_SIZE, 0, + &cmac_ioaddr)) + sc->re_dash = 0; + else + sc->re_mapped_cmac_handle = cmac_ioaddr; + } + } +#else + sc->re_dash = 0; +#endif + } + + switch(sc->re_type) { + case MACFG_61: + case MACFG_62: + case MACFG_67: + sc->re_cmac_handle = sc->re_bhandle; + sc->re_cmac_tag = sc->re_btag; + break; + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + sc->re_cmac_handle = sc->re_mapped_cmac_handle; + sc->re_cmac_tag = sc->re_mapped_cmac_tag; + break; + } + + switch(sc->re_type) { + case MACFG_14: + case MACFG_15: + case MACFG_16: + case MACFG_17: + case MACFG_18: + case MACFG_19: + case MACFG_31: + case MACFG_32: + case MACFG_33: + case MACFG_41: + case MACFG_63: + case MACFG_64: + case MACFG_65: + case MACFG_66: + sc->re_efuse_ver = EFUSE_SUPPORT_V1; + break; + case MACFG_36: + case MACFG_37: + case MACFG_42: + case MACFG_43: + case MACFG_54: + case MACFG_55: + sc->re_efuse_ver = EFUSE_SUPPORT_V2; + break; + case MACFG_38: + case MACFG_39: + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_53: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + sc->re_efuse_ver = EFUSE_SUPPORT_V3; + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + sc->re_efuse_ver = EFUSE_SUPPORT_V4; + break; + default: + sc->re_efuse_ver = EFUSE_NOT_SUPPORT; + break; + } + + switch(sc->re_type) { + case MACFG_69: + case MACFG_76: { + u_int16_t ioffset_p3, ioffset_p2, ioffset_p1, ioffset_p0; + u_int16_t TmpUshort; + + re_mac_ocp_write(sc, 0xDD02, 0x807D); + + TmpUshort = re_mac_ocp_read(sc, 0xDD02); + ioffset_p3 = ((TmpUshort & BIT_7) >>7); + ioffset_p3 <<= 3; + TmpUshort = re_mac_ocp_read(sc, 0xDD00); + + ioffset_p3 |= ((TmpUshort & (BIT_15 | BIT_14 | BIT_13))>>13); + + ioffset_p2 = ((TmpUshort & (BIT_12|BIT_11|BIT_10|BIT_9))>>9); + ioffset_p1 = ((TmpUshort & (BIT_8|BIT_7|BIT_6|BIT_5))>>5); + + ioffset_p0 = ((TmpUshort & BIT_4) >>4); + ioffset_p0 <<= 3; + ioffset_p0 |= (TmpUshort & (BIT_2| BIT_1 | BIT_0)); + + if ((ioffset_p3 == 0x0F) && (ioffset_p2 == 0x0F) && (ioffset_p1 == 0x0F) && (ioffset_p0 == 0x0F)) { + sc->RequireAdcBiasPatch = FALSE; + } else { + sc->RequireAdcBiasPatch = TRUE; + sc->AdcBiasPatchIoffset = (ioffset_p3<<12)|(ioffset_p2<<8)|(ioffset_p1<<4)|(ioffset_p0); + } + } + break; + } + + switch(sc->re_type) { + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_75: + case MACFG_76: { + u_int16_t rg_saw_cnt; + + re_mdio_write(sc, 0x1F, 0x0C42); + rg_saw_cnt = re_mdio_read(sc, 0x13); + rg_saw_cnt &= ~(BIT_15|BIT_14); + re_mdio_write(sc, 0x1F, 0x0000); + + if (rg_saw_cnt > 0) { + sc->SwrCnt1msIni = 16000000/rg_saw_cnt; + sc->SwrCnt1msIni &= 0x0FFF; + + sc->RequireAdjustUpsTxLinkPulseTiming = TRUE; + } + } + break; + } + +#ifdef ENABLE_FIBER_SUPPORT + re_check_hw_fiber_mode_support(sc); +#endif //ENABLE_FIBER_SUPPORT + + switch (sc->re_type) { + case MACFG_74: + case MACFG_75: + sc->RequiredSecLanDonglePatch = FALSE; + break; + } + + switch(sc->re_type) { + case MACFG_31: + case MACFG_32: + case MACFG_33: + case MACFG_36: + case MACFG_37: + case MACFG_38: + case MACFG_39: + case MACFG_42: + case MACFG_43: + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_53: + case MACFG_54: + case MACFG_55: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_63: + case MACFG_64: + case MACFG_65: + case MACFG_66: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + sc->re_hw_enable_msi_msix = TRUE; + break; + } + + switch(sc->re_type) { + case MACFG_3: + case MACFG_4: + case MACFG_5: + case MACFG_6: + case MACFG_11: + case MACFG_12: + case MACFG_13: + case MACFG_21: + case MACFG_22: + case MACFG_23: + case MACFG_24: + case MACFG_25: + case MACFG_26: + case MACFG_27: + case MACFG_28: + case MACFG_41: + case MACFG_42: + case MACFG_43: + case MACFG_54: + case MACFG_55: + sc->re_coalesce_tx_pkt = TRUE; + break; + } + + switch(sc->re_type) { + case MACFG_36: + case MACFG_37: + case MACFG_38: + case MACFG_39: + case MACFG_42: + case MACFG_43: + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_53: + case MACFG_54: + case MACFG_55: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + sc->re_hw_supp_now_is_oob_ver = 1; + break; + } + + switch (sc->re_type) { + case MACFG_36: + case MACFG_37: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168E; + break; + case MACFG_38: + case MACFG_39: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168EVL; + break; + case MACFG_50: + case MACFG_51: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168F; + break; + case MACFG_52: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8411; + break; + case MACFG_56: + case MACFG_57: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168G; + break; + case MACFG_58: + case MACFG_59: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168GU; + break; + case MACFG_60: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8411B; + break; + case MACFG_61: + case MACFG_62: + case MACFG_67: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168EP; + break; + case MACFG_68: + case MACFG_69: + case MACFG_76: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168H; + break; + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168FP; + break; + case MACFG_74: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168H_6838; + break; + case MACFG_75: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168H_6878B; + break; + case MACFG_80: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125A_REV_A; + break; + case MACFG_81: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125A_REV_B; + break; + case MACFG_82: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125B_REV_A; + break; + case MACFG_83: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125B_REV_B; + break; + case MACFG_84: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125BP_REV_A; + break; + case MACFG_85: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125BP_REV_B; + break; + case MACFG_86: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125D_REV_A; + break; + case MACFG_87: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125D_REV_B; + break; + case MACFG_90: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8126A_REV_A; + break; + case MACFG_91: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8126A_REV_B; + break; + case MACFG_92: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8126A_REV_C; + break; + } + + switch (sc->re_type) { + case MACFG_81: + if ((re_mac_ocp_read(sc, 0xD442) & BIT_5) && + (re_real_ocp_phy_read(sc, 0xD068) & BIT_1) + ) { + sc->RequirePhyMdiSwapPatch = TRUE; + } + break; + } + + switch (sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + sc->HwSuppExtendTallyCounterVer = 1; + break; + } + + switch (sc->re_type) { + case MACFG_38: + case MACFG_39: + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + sc->HwSuppMacMcuVer = 1; + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + sc->HwSuppMacMcuVer = 2; + break; + } + + switch (sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + sc->MacMcuPageSize = RTL8125_MAC_MCU_PAGE_SIZE; + break; + } + + switch (sc->re_type) { + case MACFG_84: + case MACFG_85: + sc->RequiredPfmPatch = TRUE; + break; + } + + sc->re_8169_MacVersion = (CSR_READ_4(sc, RE_TXCFG)&0x7c800000)>>25; /* Get bit 26~30 */ + sc->re_8169_MacVersion |= ((CSR_READ_4(sc, RE_TXCFG)&0x00800000)!=0 ? 1:0); /* Get bit 23 */ + DBGPRINT1(sc->re_unit,"8169 Mac Version %d",sc->re_8169_MacVersion); + + /* Rtl8169s single chip detected */ + if (sc->re_type == MACFG_3) { + RE_LOCK(sc); + sc->re_8169_PhyVersion=(re_mdio_read(sc, 0x03)&0x000f); + DBGPRINT1(sc->re_unit,"8169 Phy Version %d",sc->re_8169_PhyVersion); + RE_UNLOCK(sc); + } + + sc->link_state = LINK_STATE_UNKNOWN; + +#ifdef ENABLE_FIBER_SUPPORT + if (HW_FIBER_MODE_ENABLED(sc)) + re_set_fiber_mode_software_variable(sc); +#endif //ENABLE_FIBER_SUPPORT +} + +static void re_enable_ocp_phy_power_saving(struct re_softc *sc) +{ + u_int16_t val; + + if (sc->re_type == MACFG_59 || sc->re_type == MACFG_60 || + sc->re_type == MACFG_62 || sc->re_type == MACFG_67 || + sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || + sc->re_type == MACFG_72 || sc->re_type == MACFG_73 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || + sc->re_type == MACFG_76) { + val = re_ocp_phy_read(sc, 0x0C41, 0x13); + if (val != 0x0050) { + re_set_phy_mcu_patch_request(sc); + re_ocp_phy_write(sc, 0x0C41, 0x13, 0x0000); + re_ocp_phy_write(sc, 0x0C41, 0x13, 0x0050); + re_clear_phy_mcu_patch_request(sc); + } + } else if (sc->re_type == MACFG_80 || sc->re_type == MACFG_81) { + val = re_real_ocp_phy_read(sc, 0xC416); + if (val != 0x0050) { + re_set_phy_mcu_patch_request(sc); + re_real_ocp_phy_write(sc, 0xC416, 0x0000); + re_real_ocp_phy_write(sc, 0xC416, 0x0050); + re_clear_phy_mcu_patch_request(sc); + } + } +} + +static void re_disable_ocp_phy_power_saving(struct re_softc *sc) +{ + u_int16_t val; + + if (sc->re_type == MACFG_59 || sc->re_type == MACFG_60 || + sc->re_type == MACFG_62 || sc->re_type == MACFG_67 || + sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || + sc->re_type == MACFG_72 || sc->re_type == MACFG_73 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || + sc->re_type == MACFG_76) { + val = re_ocp_phy_read(sc, 0x0C41, 0x13); + if (val != 0x0500) { + re_set_phy_mcu_patch_request(sc); + re_ocp_phy_write(sc, 0x0C41, 0x13, 0x0000); + re_ocp_phy_write(sc, 0x0C41, 0x13, 0x0500); + re_clear_phy_mcu_patch_request(sc); + } + } else if (sc->re_type == MACFG_80 || sc->re_type == MACFG_81) { + val = re_real_ocp_phy_read(sc, 0xC416); + if (val != 0x0500) { + re_set_phy_mcu_patch_request(sc); + re_real_ocp_phy_write(sc, 0xC416, 0x0000); + re_real_ocp_phy_write(sc, 0xC416, 0x0500); + re_clear_phy_mcu_patch_request(sc); + } + } +} + +static void re_hw_d3_para(struct re_softc *sc) +{ + switch (sc->re_type) { + case MACFG_59: + case MACFG_60: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + case MACFG_80: + case MACFG_81: + re_disable_ocp_phy_power_saving(sc); + break; + } +} + +static void +re_add_sysctls(struct re_softc *sc) +{ + struct sysctl_ctx_list *ctx; + struct sysctl_oid_list *children; + + ctx = device_get_sysctl_ctx(sc->dev); + children = SYSCTL_CHILDREN(device_get_sysctl_tree(sc->dev)); + +#ifndef CTLFLAG_NEEDGIANT +#define CTLFLAG_NEEDGIANT 0 +#endif + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "driver_var", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_driver_variable, "I", "Driver Variables Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "stats", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_stats, "I", "Statistics Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "registers", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_registers, "I", "MAC IO Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "registers2", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_registers2, "I", "MAC IO 0x0000 to 0x4000 Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "registers3", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_registers3, "I", "MAC IO 0x4000 to 0x8000 Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "registers4", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_registers4, "I", "MAC IO 0x8000 to 0xC000 Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "registers5", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_registers5, "I", "MAC IO 0xC000 to 0x10000 Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "eth_phy", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_eth_phy, "I", "Ethernet PHY Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "rx_desc", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_dump_rx_desc, "I", "RX Descriptor Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "tx_desc", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_dump_tx_desc, "I", "TX Descriptor Information"); + + if ((sc->re_if_flags & RL_FLAG_PCIE) != 0) { + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "pcie_phy", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_pcie_phy, "I", "PCIE PHY Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "ext_regs", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_extended_registers, "I", "Extended Registers Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "pci_regs", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_pci_registers, "I", "PCI Configuration Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "msix_tbl", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_msix_tbl, "I", "MSIX Table Information"); + } +} + +static int +re_sysctl_driver_variable(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + int error, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + printf("%s Driver Variables:\n", device_get_nameunit(sc->dev)); + + printf("driver version\t%s\n", RE_VERSION); + printf("if_drv_flags\t0x%08x\n", sc->re_ifp->if_drv_flags); + printf("re_type\t%d\n", sc->re_type); + printf("re_res_id\t%d\n", sc->re_res_id); + printf("re_res_type\t%d\n", sc->re_res_type); + printf("re_8169_MacVersion\t%d\n", sc->re_8169_MacVersion); + printf("re_8169_PhyVersion\t%d\n", sc->re_8169_PhyVersion); + printf("tx buffer numer\t%d\n", RE_TX_BUF_NUM); + printf("rx buffer numer\t%d\n", RE_RX_BUF_NUM); + printf("rx_cur_index\t%d\n", sc->re_desc.rx_cur_index); + printf("tx_cur_index\t%d\n", sc->re_desc.tx_cur_index); + printf("tx_last_index\t%d\n", sc->re_desc.tx_last_index); + printf("rx_fifo_overflow\t%d\n", sc->rx_fifo_overflow); + printf("driver_detach\t%d\n", sc->driver_detach); + printf("interface name\tre%d\n", sc->re_unit); + printf("re_revid\t0x%02x\n", sc->re_revid); + printf("re_vendor_id\t0x%04x\n", sc->re_vendor_id); + printf("re_device_id\t0x%04x\n", sc->re_device_id); + printf("re_subvendor_id\t0x%04x\n", sc->re_subvendor_id); + printf("re_subdevice_id\t0x%04x\n", sc->re_subdevice_id); + printf("max_jumbo_frame_size\t%d\n", sc->max_jumbo_frame_size); + printf("re_rx_mbuf_sz\t%d\n", sc->re_rx_mbuf_sz); + printf("re_rx_desc_buf_sz\t%d\n", sc->re_rx_desc_buf_sz); + printf("re_if_flags\t0x%08x\n", sc->re_if_flags); + printf("re_tx_cstag\t%d\n", sc->re_tx_cstag); + printf("re_rx_cstag\t%d\n", sc->re_rx_cstag); + printf("RequireAdcBiasPatch\t%d\n", sc->RequireAdcBiasPatch); + printf("RequireAdjustUpsTxLinkPulseTiming\t%d\n", sc->RequireAdjustUpsTxLinkPulseTiming); + printf("RequiredSecLanDonglePatch\t%d\n", sc->RequiredSecLanDonglePatch); + printf("RequiredPfmPatch\t%d\n", sc->RequiredPfmPatch); + printf("RequirePhyMdiSwapPatch\t%d\n", sc->RequirePhyMdiSwapPatch); + printf("re_efuse_ver\t%d\n", sc->re_efuse_ver); + printf("re_sw_ram_code_ver\t0x%x\n", sc->re_sw_ram_code_ver); + printf("re_hw_ram_code_ver\t0x%x\n", sc->re_hw_ram_code_ver); + printf("cur_page\t0x%x\n", sc->cur_page); + printf("phy_reg_anlpar\t0x%x\n", sc->phy_reg_anlpar); + printf("re_hw_enable_msi_msix\t%d\n", sc->re_hw_enable_msi_msix); + printf("re_coalesce_tx_pkt\t%d\n", sc->re_coalesce_tx_pkt); + printf("link_state\t%s\n", sc->link_state==2?"up":(sc->link_state==1?"down":"unknown")); + printf("prohibit_access_reg\t%d\n", sc->prohibit_access_reg); + printf("re_hw_supp_now_is_oob_ver\t%d\n", sc->re_hw_supp_now_is_oob_ver); + printf("hw_hw_supp_serdes_phy_ver\t%d\n", sc->hw_hw_supp_serdes_phy_ver); + printf("HwSuppDashVer\t%d\n", sc->HwSuppDashVer); + printf("re_dash\t%d\n", sc->re_dash); + printf("re_dash_fw_ver\t0x%08x\n", sc->re_dash_fw_ver); + printf("HwPkgDet\t%d\n", sc->HwPkgDet); + printf("HwFiberModeVer\t%d\n", sc->HwFiberModeVer); + printf("HwFiberStat\t%d\n", sc->HwFiberStat); + printf("HwSuppExtendTallyCounterVer\t%d\n", sc->HwSuppExtendTallyCounterVer); + printf("HwSuppMacMcuVer\t%d\n", sc->HwSuppMacMcuVer); + printf("MacMcuPageSize\t%d\n", sc->MacMcuPageSize); + printf("rx_desc_tag maxsize\t%zd\n", sc->re_desc.rx_desc_tag->common.maxsize); + printf("tx_desc_tag maxsize\t%zd\n", sc->re_desc.tx_desc_tag->common.maxsize); + printf("re_tally maxsize\t%zd\n", sc->re_tally.re_stag->common.maxsize); + printf("random_mac\t%d\n", sc->random_mac); + printf("org_mac_addr\t%6D\n", sc->org_mac_addr, ":"); +#if OS_VER < VERSION(6,0) + printf("dev_addr\t%6D\n", (char *)&sc->arpcom.ac_enaddr, ":"); +#elif OS_VER < VERSION(7,0) + printf("dev_addr\t%6D\n", IFP2ENADDR(sc->re_ifp), ":"); +#else + printf("dev_addr\t%6D\n", IF_LLADDR(sc->re_ifp), ":"); +#endif + printf("msi_disable\t%d\n", msi_disable); + printf("msix_disable\t%d\n", msix_disable); + printf("eee_enable\t%d\n", eee_enable); + printf("prefer_iomap\t%d\n", prefer_iomap); + printf("phy_power_saving\t%d\n", phy_power_saving); + printf("phy_mdix_mode\t%d\n", phy_mdix_mode); + printf("s5wol\t%d\n", s5wol); + printf("s0_magic_packet\t%d\n", s0_magic_packet); + printf("config_soc_lan\t%d\n", config_soc_lan); + printf("interrupt_mitigation\t%d\n", interrupt_mitigation); + printf("re_lro_entry_count\t%d\n", re_lro_entry_count); + printf("re_lro_mbufq_depth\t%d\n", re_lro_mbufq_depth); + + RE_UNLOCK(sc); + } + + return (error); +} + +static int +re_sysctl_stats(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + struct re_stats *stats; + int error, i, result; + bool extend_stats; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + extend_stats = false; + if (sc->HwSuppExtendTallyCounterVer > 0) + extend_stats = true; + if ((sc->re_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { + RE_UNLOCK(sc); + goto done; + } + + if (extend_stats) + re_set_mac_ocp_bit(sc, 0xEA84, (BIT_1 | BIT_0)); + + bus_dmamap_sync(sc->re_tally.re_stag, + sc->re_tally.re_smap, BUS_DMASYNC_PREREAD); + CSR_WRITE_4(sc, RE_DUMPSTATS_HI, + RL_ADDR_HI(sc->re_tally.re_stats_addr)); + CSR_WRITE_4(sc, RE_DUMPSTATS_LO, + RL_ADDR_LO(sc->re_tally.re_stats_addr)); + CSR_WRITE_4(sc, RE_DUMPSTATS_LO, + RL_ADDR_LO(sc->re_tally.re_stats_addr | + RE_DUMPSTATS_START)); + for (i = RE_TIMEOUT; i > 0; i--) { + if ((CSR_READ_4(sc, RE_DUMPSTATS_LO) & + RE_DUMPSTATS_START) == 0) + break; + DELAY(1000); + } + bus_dmamap_sync(sc->re_tally.re_stag, + sc->re_tally.re_smap, BUS_DMASYNC_POSTREAD); + + if (extend_stats) + re_clear_mac_ocp_bit(sc, 0xEA84, (BIT_1 | BIT_0)); + + RE_UNLOCK(sc); + if (i == 0) { + device_printf(sc->dev, + "DUMP statistics request timed out\n"); + return (ETIMEDOUT); + } +done: + stats = sc->re_tally.re_stats; + printf("%s statistics:\n", device_get_nameunit(sc->dev)); + printf("Tx frames : %ju\n", + (uintmax_t)le64toh(stats->re_tx_pkts)); + printf("Rx frames : %ju\n", + (uintmax_t)le64toh(stats->re_rx_pkts)); + printf("Tx errors : %ju\n", + (uintmax_t)le64toh(stats->re_tx_errs)); + printf("Rx errors : %u\n", + le32toh(stats->re_rx_errs)); + printf("Rx missed frames : %u\n", + (uint32_t)le16toh(stats->re_missed_pkts)); + printf("Rx frame alignment errs : %u\n", + (uint32_t)le16toh(stats->re_rx_framealign_errs)); + printf("Tx single collisions : %u\n", + le32toh(stats->re_tx_onecoll)); + printf("Tx multiple collisions : %u\n", + le32toh(stats->re_tx_multicolls)); + printf("Rx unicast frames : %ju\n", + (uintmax_t)le64toh(stats->re_rx_ucasts)); + printf("Rx broadcast frames : %ju\n", + (uintmax_t)le64toh(stats->re_rx_bcasts)); + printf("Rx multicast frames : %u\n", + le32toh(stats->re_rx_mcasts)); + printf("Tx aborts : %u\n", + (uint32_t)le16toh(stats->re_tx_aborts)); + printf("Tx underruns : %u\n", + (uint32_t)le16toh(stats->re_rx_underruns)); + + if (extend_stats) { + printf("%s extend statistics:\n", device_get_nameunit(sc->dev)); + printf("Tx octets : %ju\n", + (uintmax_t)le64toh(stats->re_tx_octets)); + printf("Rx octets : %ju\n", + (uintmax_t)le64toh(stats->re_rx_octets)); + printf("Rx multicast64 : %ju\n", + (uintmax_t)le64toh(stats->re_rx_multicast64)); + printf("Rx unicast64 : %ju\n", + (uintmax_t)le64toh(stats->re_tx_unicast64)); + printf("Tx broadcast64 : %ju\n", + (uintmax_t)le64toh(stats->re_tx_broadcast64)); + printf("Tx multicast64 : %ju\n", + (uintmax_t)le64toh(stats->re_tx_multicast64)); + printf("Tx pause on frames : %u\n", + (uint32_t)le32toh(stats->re_tx_pause_on)); + printf("TTx pause off frames : %u\n", + (uint32_t)le32toh(stats->re_tx_pause_off)); + printf("Tx pause all frames : %u\n", + (uint32_t)le32toh(stats->re_tx_pause_all)); + printf("Tx deferred frames : %u\n", + (uint32_t)le32toh(stats->re_tx_deferred)); + printf("Tx late collisions : %u\n", + (uint32_t)le32toh(stats->re_tx_late_collision)); + printf("Tx all collisions : %u\n", + (uint32_t)le32toh(stats->re_tx_all_collision)); + printf("Tx aborts32 : %u\n", + (uint32_t)le32toh(stats->re_tx_aborted32)); + printf("Rx alignment errs32 : %u\n", + (uint32_t)le32toh(stats->re_align_errors32)); + printf("Rx frame too long : %u\n", + (uint32_t)le32toh(stats->re_rx_frame_too_long)); + printf("Rx runt : %u\n", + (uint32_t)le32toh(stats->re_rx_runt)); + printf("Rx pause on frames : %u\n", + (uint32_t)le32toh(stats->re_rx_pause_on)); + printf("Rx pause off frames : %u\n", + (uint32_t)le32toh(stats->re_rx_pause_off)); + printf("Rx pause all frames : %u\n", + (uint32_t)le32toh(stats->re_rx_pause_all)); + printf("Rx unknown opcode : %u\n", + (uint32_t)le32toh(stats->re_rx_unknown_opcode)); + printf("Rx mac error : %u\n", + (uint32_t)le32toh(stats->re_rx_mac_error)); + printf("Tx underruns32 : %u\n", + (uint32_t)le32toh(stats->re_tx_underrun32)); + printf("Rx mac missed : %u\n", + (uint32_t)le32toh(stats->re_rx_mac_missed)); + printf("Rx tcam drops : %u\n", + (uint32_t)le32toh(stats->re_rx_tcam_dropped)); + printf("Tx desc unavailable : %u\n", + (uint32_t)le32toh(stats->re_tdu)); + printf("Rx desc unavailable : %u\n", + (uint32_t)le32toh(stats->re_rdu)); + } + } + + return (error); +} + +static void +re_printf_macio(struct re_softc *sc, + u_int32_t start, + u_int32_t end) +{ + int i, n; + + printf("\n%s mac io start:0x%05x end:0x%05x:\n", + device_get_nameunit(sc->dev), + start, end); + + for (n=start; nnewptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + max = min(256, rman_get_size(sc->re_res)); + re_printf_macio(sc, 0, max); + + RE_UNLOCK(sc); + } + + return (error); +} + +static int +re_sysctl_registers2(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + int error, max, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + max = min(0x4000, rman_get_size(sc->re_res)); + re_printf_macio(sc, 0, max); + + RE_UNLOCK(sc); + } + + return (error); +} + +static int +re_sysctl_registers3(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + int error, max, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + max = min(0x8000, rman_get_size(sc->re_res)); + re_printf_macio(sc, 0x4000, max); + + RE_UNLOCK(sc); + } + + return (error); +} + +static int +re_sysctl_registers4(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + int error, max, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + max = min(0xC000, rman_get_size(sc->re_res)); + re_printf_macio(sc, 0x8000, max); + + RE_UNLOCK(sc); + } + + return (error); +} + +static int +re_sysctl_registers5(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + int error, max, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + max = min(0x10000, rman_get_size(sc->re_res)); + re_printf_macio(sc, 0xC000, max); + + RE_UNLOCK(sc); + } + + return (error); +} + +static int +re_sysctl_eth_phy(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + int error, i, n, max, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + printf("%s ethernet phy:\n", device_get_nameunit(sc->dev)); + + max = 16; + re_mdio_write(sc, 0x1F, 0x0000); + for (n=0; nnewptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + printf("%s rx desc:%d\n", device_get_nameunit(sc->dev), + RE_RX_BUF_NUM); + + rx_list_size = sc->re_desc.rx_desc_tag->common.maxsize; + re_dump_desc((void*)sc->re_desc.rx_desc, rx_list_size); + + RE_UNLOCK(sc); + } + + return (error); +} + +static int +re_sysctl_dump_tx_desc(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + bus_size_t tx_list_size; + int error, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + printf("%s tx desc:%d\n", device_get_nameunit(sc->dev), + RE_TX_BUF_NUM); + + tx_list_size = sc->re_desc.tx_desc_tag->common.maxsize; + re_dump_desc((void*)sc->re_desc.tx_desc, tx_list_size); + + RE_UNLOCK(sc); + } + + return (error); +} + +static int +re_sysctl_pcie_phy(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + int error, i, n, max, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + printf("%s pcie phy:\n", device_get_nameunit(sc->dev)); + + max = 31; + for (n=0; nnewptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + printf("%s extended registers:\n", device_get_nameunit(sc->dev)); + + max = 0x100; + for (n=0; nnewptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + printf("%s pci registers:\n", device_get_nameunit(sc->dev)); + + max = 0x100; + for (n=0; nre_type) { + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_74: + case MACFG_75: + case MACFG_76: + n = 0x180; + break; + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_82: + case MACFG_83: + n = 0x214; + break; + case MACFG_80: + case MACFG_81: + n = 0x264; + break; + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + n = 0x210; + break; + case MACFG_90: + case MACFG_91: + case MACFG_92: + n = 0x22C; + break; + default: + n = 0; + break; + } + if (n > 0) + printf("\n0x%03x:\t%08x ", n, re_csi_other_fun_read(sc, 0, n | 0xF000)); + + n = 0x70c; + printf("\n0x%03x:\t%08x ", n, re_csi_read(sc, n | 0xF000)); + + RE_UNLOCK(sc); + } + + return (error); +} + +static int +re_sysctl_msix_tbl(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + int error, i, j, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + sc = (struct re_softc *)arg1; + + if (sc->re_res_pba == NULL) + return EPERM; + + if (result == 1) { + RE_LOCK(sc); + + printf("%s msix table:\n", device_get_nameunit(sc->dev)); + + for (i=0; i<4; i++) { + printf("\n0x%04x:\t", i); + + for (j=0; j<4; j++) + printf("%08x ", + RE_MSIX_TBL_READ_4( + sc, i*0x10 + 4 * j)); + } + + RE_UNLOCK(sc); + } + + return (error); +} + +/* +* Attach the interface. Allocate softc structures, do ifmedia +* setup and ethernet/BPF attach. +*/ +static int re_attach(device_t dev) +{ + /*int s;*/ + bus_size_t rx_list_size, tx_list_size; + u_char eaddr[ETHER_ADDR_LEN]; + u_int32_t command; + struct re_softc *sc; + struct ifnet *ifp; + int unit, error = 0, rid; + int reg; + int msic=0, msixc=0; + + /*s = splimp();*/ + + sc = device_get_softc(dev); + unit = device_get_unit(dev); + bzero(sc, sizeof(struct re_softc)); + RE_LOCK_INIT(sc,device_get_nameunit(dev)); + sc->dev = dev; + + sc->driver_detach = 0; + + sc->re_vendor_id = pci_get_vendor(dev); + sc->re_device_id = pci_get_device(dev); + sc->re_subvendor_id = pci_get_subvendor(dev); + sc->re_subdevice_id = pci_get_subdevice(dev); + sc->re_revid = pci_get_revid(dev); + pci_enable_busmaster(dev); + + /* + * Map control/status registers. + */ + command = pci_read_config(dev, PCIR_COMMAND, 4); + command |= (PCIM_CMD_PORTEN|PCIM_CMD_MEMEN|PCIM_CMD_BUSMASTEREN); + pci_write_config(dev, PCIR_COMMAND, command, 4); + + if (prefer_iomap == 0) { + sc->re_res_id = PCIR_BAR(2); + sc->re_res_type = SYS_RES_MEMORY; + /* PCI NIC use different BARs. */ + if (sc->re_device_id == RT_DEVICEID_8169 || sc->re_device_id == RT_DEVICEID_8169SC) + sc->re_res_id = PCIR_BAR(1); + } else { + sc->re_res_id = PCIR_BAR(0); + sc->re_res_type = SYS_RES_IOPORT; + } + sc->re_res = bus_alloc_resource(dev, sc->re_res_type, &sc->re_res_id, + 0, ~0, 1, RF_ACTIVE); + if (sc->re_res == NULL && prefer_iomap == 0) { + sc->re_res_id = PCIR_BAR(0); + sc->re_res_type = SYS_RES_IOPORT; + sc->re_res = bus_alloc_resource(dev, sc->re_res_type, &sc->re_res_id, + 0, ~0, 1, RF_ACTIVE); + } + + if (sc->re_res == NULL) { + device_printf(dev,"couldn't map ports/memory\n"); + error = ENXIO; + goto fail; + } + + if (sc->re_res_type == SYS_RES_IOPORT) + device_printf(dev, "Using I/O Ports\n"); + else + device_printf(dev, "Using Memory Mapping!\n"); + + sc->re_btag = rman_get_bustag(sc->re_res); + sc->re_bhandle = rman_get_bushandle(sc->re_res); + + error = re_check_mac_version(sc); + + if (error) { + goto fail; + } + + re_init_software_variable(sc); + +#if OS_VER >= VERSION(7,0) + msic = pci_msi_count(dev); + msixc = pci_msix_count(dev); + if (pci_find_cap(dev, PCIY_EXPRESS, ®) == 0) { + sc->re_if_flags |= RL_FLAG_PCIE; + sc->re_expcap = reg; + } else { + sc->re_if_flags &= ~RL_FLAG_PCIE; + sc->re_expcap = 0; + } + + //device_printf(dev, "MSI count : %d\n", msic); + //device_printf(dev, "MSI-X count : %d\n", msixc); + if (sc->re_hw_enable_msi_msix == FALSE) { + msixc = 0; + msic = 0; + } + if (msix_disable > 0) + msixc = 0; + if (msi_disable > 0) + msic = 0; + + /* Prefer MSI-X to MSI. */ + if (msixc > 0) { + rid = PCIR_BAR(4); + msixc = RL_MSI_MESSAGES; + sc->re_res_pba = bus_alloc_resource_any(dev, SYS_RES_MEMORY, + &rid, RF_ACTIVE); + if (sc->re_res_pba == NULL) { + device_printf(dev, + "could not allocate MSI-X PBA resource\n"); + } + if (sc->re_res_pba != NULL && + pci_alloc_msix(dev, &msixc) == 0) { + if (msixc == RL_MSI_MESSAGES) { + device_printf(dev, "Using %d MSI-X message\n", + msixc); + sc->re_if_flags |= RL_FLAG_MSIX; + } else + pci_release_msi(dev); + } + if ((sc->re_if_flags & RL_FLAG_MSIX) == 0) { + if (sc->re_res_pba != NULL) + bus_release_resource(dev, SYS_RES_MEMORY, rid, + sc->re_res_pba); + sc->re_res_pba = NULL; + msixc = 0; + } + + if (sc->re_res_pba != NULL) { + sc->re_msix_tbl_tag = rman_get_bustag(sc->re_res_pba); + sc->re_msix_tbl_handle = rman_get_bushandle(sc->re_res_pba); + } + } + + /* Prefer MSI to INTx. */ + if (msixc == 0 && msic > 0) { + msic = RL_MSI_MESSAGES; + if (pci_alloc_msi(dev, &msic) == 0) { + if (msic == RL_MSI_MESSAGES) { + device_printf(dev, "Using %d MSI message\n", + msic); + sc->re_if_flags |= RL_FLAG_MSI; + } else + pci_release_msi(dev); + } + if ((sc->re_if_flags & RL_FLAG_MSI) == 0) + msic = 0; + } +#endif //OS_VER >= VERSION(7,0) + + if ((sc->re_if_flags & (RL_FLAG_MSI | RL_FLAG_MSIX)) == 0) { + rid = 0; + sc->re_irq = bus_alloc_resource(dev, SYS_RES_IRQ, &rid, 0, ~0, 1, + RF_SHAREABLE | RF_ACTIVE); + + if (sc->re_irq == NULL) { + device_printf(dev,"couldn't map interrupt\n"); + error = ENXIO; + goto fail; + } + device_printf(dev, "Using line-based interrupt\n"); + } else { + rid = 1; + sc->re_irq = bus_alloc_resource_any(dev, + SYS_RES_IRQ, &rid, RF_ACTIVE); + if (sc->re_irq == NULL) { + device_printf(dev, + "couldn't allocate IRQ resources for " + "message %d\n", rid); + error = ENXIO; + goto fail; + } + } + +#if OS_VER >= VERSION(7,3) + /* Disable ASPM L0S/L1 and Clock Request. */ + if (sc->re_expcap != 0) { + u_int32_t cap, ctl; + cap = pci_read_config(dev, sc->re_expcap + + RE_PCIER_LINK_CAP, 2); + if ((cap & RE_PCIEM_LINK_CAP_ASPM) != 0) { + ctl = pci_read_config(dev, sc->re_expcap + + RE_PCIER_LINK_CTL, 2); + if ((ctl & 0x0103) != 0) { + ctl &= ~0x0103; + pci_write_config(dev, sc->re_expcap + + RE_PCIER_LINK_CTL, ctl, 2); + device_printf(dev, "ASPM disabled\n"); + } + } else + device_printf(dev, "no ASPM capability\n"); + } +#endif //OS_VER >= VERSION(7,3) + + re_init_timer(sc); + + RE_LOCK(sc); + re_exit_oob(sc); + re_hw_init(sc); + RE_UNLOCK(sc); + + /* + * Reset the adapter. Only take the lock here as it's needed in + * order to call re_reset(). + */ + RE_LOCK(sc); + re_reset(sc); + RE_UNLOCK(sc); + + sc->re_unit = unit; + + if (sc->re_type == MACFG_3) { /* Change PCI Latency time*/ + pci_write_config(dev, RE_PCI_LATENCY_TIMER, 0x40, 1); + } + + error = bus_dma_tag_create( +#if OS_VER < VERSION(7,0) + NULL, +#else + bus_get_dma_tag(dev), /* parent */ +#endif + 1, 0, /* alignment, boundary */ + BUS_SPACE_MAXADDR, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + BUS_SPACE_MAXSIZE_32BIT, /* maxsize */ + 0, /* nsegments */ + BUS_SPACE_MAXSIZE_32BIT, /* maxsegsize */ + 0, /* flags */ + NULL, NULL, /* lockfunc, lockarg */ + &sc->re_parent_tag); + + rx_list_size = sizeof(union RxDesc) * (RE_RX_BUF_NUM + 1); + error = bus_dma_tag_create( + sc->re_parent_tag, + RE_DESC_ALIGN, 0, /* alignment, boundary */ + BUS_SPACE_MAXADDR, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + rx_list_size, /* maxsize */ + 1, /* nsegments */ + rx_list_size, /* maxsegsize */ + 0, /* flags */ + NULL, NULL, /* lockfunc, lockarg */ + &sc->re_desc.rx_desc_tag); + if (error) { + device_printf(dev,"bus_dma_tag_create fail\n"); + goto fail; + } + + error = bus_dmamem_alloc(sc->re_desc.rx_desc_tag, + (void**) &sc->re_desc.rx_desc, + BUS_DMA_WAITOK|BUS_DMA_COHERENT|BUS_DMA_ZERO, + &sc->re_desc.rx_desc_dmamap); + if (error) { + device_printf(dev,"bus_dmamem_alloc fail\n"); + goto fail; + } + + tx_list_size = sizeof(union TxDesc) * (RE_TX_BUF_NUM + 1); + error = bus_dma_tag_create( + sc->re_parent_tag, + RE_DESC_ALIGN, 0, /* alignment, boundary */ + BUS_SPACE_MAXADDR, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + tx_list_size, /* maxsize */ + 1, /* nsegments */ + tx_list_size, /* maxsegsize */ + 0, /* flags */ + NULL, NULL, /* lockfunc, lockarg */ + &sc->re_desc.tx_desc_tag); + if (error) { + device_printf(dev,"bus_dma_tag_create fail\n"); + goto fail; + } + + error = bus_dmamem_alloc(sc->re_desc.tx_desc_tag, + (void**) &sc->re_desc.tx_desc, + BUS_DMA_WAITOK|BUS_DMA_COHERENT|BUS_DMA_ZERO, + &sc->re_desc.tx_desc_dmamap); + + if (error) { + device_printf(dev,"bus_dmamem_alloc fail\n"); + goto fail; + } + + sc->re_tx_cstag =1; + sc->re_rx_cstag =1; + + error = re_alloc_stats(dev, sc); + if (error) + goto fail; + re_add_sysctls(sc); + +#if OS_VER < VERSION(6,0) + ifp = &sc->arpcom.ac_if; +#else + ifp = sc->re_ifp = if_alloc(IFT_ETHER); + if (ifp == NULL) { + device_printf(dev, "can not if_alloc()\n"); + error = ENOSPC; + goto fail; + } +#endif + ifp->if_softc = sc; +#if OS_VER < VERSION(5,3) + ifp->if_unit = unit; + ifp->if_name = "re"; +#else + if_initname(ifp, device_get_name(dev), device_get_unit(dev)); +#endif + ifp->if_mtu = ETHERMTU; + ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; + ifp->if_ioctl = re_ioctl; + ifp->if_output = ether_output; + ifp->if_start = re_start; +#if OS_VER < VERSION(7,0) + ifp->if_watchdog = re_watchdog; +#endif + if ((sc->re_type == MACFG_24) || (sc->re_type == MACFG_25) || (sc->re_type == MACFG_26)) + ifp->if_hwassist |= CSUM_TCP | CSUM_UDP; + else + ifp->if_hwassist |= RE_CSUM_FEATURES; + ifp->if_capabilities = IFCAP_HWCSUM | IFCAP_HWCSUM_IPV6; + /* TSO capability setup */ + if (sc->re_if_flags & RL_FLAG_8168G_PLUS) { + ifp->if_hwassist |= CSUM_TSO; + ifp->if_capabilities |= IFCAP_TSO; + } + /* RTL8169/RTL8101E/RTL8168B not support TSO v6 */ + if (!(sc->re_if_flags & RL_FLAG_DESCV2)) { + ifp->if_hwassist &= ~(CSUM_IP6_TSO | + CSUM_TCP_IPV6 | + CSUM_UDP_IPV6); + ifp->if_capabilities &= ~(IFCAP_TSO6 | IFCAP_HWCSUM_IPV6); + } + ifp->if_init = re_init; + /* VLAN capability setup */ + ifp->if_capabilities |= IFCAP_VLAN_MTU | IFCAP_VLAN_HWTAGGING; + /* LRO capability setup */ + ifp->if_capabilities |= IFCAP_LRO; + + /* Enable WOL if PM is supported. */ + if (pci_find_cap(sc->dev, PCIY_PMG, ®) == 0) + ifp->if_capabilities |= IFCAP_WOL; + ifp->if_capenable = ifp->if_capabilities; + ifp->if_capenable &= ~(IFCAP_WOL_UCAST | IFCAP_WOL_MCAST); + /* + * Default disable ipv6 tso. + */ + ifp->if_hwassist &= ~CSUM_IP6_TSO; + ifp->if_capenable &= ~IFCAP_TSO6; + + /* Not enable LRO for OS version lower than 11.0 */ +#if OS_VER < VERSION(11,0) + ifp->if_capenable &= ~IFCAP_LRO; +#endif + /* Get station address. */ + RE_LOCK(sc); + re_get_hw_mac_address(sc, eaddr); + RE_UNLOCK(sc); + + /* + * A RealTek chip was detected. Inform the world. + */ + device_printf(dev,"version:%s\n", RE_VERSION); + device_printf(dev,"Ethernet address: %6D\n", eaddr, ":"); + if (HW_DASH_SUPPORT_DASH(sc)) { + device_printf(dev,"DASH status: %s\n", sc->re_dash?"enabled":"disabled"); + if (sc->re_dash) + device_printf(dev,"DASH FW: 0x%08x\n", sc->re_dash_fw_ver); + } + printf("\nThis product is covered by one or more of the following patents: \ + \nUS6,570,884, US6,115,776, and US6,327,625.\n"); + +#if OS_VER < VERSION(6,0) + bcopy(eaddr, (char *)&sc->arpcom.ac_enaddr, ETHER_ADDR_LEN); +#endif + bcopy(eaddr, (char *)&sc->org_mac_addr, ETHER_ADDR_LEN); + + RE_LOCK(sc); + re_phy_power_up(dev); + re_hw_phy_config(sc); + re_clrwol(sc); + + set_rxbufsize(sc); + error =re_alloc_buf(sc); + + if (error) { + RE_UNLOCK(sc); + goto fail; + } + + /* Init descriptors. */ + re_var_init(sc); + + RE_UNLOCK(sc); + + switch(sc->re_device_id) { + case RT_DEVICEID_8126: + ifp->if_baudrate = 50000000000; + break; + case RT_DEVICEID_8125: + case RT_DEVICEID_3000: + ifp->if_baudrate = 25000000000; + break; + case RT_DEVICEID_8169: + case RT_DEVICEID_8169SC: + case RT_DEVICEID_8168: + case RT_DEVICEID_8161: + case RT_DEVICEID_8162: + ifp->if_baudrate = 1000000000; + break; + default: + ifp->if_baudrate = 100000000; + break; + } + IFQ_SET_MAXLEN(&ifp->if_snd, IFQ_MAXLEN); + ifp->if_snd.ifq_drv_maxlen = IFQ_MAXLEN; + IFQ_SET_READY(&ifp->if_snd); + + switch (sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + sc->ifmedia_upd = re_ifmedia_upd_8125; + sc->ifmedia_sts = re_ifmedia_sts_8125; + sc->intr = re_intr_8125; + sc->int_task = re_int_task_8125; + sc->int_task_poll = re_int_task_8125_poll; + sc->hw_start_unlock = re_hw_start_unlock_8125; + break; + default: + sc->ifmedia_upd = re_ifmedia_upd; + sc->ifmedia_sts = re_ifmedia_sts; + sc->intr = re_intr; + sc->int_task = re_int_task; + sc->int_task_poll = re_int_task_poll; + sc->hw_start_unlock = re_hw_start_unlock; + break; + } + + error = re_config_soft_lro(sc); + + if (error) + goto fail; + + /* + * Specify the media types supported by this adapter and register + * callbacks to update media and link information + */ + ifmedia_init(&sc->media, IFM_IMASK, sc->ifmedia_upd, sc->ifmedia_sts); + ifmedia_add(&sc->media, IFM_ETHER | IFM_10_T, 0, NULL); + ifmedia_add(&sc->media, IFM_ETHER | IFM_10_T | IFM_FDX, 0, NULL); + ifmedia_add(&sc->media, IFM_ETHER | IFM_100_TX, 0, NULL); + ifmedia_add(&sc->media, IFM_ETHER | IFM_100_TX | IFM_FDX, 0, NULL); + switch(sc->re_device_id) { + case RT_DEVICEID_8125: + case RT_DEVICEID_3000: + case RT_DEVICEID_8126: + case RT_DEVICEID_8169: + case RT_DEVICEID_8169SC: + case RT_DEVICEID_8168: + case RT_DEVICEID_8161: + case RT_DEVICEID_8162: + ifmedia_add(&sc->media, IFM_ETHER | IFM_1000_T | IFM_FDX, 0, NULL); + break; + default: + break; + } + switch(sc->re_device_id) { + case RT_DEVICEID_8126: + ifmedia_add(&sc->media, IFM_ETHER | IFM_5000_T | IFM_FDX, 0, NULL); + /* FALLTHROUGH */ + case RT_DEVICEID_8125: + case RT_DEVICEID_3000: + ifmedia_add(&sc->media, IFM_ETHER | IFM_2500_T | IFM_FDX, 0, NULL); + break; + default: + break; + } + ifmedia_add(&sc->media, IFM_ETHER | IFM_AUTO, 0, NULL); + ifmedia_set(&sc->media, IFM_ETHER | IFM_AUTO); + sc->media.ifm_media = IFM_ETHER | IFM_AUTO; + +#if OS_VER >= VERSION(13,0) + NET_TASK_INIT(&sc->re_inttask, 0, sc->int_task, sc); + NET_TASK_INIT(&sc->re_inttask_poll, 0, sc->int_task_poll, sc); +#elif OS_VER>=VERSION(7,0) + TASK_INIT(&sc->re_inttask, 0, sc->int_task, sc); + TASK_INIT(&sc->re_inttask_poll, 0, sc->int_task_poll, sc); +#endif + +#if OS_VER>=VERSION(7,0) + sc->re_tq = taskqueue_create_fast("re_taskq", M_WAITOK, + taskqueue_thread_enqueue, &sc->re_tq); + if (sc->re_tq == NULL) { + error = ENOMEM; + goto fail_intr; + } + error = taskqueue_start_threads(&sc->re_tq, 1, PI_NET, "%s taskq", + device_get_nameunit(dev)); + if (error) goto fail_intr; +#endif + +#if OS_VER < VERSION(7,0) + error = bus_setup_intr(dev, sc->re_irq, INTR_TYPE_NET, + sc->intr, sc, &sc->re_intrhand); +#else + error = bus_setup_intr(dev, sc->re_irq, INTR_TYPE_NET|INTR_MPSAFE, + sc->intr, NULL, sc, &sc->re_intrhand); +#endif + + if (error) goto fail_intr; + + RE_LOCK(sc); + sc->ifmedia_upd(ifp); + RE_UNLOCK(sc); + + /* + * Call MI attach routine. + */ + /*#if OS_VER < VERSION(5, 1)*/ +#if OS_VER < VERSION(4,9) + ether_ifattach(ifp, ETHER_BPF_SUPPORTED); +#else + ether_ifattach(ifp, eaddr); +#endif + +fail_intr: + if (error) { + device_printf(dev, "couldn't set up interrupt handler\n"); +#if OS_VER < VERSION(4,9) + ether_ifdetach(ifp, ETHER_BPF_SUPPORTED); +#else + ether_ifdetach(ifp); +#endif + } + +fail: + if (error) + re_detach(dev); + + return(error); +} + +static int re_detach(device_t dev) +{ + struct re_softc *sc; + struct ifnet *ifp; + /*int s;*/ + int i; + int rid; + + /*s = splimp();*/ + + sc = device_get_softc(dev); + + ifp = RE_GET_IFNET(sc); + + re_free_soft_lro(sc); + + /* These should only be active if attach succeeded */ + if (device_is_attached(dev)) { + RE_LOCK(sc); + re_stop(sc); + RE_UNLOCK(sc); +#if OS_VER < VERSION(4,9) + ether_ifdetach(ifp, ETHER_BPF_SUPPORTED); +#else + ether_ifdetach(ifp); +#endif + } + + if (HW_DASH_SUPPORT_DASH(sc) && sc->re_res) { + RE_LOCK(sc); + re_driver_stop(sc); + RE_UNLOCK(sc); + } + +#if OS_VER>=VERSION(7,0) + if (sc->re_tq) { + taskqueue_drain(sc->re_tq, &sc->re_inttask); + taskqueue_drain(sc->re_tq, &sc->re_inttask_poll); + taskqueue_free(sc->re_tq); + } +#endif + + bus_generic_detach(dev); + + sc->driver_detach = 1; + + if (sc->re_intrhand) + bus_teardown_intr(dev, sc->re_irq, sc->re_intrhand); + +#if OS_VER>=VERSION(6,0) + if (ifp) + if_free(ifp); +#endif + + if ((sc->re_if_flags & (RL_FLAG_MSI | RL_FLAG_MSIX)) == 0) + rid = 0; + else + rid = 1; + if (sc->re_irq) { + bus_release_resource(dev, SYS_RES_IRQ, rid, sc->re_irq); + sc->re_irq = NULL; + } + if ((sc->re_if_flags & (RL_FLAG_MSI | RL_FLAG_MSIX)) != 0) + pci_release_msi(dev); + if (sc->re_res_pba) { + rid = PCIR_BAR(4); + bus_release_resource(dev, SYS_RES_MEMORY, rid, sc->re_res_pba); + } + if (sc->re_res) + bus_release_resource(dev, sc->re_res_type, sc->re_res_id, sc->re_res); + + if (HW_DASH_SUPPORT_TYPE_3(sc) && sc->re_dash) + bus_space_unmap(sc->re_cmac_tag, sc->re_mapped_cmac_handle, RE_REGS_SIZE); + + if (sc->re_desc.re_rx_mtag) { + for (i = 0; i < RE_RX_BUF_NUM; i++) { + if (sc->re_desc.rx_buf[i]!=NULL) { + bus_dmamap_sync(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[i], + BUS_DMASYNC_POSTREAD); + bus_dmamap_unload(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[i]); + bus_dmamap_destroy(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[i]); + m_freem(sc->re_desc.rx_buf[i]); + sc->re_desc.rx_buf[i] =NULL; + } + } + bus_dma_tag_destroy(sc->re_desc.re_rx_mtag); + sc->re_desc.re_rx_mtag =0; + } + + if (sc->re_desc.re_tx_mtag) { + for (i = 0; i < RE_TX_BUF_NUM; i++) { + bus_dmamap_destroy(sc->re_desc.re_tx_mtag, + sc->re_desc.re_tx_dmamap[i]); + } + bus_dma_tag_destroy(sc->re_desc.re_tx_mtag); + sc->re_desc.re_tx_mtag =0; + } + + if (sc->re_desc.rx_desc_tag) { + bus_dmamap_sync(sc->re_desc.rx_desc_tag, + sc->re_desc.rx_desc_dmamap, + BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(sc->re_desc.rx_desc_tag, + sc->re_desc.rx_desc_dmamap); + bus_dmamem_free(sc->re_desc.rx_desc_tag, + sc->re_desc.rx_desc, + sc->re_desc.rx_desc_dmamap); + bus_dma_tag_destroy(sc->re_desc.rx_desc_tag); + } + + if (sc->re_desc.tx_desc_tag) { + bus_dmamap_sync(sc->re_desc.tx_desc_tag, + sc->re_desc.tx_desc_dmamap, + BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(sc->re_desc.tx_desc_tag, + sc->re_desc.tx_desc_dmamap); + bus_dmamem_free(sc->re_desc.tx_desc_tag, + sc->re_desc.tx_desc, + sc->re_desc.tx_desc_dmamap); + bus_dma_tag_destroy(sc->re_desc.tx_desc_tag); + } + + /* Unload and free the stats buffer and map */ + + if (sc->re_tally.re_stag) { + if (sc->re_tally.re_stats_addr) + bus_dmamap_unload(sc->re_tally.re_stag, + sc->re_tally.re_smap); + if (sc->re_tally.re_stats) + bus_dmamem_free(sc->re_tally.re_stag, + sc->re_tally.re_stats, sc->re_tally.re_smap); + bus_dma_tag_destroy(sc->re_tally.re_stag); + } + + if (sc->re_parent_tag) { + bus_dma_tag_destroy(sc->re_parent_tag); + } + + /*splx(s);*/ + RE_LOCK_DESTROY(sc); + + return(0); +} + +static void +re_link_state_change(struct ifnet *ifp, int link_state) +{ +#if OS_VER>=VERSION(6,0) + if_link_state_change(ifp, link_state); +#else + ifp->if_link_state = link_state +#endif +} + +/* + * Device suspend routine. Stop the interface and save some PCI + * settings in case the BIOS doesn't restore them properly on + * resume. + */ +static int +re_suspend(device_t dev) +{ + struct re_softc *sc; + struct ifnet *ifp; + + sc = device_get_softc(dev); + RE_LOCK(sc); + ifp = RE_GET_IFNET(sc); + sc->re_link_chg_det = 0; + sc->phy_reg_anlpar = re_get_phy_lp_ability(sc); + re_stop(sc); + re_hw_d3_para(sc); + re_setwol(sc); + if (HW_DASH_SUPPORT_DASH(sc)) + re_driver_stop(sc); + sc->suspended = 1; + sc->link_state = LINK_STATE_UNKNOWN; + re_link_state_change(ifp, sc->link_state); + sc->prohibit_access_reg = 1; + RE_UNLOCK(sc); + + return (0); +} + +/* + * Device resume routine. Restore some PCI settings in case the BIOS + * doesn't, re-enable busmastering, and restart the interface if + * appropriate. + */ +static int +re_resume(device_t dev) +{ + struct re_softc *sc; + struct ifnet *ifp; + + sc = device_get_softc(dev); + + RE_LOCK(sc); + + ifp = RE_GET_IFNET(sc); + + sc->prohibit_access_reg = 0; + + re_exit_oob(sc); + + re_hw_init(sc); + + re_reset(sc); + + re_phy_power_up(dev); + + re_hw_phy_config(sc); + + /* + * Clear WOL matching such that normal Rx filtering + * wouldn't interfere with WOL patterns. + */ + re_clrwol(sc); + + RE_UNLOCK(sc); + + RE_LOCK(sc); + sc->ifmedia_upd(ifp); + sc->suspended = 0; + if (ifp->if_flags & IFF_UP) { + sc->re_link_chg_det = 1; + re_start_timer(sc); + } + RE_UNLOCK(sc); + + return (0); +} + +static void +re_clear_set_ephy_bit( + struct re_softc *sc, + u_int8_t addr, + u_int16_t clearmask, + u_int16_t setmask +) +{ + u_int16_t EphyValue; + + EphyValue = re_ephy_read(sc, addr); + EphyValue &= ~clearmask; + EphyValue |= setmask; + re_ephy_write(sc, addr, EphyValue); +} + +static void +re_clear_ephy_bit( + struct re_softc *sc, + u_int8_t addr, + u_int16_t mask +) +{ + re_clear_set_ephy_bit(sc, + addr, + mask, + 0 + ); +} + +static void +re_set_ephy_bit( + struct re_softc *sc, + u_int8_t addr, + u_int16_t mask +) +{ + re_clear_set_ephy_bit(sc, + addr, + 0, + mask + ); +} + +static void +re_set_offset70f(struct re_softc *sc, u_int8_t setting) +{ + //Set PCI configuration space offset 0x79 to setting + u_int32_t data32; + + data32 = re_csi_read(sc, 0x870c); + data32 &= 0x00FFFFFF; + data32 |= (setting << 24); + re_csi_write(sc, 0x870c, data32); +} + +static void +re_set_offset79(struct re_softc *sc, u_int8_t setting) +{ + //Set PCI configuration space offset 0x79 to setting + u_int8_t data8; + + if (config_soc_lan) + return; + + setting &= 0x70; + data8 = pci_read_config(sc->dev, 0x79, 1); + data8 &= ~0x70; + data8 |= setting; + pci_write_config(sc->dev, 0x79, data8, 1); +} + +/* + * Stop all chip I/O so that the kernel's probe routines don't + * get confused by errant DMAs when rebooting. + */ +static int re_shutdown(device_t dev) /* The same with re_stop(sc) */ +{ + struct re_softc *sc; + + sc = device_get_softc(dev); + + RE_LOCK(sc); + sc->re_link_chg_det = 0; + sc->phy_reg_anlpar = re_get_phy_lp_ability(sc); + re_stop(sc); + RE_UNLOCK(sc); + + RE_LOCK(sc); + re_hw_d3_para(sc); + if (s5wol == 0) { + re_phy_power_down(dev); + } else { + struct ifnet *ifp; + ifp = RE_GET_IFNET(sc); + ifp->if_capenable = IFCAP_WOL_MAGIC; + re_setwol(sc); + } + + if (HW_DASH_SUPPORT_DASH(sc)) + re_driver_stop(sc); + RE_UNLOCK(sc); + + return 0; +} + +static void re_set_eee_lpi_timer(struct re_softc *sc) +{ + struct ifnet *ifp; + + ifp = RE_GET_IFNET(sc); + + switch (sc->re_type) { + case MACFG_68: + case MACFG_69: + case MACFG_74: + case MACFG_75: + case MACFG_76: + re_mac_ocp_write(sc, RE_EEE_TXIDLE_TIMER_8168, ifp->if_mtu + ETHER_HDR_LEN + 0x20); + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + CSR_WRITE_2(sc, RE_EEE_TXIDLE_TIMER_8125, ifp->if_mtu + ETHER_HDR_LEN + 0x20); + break; + default: + break; + } +} + +static void re_set_pfm_patch(struct re_softc *sc, bool enable) +{ + if (!sc->RequiredPfmPatch) + goto exit; + + if (enable) { + re_set_mac_ocp_bit(sc, 0xD3F0, BIT_0); + re_set_mac_ocp_bit(sc, 0xD3F2, BIT_0); + re_set_mac_ocp_bit(sc, 0xE85A, BIT_6); + } else { + re_clear_mac_ocp_bit(sc, 0xD3F0, BIT_0); + re_clear_mac_ocp_bit(sc, 0xD3F2, BIT_0); + re_clear_mac_ocp_bit(sc, 0xE85A, BIT_6); + } + +exit: + return; +} + +static void re_hw_start_unlock(struct re_softc *sc) +{ + struct ifnet *ifp; + u_int32_t macver; + u_int8_t data8; + u_int16_t data16 = 0; + u_int32_t Data32; + + ifp = RE_GET_IFNET(sc); + + /* Init descriptors. */ + re_var_init(sc); + + re_enable_cfg9346_write(sc); + + switch(sc->re_type) { + case MACFG_36: + case MACFG_37: + case MACFG_38: + case MACFG_39: + case MACFG_42: + case MACFG_43: + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_53: + case MACFG_54: + case MACFG_55: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + _re_enable_aspm_clkreq_lock(sc, 0); + re_enable_force_clkreq(sc, 0); + break; + } + + /*disable Link Down Power Saving(non-LDPS)*/ + /*CSR_WRITE_1(sc, RE_LDPS, 0x05);*/ + /*ldps= CSR_READ_1(sc, RE_LDPS);*/ + + re_set_eee_lpi_timer(sc); + + CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); + if (interrupt_mitigation) + CSR_WRITE_2(sc, RE_IntrMitigate, 0x5f51); + else + CSR_WRITE_2(sc, RE_IntrMitigate, 0x0000); + + CSR_WRITE_1(sc, RE_MTPS, 0x3f); + + if (sc->re_device_id == RT_DEVICEID_8169 || sc->re_device_id == RT_DEVICEID_8169SC) { + //do nothing + } else { + /* Set the initial TX configuration.*/ + CSR_WRITE_4(sc, RE_TXCFG, RE_TXCFG_CONFIG); + } + + macver = CSR_READ_4(sc, RE_TXCFG) & 0xFC800000; + if (macver == 0x00800000 || macver == 0x04000000 || macver == 0x10000000) { + CSR_WRITE_2(sc, RE_CPlusCmd, 0x0063| ((sc->re_type == MACFG_3 && sc->re_8169_MacVersion==1) ? 0x4008:0)); + } else if (macver == 0x18000000 || macver == 0x98000000) { + CSR_WRITE_2(sc, RE_CPlusCmd, 0x0068); + CSR_WRITE_2(sc, RE_IntrMitigate, 0x0000); + } else if (macver == 0x30000000) { + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + if (ifp->if_mtu > ETHERMTU) { + data8 = pci_read_config(sc->dev, 0x69, 1); + data8 &= ~0x70; + data8 |= 0x28; + pci_write_config(sc->dev, 0x69, data8, 1); + } else { + data8 = pci_read_config(sc->dev, 0x69, 1); + data8 &= ~0x70; + data8 |= 0x58; + pci_write_config(sc->dev, 0x69, data8, 1); + } + } else if (macver == 0x38000000) { + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + if (ifp->if_mtu > ETHERMTU) { + data8 = pci_read_config(sc->dev, 0x69, 1); + data8 &= ~0x70; + data8 |= 0x28; + pci_write_config(sc->dev, 0x69, data8, 1); + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | BIT_0); + } else { + data8 = pci_read_config(sc->dev, 0x69, 1); + data8 &= ~0x70; + data8 |= 0x58; + pci_write_config(sc->dev, 0x69, data8, 1); + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~ BIT_0); + } + } else if (macver == 0x34000000 || macver == 0xB4000000) { + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + } else if (macver == 0x34800000 || macver == 0x24800000) { + if (pci_read_config(sc->dev, 0x81, 1) == 1) { + CSR_WRITE_1(sc, RE_DBG_reg, 0x98); + CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | 0x80); + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | 0x04); + pci_write_config(sc->dev, 0x81, 1, 1); + } + + re_set_offset79(sc, 0x40); + + /*set configuration space offset 0x70f to 0x3f*/ + re_set_offset70f(sc, 0x3F); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + if (sc->re_type == MACFG_14) { + CSR_WRITE_1(sc,RE_CFG1, 0x0f); + + re_ephy_write(sc, 0x03, 0xC2F9); + } else if (sc->re_type == MACFG_15) { + CSR_WRITE_1(sc,RE_CFG1, 0x0f); + + re_ephy_write(sc, 0x01, 0x6FE5); + re_ephy_write(sc, 0x03, 0x07D9); + } else if (sc->re_type == MACFG_17) { + re_ephy_write(sc, 0x06, 0xAF35); + } else if (sc->re_type == MACFG_18) { + CSR_WRITE_1(sc, 0xF5, CSR_READ_1(sc, 0xF5)|0x04); + re_ephy_write(sc, 0x19, 0xEC90); + re_ephy_write(sc, 0x01, 0x6FE5); + re_ephy_write(sc, 0x03, 0x05D9); + re_ephy_write(sc, 0x06, 0xAF35); + } else if (sc->re_type == MACFG_19) { + if (pci_read_config(sc->dev, 0x80, 1)&3) { + re_ephy_write(sc, 0x02, 0x011F); + } + CSR_WRITE_1(sc, 0xF4, CSR_READ_1(sc, 0xF4)|0x08); + CSR_WRITE_1(sc, 0xF5, CSR_READ_1(sc, 0xF5)|0x04); + re_ephy_write(sc, 0x19, 0xEC90); + re_ephy_write(sc, 0x01, 0x6FE5); + re_ephy_write(sc, 0x03, 0x05D9); + re_ephy_write(sc, 0x06, 0xAF35); + } + } else if (macver == 0x3C000000) { + //disable clock request. + pci_write_config(sc->dev, 0x81, 0, 1); + + /*set configuration space offset 0x70f to 0x27*/ + re_set_offset70f(sc, 0x27); + + CSR_WRITE_1(sc, RE_CFG1, CSR_READ_1(sc, RE_CFG1)|0x10); + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + if (sc->re_type == MACFG_24) { + /*set mac register offset 0xd1 to 0xf8*/ + CSR_WRITE_1(sc, RE_DBG_reg, 0xF8); + + data16 = re_ephy_read(sc, 0x02) & ~0x1800; + data16 |= 0x1000; + re_ephy_write(sc, 0x02, data16); + + data16 = re_ephy_read(sc, 0x03) | 0x0002; + re_ephy_write(sc, 0x03, data16); + + data16 = re_ephy_read(sc, 0x06) & ~0x0080; + re_ephy_write(sc, 0x06, data16); + + if (ifp->if_mtu > ETHERMTU) { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | (1 << 1)); //Jumbo_en1 + + re_set_offset79(sc, 0x20); + ifp->if_capenable &= ~IFCAP_HWCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~(1 << 1)); //Jumbo_en1 + re_set_offset79(sc, 0x40); + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + if ((sc->re_type == MACFG_24) || (sc->re_type == MACFG_25) || (sc->re_type == MACFG_26)) + ifp->if_hwassist |= CSUM_TCP | CSUM_UDP; + else + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) |RL_RxChkSum); + } + } + } else if (sc->re_type == MACFG_25) { + data16 = re_ephy_read(sc, 0x01) | 0x0001; + re_ephy_write(sc, 0x01, data16); + + data16 = re_ephy_read(sc, 0x03) & ~0x0620; + data16 |= 0x0220; + re_ephy_write(sc, 0x03, data16); + + if (ifp->if_mtu > ETHERMTU) { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | (1<<1)); //Jumbo_en1 + + re_set_offset79(sc, 0x20); + ifp->if_capenable &= ~IFCAP_HWCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~(1<<1)); //Jumbo_en1 + re_set_offset79(sc, 0x40); + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + if ((sc->re_type == MACFG_24) || (sc->re_type == MACFG_25) || (sc->re_type == MACFG_26)) + ifp->if_hwassist |= CSUM_TCP | CSUM_UDP; + else + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) |RL_RxChkSum); + } + } + } else if (sc->re_type == MACFG_26) { + if (ifp->if_mtu > ETHERMTU) { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | (1<<1)); //Jumbo_en1 + + re_set_offset79(sc, 0x20); + ifp->if_capenable &= ~IFCAP_HWCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~(1<<1)); //Jumbo_en1 + re_set_offset79(sc, 0x40); + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + if ((sc->re_type == MACFG_24) || (sc->re_type == MACFG_25) || (sc->re_type == MACFG_26)) + ifp->if_hwassist |= CSUM_TCP | CSUM_UDP; + else + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) |RL_RxChkSum); + } + } + } + } else if (macver == 0x3C800000) { + //disable clock request. + pci_write_config(sc->dev, 0x81, 0x00, 1); + + /*set configuration space offset 0x70f to 0x27*/ + re_set_offset70f(sc, 0x27); + + re_eri_write(sc, 0x1EC, 1, 0x07, ERIAR_ASF); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + if (sc->re_type == MACFG_28) + CSR_WRITE_1(sc, 0xD1, 0x20); + + if (ifp->if_mtu > ETHERMTU) { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | (1<<1)); //Jumbo_en1 + + re_set_offset79(sc, 0x20); + ifp->if_capenable &= ~IFCAP_HWCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~(1<<1)); //Jumbo_en1 + re_set_offset79(sc, 0x40); + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) |RL_RxChkSum); + } + } + } else if (macver == 0x28000000) { + //disable clock request. + pci_write_config(sc->dev, 0x81, 0x00, 1); + + /*set configuration space offset 0x70f to 0x13*/ + re_set_offset70f(sc, 0x27); + + CSR_WRITE_1(sc, RE_TDFNR, 0x8); + + CSR_WRITE_1(sc, 0xD1, CSR_READ_1(sc, 0xD1) | 0x02); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + CSR_WRITE_1(sc, RE_DBG_reg, CSR_READ_1(sc, RE_DBG_reg)|0x82); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + + if (ifp->if_mtu > ETHERMTU) { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | (1<<1)); //Jumbo_en1 + + re_set_offset79(sc, 0x20); + ifp->if_capenable &= ~IFCAP_HWCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~(1<<1)); //Jumbo_en1 + re_set_offset79(sc, 0x40); + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) |RL_RxChkSum); + } + } + + if (sc->re_type == MACFG_31) { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~(1<<4)); + + re_ephy_write(sc, 0x01, 0x7C7F); + re_ephy_write(sc, 0x02, 0x011F); + re_ephy_write(sc, 0x06, 0xB271); + re_ephy_write(sc, 0x07, 0xCE00); + } else if (sc->re_type == MACFG_32) { + re_ephy_write(sc, 0x01, 0x7C7D); + re_ephy_write(sc, 0x02, 0x091F); + re_ephy_write(sc, 0x03, 0xC5BA); + re_ephy_write(sc, 0x06, 0xB279); + re_ephy_write(sc, 0x07, 0xAF00); + re_ephy_write(sc, 0x1E, 0xB8EB); + } else if (sc->re_type == MACFG_33) { + CSR_WRITE_1(sc, RE_CFG1, CSR_READ_1(sc, RE_CFG1)|0x10); + + re_ephy_write(sc, 0x01, 0x6C7F); + re_ephy_write(sc, 0x02, 0x011F); + re_clear_set_ephy_bit(sc, + 0x03, + 0xFFF0, + 0x01B0 + ); + re_ephy_write(sc, 0x1A, 0x0546); + re_ephy_write(sc, 0x1C, 0x80C4); + re_ephy_write(sc, 0x1D, 0x78E5); + re_ephy_write(sc, 0x0A, 0x8100); + } + } else if (macver == 0x28800000) { + /* disable clock request. */ + pci_write_config(sc->dev, 0x81, 0x00, 1); + + /*set configuration space offset 0x70f to 0x17*/ + re_set_offset70f(sc, 0x27); + + CSR_WRITE_1(sc, RE_TDFNR, 0x8); + if (sc->re_dash && + (sc->re_type == MACFG_63 || sc->re_type == MACFG_64)) + CSR_WRITE_1(sc, RE_TDFNR, 0x1); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + CSR_WRITE_1(sc, RE_DBG_reg, CSR_READ_1(sc, RE_DBG_reg)|0x82); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + + if (ifp->if_mtu > ETHERMTU) { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | (1<<1)); //Jumbo_en1 + + re_set_offset79(sc, 0x20); + ifp->if_capenable &= ~IFCAP_HWCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~(1<<1)); //Jumbo_en1 + re_set_offset79(sc, 0x40); + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) |RL_RxChkSum); + } + } + + if (sc->re_type == MACFG_65 || sc->re_type == MACFG_66) { + re_set_ephy_bit(sc, 0x0B, (BIT_3 | BIT_6)); + + re_clear_set_ephy_bit(sc, + 0x19, + BIT_5, + (BIT_4 | BIT_6) + ); + + re_clear_set_ephy_bit(sc, + 0x0C, + BIT_8, + BIT_5 + ); + + re_clear_ephy_bit(sc, 0x10, (BIT_2)); + } + } else if (macver == 0x2C000000) { + /* disable clock request. */ + pci_write_config(sc->dev, 0x81, 0x00, 1); + + /*set configuration space offset 0x70f to 0x20*/ + re_set_offset70f(sc, 0x27); + + CSR_WRITE_1(sc, 0xF3, CSR_READ_1(sc, 0xF3)|0x20); + CSR_WRITE_1(sc, 0xF3, CSR_READ_1(sc, 0xF3)& ~0x20); + + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0)|0xC0); + CSR_WRITE_1(sc, 0xF1, CSR_READ_1(sc, 0xF1)|0x73); + CSR_WRITE_1(sc, RE_CFG5, (CSR_READ_1(sc, RE_CFG5)& ~0x08)); + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + CSR_WRITE_1(sc, RE_TDFNR, 0x8); + + if (sc->re_type == MACFG_36 || sc->re_type == MACFG_37) { + /* set EPHY registers */ + data16 = re_ephy_read(sc, 0x00) & ~0x0200; + data16 |= 0x0100; + re_ephy_write(sc, 0x00, data16); + + data16 = re_ephy_read(sc, 0x00); + data16 |= 0x0004; + re_ephy_write(sc, 0x00, data16); + + data16 = re_ephy_read(sc, 0x06) & ~0x0002; + data16 |= 0x0001; + re_ephy_write(sc, 0x06, data16); + + data16 = re_ephy_read(sc, 0x06); + data16 |= 0x0030; + re_ephy_write(sc, 0x06, data16); + + data16 = re_ephy_read(sc, 0x07); + data16 |= 0x2000; + re_ephy_write(sc, 0x07, data16); + + data16 = re_ephy_read(sc, 0x00); + data16 |= 0x0020; + re_ephy_write(sc, 0x00, data16); + + data16 = re_ephy_read(sc, 0x03) & ~0x5800; + data16 |= 0x2000; + re_ephy_write(sc, 0x03, data16); + + data16 = re_ephy_read(sc, 0x03); + data16 |= 0x0001; + re_ephy_write(sc, 0x03, data16); + + data16 = re_ephy_read(sc, 0x01) & ~0x0800; + data16 |= 0x1000; + re_ephy_write(sc, 0x01, data16); + + data16 = re_ephy_read(sc, 0x07); + data16 |= 0x4000; + re_ephy_write(sc, 0x07, data16); + + data16 = re_ephy_read(sc, 0x1E); + data16 |= 0x2000; + re_ephy_write(sc, 0x1E, data16); + + re_ephy_write(sc, 0x19, 0xFE6C); + + data16 = re_ephy_read(sc, 0x0A); + data16 |= 0x0040; + re_ephy_write(sc, 0x0A, data16); + + if (ifp->if_mtu > ETHERMTU) { + CSR_WRITE_1 (sc, RE_MTPS, 0x24); + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) |0x01); + re_set_offset79(sc, 0x20); + ifp->if_capenable &= ~IFCAP_HWCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + CSR_WRITE_1 (sc, RE_MTPS, 0x0c); + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~0x01); + re_set_offset79(sc, 0x40); + + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) |RL_RxChkSum); + } + } + } + } else if (macver == 0x2C800000) { + /* disable clock request. */ + pci_write_config(sc->dev, 0x81, 0x00, 1); + + /*set configuration space offset 0x70f to 0x27*/ + re_set_offset70f(sc, 0x27); + + re_set_offset79(sc, 0x40); + + CSR_WRITE_1(sc, RE_TDFNR, 0x8); + + re_eri_write(sc, 0xC0, 2, 0x0000, ERIAR_ExGMAC); + re_eri_write(sc, 0xB8, 4, 0x00000000, ERIAR_ExGMAC); + re_eri_write(sc, 0xC8, 4, 0x00100002, ERIAR_ExGMAC); + re_eri_write(sc, 0xE8, 4, 0x00100006, ERIAR_ExGMAC); + Data32 = re_eri_read(sc, 0xdc, 4, ERIAR_ExGMAC); + Data32 &= ~BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + Data32 |= BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + + Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); + Data32 |= (BIT_8 | BIT_9 | BIT_10 | BIT_11 | BIT_12); + re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); + if (sc ->re_type == MACFG_39) { + Data32 = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + Data32 |= BIT_4; + re_eri_write(sc, 0x1B0, 4, Data32, ERIAR_ExGMAC); + re_eri_write(sc, 0xCC, 4, 0x00000050, ERIAR_ExGMAC); + re_eri_write(sc, 0xD0, 4, 0x07ff0060, ERIAR_ExGMAC); + } + + CSR_WRITE_4(sc, RE_TXCFG, CSR_READ_4(sc, RE_TXCFG) |BIT_7); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); + CSR_WRITE_1(sc, 0x1B, CSR_READ_1(sc, 0x1B) & ~0x07); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + + if (sc ->re_type == MACFG_38) { + CSR_WRITE_4(sc, 0xB0, 0xEE480010); + CSR_WRITE_1(sc, 0x1A, CSR_READ_1(sc, 0x1A) & ~(BIT_2 |BIT_3)); + re_eri_write(sc, 0x1DC, 1, 0x64, ERIAR_ExGMAC); + + re_ephy_write(sc, 0x06, 0xF020); + re_ephy_write(sc, 0x07, 0x01FF); + re_ephy_write(sc, 0x00, 0x5027); + re_ephy_write(sc, 0x01, 0x0003); + re_ephy_write(sc, 0x02, 0x2D16); + re_ephy_write(sc, 0x03, 0x6D49); + re_ephy_write(sc, 0x08, 0x0006); + re_ephy_write(sc, 0x0A, 0x00C8); + } + + data16 = re_ephy_read(sc, 0x09); + data16 |= BIT_7; + re_ephy_write(sc, 0x09, data16); + + data16 = re_ephy_read(sc, 0x19); + data16 |= (BIT_2 | BIT_5 | BIT_9); + re_ephy_write(sc, 0x19, data16); + + re_set_ephy_bit(sc, 0x00, BIT_3); + re_clear_set_ephy_bit(sc, + 0x0C, + (BIT_13|BIT_12|BIT_11|BIT_10|BIT_8|BIT_7|BIT_6|BIT_5|BIT_4), + BIT_9 + ); + + CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | BIT_5); + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_6); + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_6); + + if (ifp->if_mtu > ETHERMTU) + CSR_WRITE_1 (sc, RE_MTPS, 0x27); + ifp->if_capenable &= ~IFCAP_HWCSUM; + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else if (macver == 0x24000000) { + if (pci_read_config(sc->dev, 0x81, 1)==1) { + CSR_WRITE_1(sc, RE_DBG_reg, 0x98); + CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | 0x80); + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | 0x04); + pci_write_config(sc->dev, 0x81, 1, 1); + } + re_set_offset79(sc, 0x40); + + /*set configuration space offset 0x70f to 0x3F*/ + re_set_offset70f(sc, 0x3F); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + + re_ephy_write(sc, 0x06, 0xAF25); + re_ephy_write(sc, 0x07, 0x8E68); + } else if (macver == 0x40800000) { + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | 0x80); + CSR_WRITE_1(sc, 0xF1, CSR_READ_1(sc, 0xF1) | 0x28); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) | 0x0C); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | 0x40); + CSR_WRITE_2(sc, 0xE0, CSR_READ_2(sc, 0xE0) & ~0xDF9C); + CSR_WRITE_1(sc, 0xD1, CSR_READ_1(sc, 0xD1) | 0x02); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + if (sc->re_type == MACFG_42) { + /* set EPHY registers */ + re_set_ephy_bit(sc, 0x07, BIT_14); + re_set_ephy_bit(sc, 0x19, BIT_9); + re_set_ephy_bit(sc, 0x19, BIT_5); + re_set_ephy_bit(sc, 0x1E, BIT_13); + re_set_ephy_bit(sc, 0x03, BIT_0); + re_set_ephy_bit(sc, 0x19, BIT_8); + re_set_ephy_bit(sc, 0x19, BIT_2); + re_set_ephy_bit(sc, 0x0A, BIT_5); + re_set_ephy_bit(sc, 0x05, BIT_13); + } + if (sc->re_type == MACFG_43) { + re_set_ephy_bit(sc, 0x07, BIT_14); + re_set_ephy_bit(sc, 0x19, BIT_9); + re_set_ephy_bit(sc, 0x19, BIT_5); + re_set_ephy_bit(sc, 0x1E, BIT_13); + re_set_ephy_bit(sc, 0x03, BIT_0); + re_set_ephy_bit(sc, 0x19, BIT_8); + re_set_ephy_bit(sc, 0x19, BIT_2); + re_set_ephy_bit(sc, 0x0A, BIT_5); + re_set_ephy_bit(sc, 0x1E, BIT_15); + re_set_ephy_bit(sc, 0x05, BIT_13); + } + } else if (macver == 0x44000000) { + CSR_WRITE_2(sc, 0xE0, CSR_READ_2(sc, 0xE0) & ~0xDF9C); + + re_eri_write(sc, 0xC8, 4, 0x00000002, ERIAR_ExGMAC); + re_eri_write(sc, 0xE8, 4, 0x00000006, ERIAR_ExGMAC); + + Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); + Data32 |= BIT_11 | BIT_10; + re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + /* set EPHY registers */ + re_ephy_write(sc, 0x19, 0xFF64); + + if (ifp->if_mtu > ETHERMTU) + CSR_WRITE_1 (sc, RE_MTPS, 0x27); + } else if (macver == 0x48000000) { + /*set configuration space offset 0x70f to 0x27*/ + re_set_offset70f(sc, 0x27); + + re_set_offset79(sc, 0x40); + + CSR_WRITE_1(sc, RE_TDFNR, 0x8); + + Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); + Data32 |= (BIT_8 | BIT_9 | BIT_10 | BIT_11 | BIT_12); + re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); + re_eri_write(sc, 0xC0, 2, 0x0000, ERIAR_ExGMAC); + re_eri_write(sc, 0xB8, 4, 0x00000000, ERIAR_ExGMAC); + re_eri_write(sc, 0xC8, 4, 0x00100002, ERIAR_ExGMAC); + re_eri_write(sc, 0xE8, 4, 0x00100006, ERIAR_ExGMAC); + Data32 = re_eri_read(sc, 0xdc, 4, ERIAR_ExGMAC); + Data32 &= ~BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + Data32 |= BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + Data32 = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + Data32 |= BIT_4; + re_eri_write(sc, 0x1B0, 4, Data32, ERIAR_ExGMAC); + re_eri_write(sc, 0xCC, 4, 0x00000050, ERIAR_ExGMAC); + re_eri_write(sc, 0xD0, 4, 0x00000060, ERIAR_ExGMAC); + Data32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); + Data32 |= BIT_4; + re_eri_write(sc, 0x1D0, 4, Data32, ERIAR_ExGMAC); + + CSR_WRITE_4(sc, RE_TXCFG, CSR_READ_4(sc, RE_TXCFG) | BIT_7); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); + CSR_WRITE_1(sc, 0x1B, CSR_READ_1(sc, 0x1B) & ~0x07); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + + if (sc->re_type == MACFG_50) { + data16 = re_ephy_read(sc, 0x06); + data16 &= ~(BIT_7 | BIT_6); + data16 |= BIT_5; + re_ephy_write(sc, 0x06, data16); + + data16 = re_ephy_read(sc, 0x08); + data16 &= ~BIT_0; + data16 |= BIT_1; + re_ephy_write(sc, 0x08, data16); + } + + data16 = re_ephy_read(sc, 0x09); + data16 |= BIT_7; + re_ephy_write(sc, 0x09, data16); + + data16 = re_ephy_read(sc, 0x19); + data16 |= (BIT_2 | BIT_5 | BIT_9); + re_ephy_write(sc, 0x19, data16); + + re_set_ephy_bit(sc, 0x00, BIT_3); + re_clear_set_ephy_bit(sc, + 0x0C, + (BIT_13|BIT_12|BIT_11|BIT_10|BIT_8|BIT_7|BIT_6|BIT_5|BIT_4), + BIT_9 + ); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_6); + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_6); + + if (ifp->if_mtu > ETHERMTU) + CSR_WRITE_1 (sc, RE_MTPS, 0x27); + + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~IFCAP_HWCSUM; + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + } + } + } else if (macver == 0x48800000) { + /*set configuration space offset 0x70f to 0x27*/ + re_set_offset70f(sc, 0x27); + + re_set_offset79(sc, 0x40); + + CSR_WRITE_1(sc, RE_TDFNR, 0x8); + + Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); + Data32 |= BIT_11 | BIT_10; + re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); + re_eri_write(sc, 0xC0, 2, 0x0000, ERIAR_ExGMAC); + re_eri_write(sc, 0xB8, 4, 0x00000000, ERIAR_ExGMAC); + re_eri_write(sc, 0xC8, 4, 0x00100002, ERIAR_ExGMAC); + re_eri_write(sc, 0xE8, 4, 0x00100006, ERIAR_ExGMAC); + Data32 = re_eri_read(sc, 0xdc, 4, ERIAR_ExGMAC); + Data32 &= ~BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + Data32 |= BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + Data32 = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + Data32 |= BIT_4; + re_eri_write(sc, 0x1B0, 4, Data32, ERIAR_ExGMAC); + re_eri_write(sc, 0xCC, 4, 0x00000050, ERIAR_ExGMAC); + re_eri_write(sc, 0xD0, 4, 0x00000060, ERIAR_ExGMAC); + Data32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); + Data32 |= BIT_4; + re_eri_write(sc, 0x1D0, 4, Data32, ERIAR_ExGMAC); + + CSR_WRITE_4(sc, RE_TXCFG, CSR_READ_4(sc, RE_TXCFG) | BIT_7); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); + //CSR_WRITE_1(sc, 0x1B, CSR_READ_1(sc, 0x1B) & ~0x07); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + + data16 = re_ephy_read(sc, 0x06); + data16 &= ~(BIT_7 | BIT_6); + data16 |= BIT_5; + re_ephy_write(sc, 0x06, data16); + + re_ephy_write(sc, 0x0f, 0x5200); + + data16 = re_ephy_read(sc, 0x1e); + data16 |= BIT_14; + re_ephy_write(sc, 0x1e, data16); + + data16 = re_ephy_read(sc, 0x19); + data16 |= (BIT_2 | BIT_5 | BIT_9); + re_ephy_write(sc, 0x19, data16); + + re_set_ephy_bit(sc, 0x00, BIT_3); + re_clear_set_ephy_bit(sc, + 0x0C, + (BIT_13|BIT_12|BIT_11|BIT_10|BIT_8|BIT_7|BIT_6|BIT_5|BIT_4), + BIT_9 + ); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_6); + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_6); + + if (ifp->if_mtu > ETHERMTU) + CSR_WRITE_1 (sc, RE_MTPS, 0x27); + + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~IFCAP_HWCSUM; + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + } + } + } else if (macver == 0x44800000) { + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | 0x80); + CSR_WRITE_1(sc, 0xF1, CSR_READ_1(sc, 0xF1) | 0x28); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) | 0x0C); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | 0x40); + CSR_WRITE_2(sc, 0xE0, CSR_READ_2(sc, 0xE0) & ~0xDF9C); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + } else if (macver == 0x4C000000 || macver == 0x50800000 || + macver == 0x5C800000 || macver == 0x54000000 || + macver == 0x6C000000) { + CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | BIT_5); + + if (sc->re_type == MACFG_59) { + re_mac_ocp_write(sc, 0xD3C0, 0x0B00); + re_mac_ocp_write(sc, 0xD3C2, 0x0000); + } + + if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || + sc->re_type == MACFG_76) { + re_mac_ocp_write(sc, 0xD400, re_mac_ocp_read(sc, 0xD400) & ~(BIT_0)); + + data16 = re_mac_ocp_read(sc, 0xE63E); + data16 &= ~(BIT_3 | BIT_2 | BIT_1); + re_mac_ocp_write(sc, 0xE63E, data16); + data16 |= (BIT_0); + re_mac_ocp_write(sc, 0xE63E, data16); + data16 &= ~(BIT_0); + re_mac_ocp_write(sc, 0xE63E, data16); + re_mac_ocp_write(sc, 0xC094, 0x0); + re_mac_ocp_write(sc, 0xC09E, 0x0); + + re_mac_ocp_write(sc, 0xE098, 0x0AA2); + } + + /*set configuration space offset 0x70f to 0x17*/ + re_set_offset70f(sc, 0x27); + + re_set_offset79(sc, 0x40); + + CSR_WRITE_1(sc, RE_TDFNR, 0x4); + + if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57) { + Data32 = re_csi_read(sc, 0x2710); + Data32 &=0xFFFF0FFF; + Data32 |= (0x04 << 12); + re_csi_write(sc, 0x2710, Data32); + } + + Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); + Data32 |= (BIT_7 | BIT_8 | BIT_9 | BIT_10 | BIT_11 | BIT_12); + re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); + + if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || + sc->re_type == MACFG_76) { + Data32 = re_eri_read(sc, 0xDC, 4, ERIAR_ExGMAC); + Data32 |= (BIT_2| BIT_3 | BIT_4); + re_eri_write(sc, 0xDC, 4, Data32, ERIAR_ExGMAC); + } + + re_eri_write(sc, 0xC8, 4, 0x00080002, ERIAR_ExGMAC); + re_eri_write(sc, 0xCC, 1, 0x38, ERIAR_ExGMAC); + re_eri_write(sc, 0xD0, 1, 0x48, ERIAR_ExGMAC); + re_eri_write(sc, 0xE8, 4, 0x00100006, ERIAR_ExGMAC); + + if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || + sc->re_type == MACFG_76) { + re_mac_ocp_write(sc, 0xE054, 0x0000); + + Data32 = re_eri_read(sc, 0x5F0, 4, ERIAR_ExGMAC); + Data32 &= ~(BIT_11 | BIT_10 | BIT_9 | BIT_8 | BIT_3 | BIT_2 | BIT_1 | BIT_0); + re_eri_write(sc, 0x5F0, 4, Data32, ERIAR_ExGMAC); + } else { + re_eri_write(sc, 0x5F0, 2, 0x4F87, ERIAR_ExGMAC); + } + + Data32 = re_eri_read(sc, 0xdc, 4, ERIAR_ExGMAC); + Data32 &= ~BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + Data32 |= BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + + if (sc->re_type == MACFG_74 || sc->re_type == MACFG_75) + re_set_mac_ocp_bit(sc, 0xD438, (BIT_1 | BIT_0)); + + Data32 = re_eri_read(sc, 0x2FC, 4, ERIAR_ExGMAC); + Data32 &= ~(BIT_0 | BIT_1 | BIT_2); + Data32 |= (BIT_0); + re_eri_write(sc, 0x2FC, 4, Data32, ERIAR_ExGMAC); + + Data32 = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + Data32 &= ~BIT_12; + re_eri_write(sc, 0x1B0, 4, Data32, ERIAR_ExGMAC); + + CSR_WRITE_4(sc, RE_TXCFG, CSR_READ_4(sc, RE_TXCFG) | BIT_7); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); + CSR_WRITE_1(sc, 0x1B, CSR_READ_1(sc, 0x1B) & ~0x07); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + + if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57) { + re_clear_ephy_bit(sc, 0x00, BIT_3); + re_clear_set_ephy_bit(sc, + 0x0C, + (BIT_13|BIT_12|BIT_10|BIT_9|BIT_8|BIT_7|BIT_6|BIT_4), + (BIT_11|BIT_5) + ); + re_set_ephy_bit(sc, 0x1E, BIT_0); + re_clear_ephy_bit(sc, 0x19, BIT_15); + } else if (sc->re_type == MACFG_58) { + re_set_ephy_bit(sc, 0x00, (BIT_3)); + re_clear_set_ephy_bit(sc, + 0x0C, + (BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4), + BIT_9 + ); + } else if (sc->re_type == MACFG_59) { + re_clear_ephy_bit(sc, 0x00, BIT_3); + re_clear_set_ephy_bit(sc, + 0x0C, + (BIT_13 | BIT_12 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_4), + (BIT_5 | BIT_11) + ); + + re_set_ephy_bit(sc, 0x1E, BIT_0); + re_clear_ephy_bit(sc, 0x19, BIT_15); + re_ephy_write(sc, 0x19, 0x7C00); + re_ephy_write(sc, 0x1E, 0x20EB); + re_ephy_write(sc, 0x0D, 0x1666); + re_ephy_write(sc, 0x00, 0x10A3); + + re_ephy_write(sc, 0x06, 0xF050); + + re_set_ephy_bit(sc, 0x04, BIT_4); + re_clear_ephy_bit(sc, 0x1D, BIT_14); + } else if (sc->re_type == MACFG_60) { + re_clear_ephy_bit(sc, 0x00, BIT_3); + re_clear_set_ephy_bit(sc, + 0x0C, + (BIT_13 | BIT_12 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_4), + (BIT_5 | BIT_11) + ); + re_set_ephy_bit(sc, 0x1E, BIT_0); + re_clear_ephy_bit(sc, 0x19, BIT_15); + + re_clear_ephy_bit(sc, 0x19, (BIT_5 | BIT_0)); + + re_set_ephy_bit(sc, 0x1E, BIT_13); + re_clear_ephy_bit(sc, 0x0D, BIT_8); + re_set_ephy_bit(sc, 0x0D, BIT_9); + re_set_ephy_bit(sc, 0x00, BIT_7); + + re_set_ephy_bit(sc, 0x06, BIT_4); + + re_set_ephy_bit(sc, 0x04, BIT_4); + re_set_ephy_bit(sc, 0x1D, BIT_14); + } else if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_76) { + re_clear_ephy_bit(sc, 0x1E, BIT_11); + + re_set_ephy_bit(sc, 0x1E, BIT_0); + re_set_ephy_bit(sc, 0x1D, BIT_11); + + re_ephy_write(sc, 0x05, 0x2089); + re_ephy_write(sc, 0x06, 0x5881); + + re_ephy_write(sc, 0x04, 0x854A); + re_ephy_write(sc, 0x01, 0x068B); + } else if (sc->re_type == MACFG_74) { + re_clear_mac_ocp_bit(sc, 0xD438, BIT_2); + + re_clear_ephy_bit(sc, 0x24, BIT_9); + re_clear_mac_ocp_bit(sc, 0xDE28, (BIT_1 | BIT_0)); + + re_set_mac_ocp_bit(sc, 0xD438, BIT_2); + } else if (sc->re_type == MACFG_75) { + re_clear_mac_ocp_bit(sc, 0xD438, BIT_2); + + re_clear_mac_ocp_bit(sc, 0xDE28, (BIT_1 | BIT_0)); + + re_set_mac_ocp_bit(sc, 0xD438, BIT_2); + } + + if (sc->re_type == MACFG_60) { + data16 = re_mac_ocp_read(sc, 0xD3C0); + data16 &= 0xF000; + data16 |= 0x0FFF; + re_mac_ocp_write(sc, 0xD3C0, data16); + + data16 = re_mac_ocp_read(sc, 0xD3C2); + data16 &= 0xFF00; + re_mac_ocp_write(sc, 0xD3C2, data16); + + data16 = re_mac_ocp_read(sc, 0xD3C4); + data16 |= (BIT_0); + re_mac_ocp_write(sc, 0xD3C4, data16); + } else if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_76) { + if (sc->RequireAdjustUpsTxLinkPulseTiming) { + data16 = re_mac_ocp_read(sc, 0xD412); + data16 &= ~(0x0FFF); + data16 |= sc->SwrCnt1msIni; + re_mac_ocp_write(sc, 0xD412, data16); + } + + data16 = re_mac_ocp_read(sc, 0xE056); + data16 &= ~(BIT_7 | BIT_6 | BIT_5 | BIT_4); + re_mac_ocp_write(sc, 0xE056, data16); + + data16 = re_mac_ocp_read(sc, 0xE052); + data16 &= ~(BIT_15 | BIT_14 | BIT_13 | BIT_3); + data16 |= BIT_15; + re_mac_ocp_write(sc, 0xE052, data16); + + data16 = re_mac_ocp_read(sc, 0xD420); + data16 &= ~(BIT_11 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0); + data16 |= 0x45F; + re_mac_ocp_write(sc, 0xD420, data16); + + data16 = re_mac_ocp_read(sc, 0xE0D6); + data16 &= ~(BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0); + data16 |= 0x17F; + re_mac_ocp_write(sc, 0xE0D6, data16); + } + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_6); + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_6); + + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~BIT_3); + + if (ifp->if_mtu > ETHERMTU) + CSR_WRITE_1 (sc, RE_MTPS, 0x27); + + if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || + sc->re_type == MACFG_58 || sc->re_type == MACFG_59) { + re_mac_ocp_write(sc, 0xC140, 0xFFFF); + } else if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || + sc->re_type == MACFG_76) { + re_mac_ocp_write(sc, 0xC140, 0xFFFF); + re_mac_ocp_write(sc, 0xC142, 0xFFFF); + } + + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~IFCAP_HWCSUM; + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + } + } + } else if (macver == 0x50000000) { + /*set configuration space offset 0x70f to 0x17*/ + re_set_offset70f(sc, 0x27); + + re_set_offset79(sc, 0x40); + + Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); + Data32 |= BIT_7 | BIT_8 | BIT_9 | BIT_10 | BIT_11 | BIT_12; + re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); + + re_eri_write(sc, 0xC8, 4, 0x00080002, ERIAR_ExGMAC); + re_eri_write(sc, 0xCC, 1, 0x2F, ERIAR_ExGMAC); + re_eri_write(sc, 0xD0, 1, 0x5F, ERIAR_ExGMAC); + re_eri_write(sc, 0xE8, 4, 0x00100006, ERIAR_ExGMAC); + + if (sc->re_type == MACFG_62 || sc->re_type == MACFG_67) { + OOB_mutex_lock(sc); + re_eri_write(sc, 0x5F0, 4, 0x4F87, ERIAR_ExGMAC); + OOB_mutex_unlock(sc); + } + + Data32 = re_eri_read(sc, 0xdc, 4, ERIAR_ExGMAC); + Data32 &= ~BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + Data32 |= BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + + Data32 = re_eri_read(sc, 0x2FC, 4, ERIAR_ExGMAC); + Data32 &= ~(BIT_0 | BIT_1 | BIT_2); + Data32 |= (BIT_0 | BIT_1); + re_eri_write(sc, 0x2FC, 4, Data32, ERIAR_ExGMAC); + + Data32 = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + Data32 &= ~BIT_12; + re_eri_write(sc, 0x1B0, 4, Data32, ERIAR_ExGMAC); + + CSR_WRITE_4(sc, RE_TXCFG, CSR_READ_4(sc, RE_TXCFG) | BIT_7); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); + CSR_WRITE_1(sc, 0x1B, CSR_READ_1(sc, 0x1B) & ~0x07); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + + if (sc->re_type == MACFG_61) { + re_ephy_write(sc, 0x00, 0x10AB); + re_ephy_write(sc, 0x06, 0xF030); + re_ephy_write(sc, 0x08, 0x2006); + re_ephy_write(sc, 0x0D, 0x1666); + re_clear_ephy_bit(sc, 0x0C, (BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4)); + } else if (sc->re_type == MACFG_62) { + re_ephy_write(sc, 0x00, 0x10A3); + re_ephy_write(sc, 0x19, 0xFC00); + re_ephy_write(sc, 0x1E, 0x20EA); + } else if (sc->re_type == MACFG_67) { + re_ephy_write(sc, 0x00, 0x10AB); + re_ephy_write(sc, 0x19, 0xFC00); + re_ephy_write(sc, 0x1E, 0x20EB); + re_ephy_write(sc, 0x0D, 0x1666); + re_clear_ephy_bit(sc, 0x0B, BIT_0); + re_set_ephy_bit(sc, 0x1D, BIT_14); + re_clear_set_ephy_bit(sc, + 0x0C, + BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_8 | BIT_7 | BIT_6 | BIT_5, + BIT_9 | BIT_4 + ); + } + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_6); + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_6); + + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~BIT_3); + + if (ifp->if_mtu > ETHERMTU) + CSR_WRITE_1 (sc, RE_MTPS, 0x27); + + if (sc->re_type == MACFG_67) { + data16 = re_mac_ocp_read(sc, 0xD3E2); + data16 &= 0xF000; + data16 |= 0xAFD; + re_mac_ocp_write(sc, 0xD3E2, data16); + + data16 = re_mac_ocp_read(sc, 0xD3E4); + data16 &= 0xFF00; + re_mac_ocp_write(sc, 0xD3E4, data16); + + data16 = re_mac_ocp_read(sc, 0xE860); + data16 |= BIT_7; + re_mac_ocp_write(sc, 0xE860, data16); + } + + re_mac_ocp_write(sc, 0xC140, 0xFFFF); + re_mac_ocp_write(sc, 0xC142, 0xFFFF); + + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~IFCAP_HWCSUM; + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + } + } + } else if (macver == 0x54800000) { + re_mac_ocp_write(sc, 0xE098, 0xC302); + + re_mac_ocp_write(sc, 0xD400, re_mac_ocp_read(sc, 0xD400) & ~(BIT_0)); + + if (sc->RequireAdjustUpsTxLinkPulseTiming) { + data16 = re_mac_ocp_read(sc, 0xD412); + data16 &= ~(0x0FFF); + data16 |= sc->SwrCnt1msIni; + re_mac_ocp_write(sc, 0xD412, data16); + } + + data16 = re_mac_ocp_read(sc, 0xE056); + data16 &= ~(BIT_7 | BIT_6 | BIT_5 | BIT_4); + if (sc->HwPkgDet == 0x0F) + data16 |= (BIT_6 | BIT_5 | BIT_4); + re_mac_ocp_write(sc, 0xE056, data16); + if (FALSE == HW_SUPP_SERDES_PHY(sc)) + re_mac_ocp_write(sc, 0xEA80, 0x0003); + else + re_mac_ocp_write(sc, 0xEA80, 0x0000); + + OOB_mutex_lock(sc); + data16 = re_mac_ocp_read(sc, 0xE052); + data16 &= ~(BIT_3 | BIT_0); + if (sc->HwPkgDet == 0x0F) + data16 |= BIT_0; + re_mac_ocp_write(sc, 0xE052, data16); + OOB_mutex_unlock(sc); + + data16 = re_mac_ocp_read(sc, 0xD420); + data16 &= ~(BIT_11 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0); + data16 |= 0x45F; + re_mac_ocp_write(sc, 0xD420, data16); + + CSR_WRITE_1(sc, RE_TDFNR, 0x4); + + data16 = re_mac_ocp_read(sc, 0xE63E); + data16 &= ~(BIT_3 | BIT_2 | BIT_1); + re_mac_ocp_write(sc, 0xE63E, data16); + data16 |= (BIT_0); + re_mac_ocp_write(sc, 0xE63E, data16); + data16 &= ~(BIT_0); + re_mac_ocp_write(sc, 0xE63E, data16); + re_mac_ocp_write(sc, 0xC094, 0x0); + re_mac_ocp_write(sc, 0xC09E, 0x0); + + /*set configuration space offset 0x70f to 0x27*/ + re_set_offset70f(sc, 0x27); + + re_set_offset79(sc, 0x40); + + Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); + Data32 |= BIT_7 | BIT_8 | BIT_9 | BIT_10 | BIT_11 | BIT_12; + if (sc->re_type == MACFG_71 || sc->re_type == MACFG_72 || + sc->re_type == MACFG_73) + Data32 |= BIT_4; + re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); + + Data32 = re_eri_read(sc, 0xDC, 4, ERIAR_ExGMAC); + Data32 |= (BIT_2| BIT_3); + re_eri_write(sc, 0xDC, 4, Data32, ERIAR_ExGMAC); + + re_eri_write(sc, 0xC8, 4, 0x00080002, ERIAR_ExGMAC); + re_eri_write(sc, 0xCC, 1, 0x2F, ERIAR_ExGMAC); + re_eri_write(sc, 0xD0, 1, 0x5F, ERIAR_ExGMAC); + re_eri_write(sc, 0xE8, 4, 0x00100006, ERIAR_ExGMAC); + + OOB_mutex_lock(sc); + if (sc->HwPkgDet == 0x0F) + re_eri_write(sc, 0x5F0, 2, 0x4F00, ERIAR_ExGMAC); + else + re_eri_write(sc, 0x5F0, 2, 0x4000, ERIAR_ExGMAC); + OOB_mutex_unlock(sc); + + Data32 = re_eri_read(sc, 0xdc, 4, ERIAR_ExGMAC); + Data32 &= ~BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + Data32 |= BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + + Data32 = re_eri_read(sc, 0x2FC, 4, ERIAR_ExGMAC); + Data32 &= ~(BIT_0 | BIT_1); + Data32 |= (BIT_0); + re_eri_write(sc, 0x2FC, 4, Data32, ERIAR_ExGMAC); + + Data32 = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + Data32 &= ~BIT_12; + re_eri_write(sc, 0x1B0, 4, Data32, ERIAR_ExGMAC); + + Data32 = re_eri_read(sc, 0x1D0, 1, ERIAR_ExGMAC); + Data32 &= ~BIT_1; + re_eri_write(sc, 0x1D0, 1, Data32, ERIAR_ExGMAC); + + re_eri_write(sc, 0xC0, 2, 0x0000, ERIAR_ExGMAC); + re_eri_write(sc, 0xB8, 4, 0x00000000, ERIAR_ExGMAC); + + CSR_WRITE_4(sc, RE_TXCFG, CSR_READ_4(sc, RE_TXCFG) | BIT_7); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); + CSR_WRITE_1(sc, 0x1B, CSR_READ_1(sc, 0x1B) & ~0x07); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + + re_clear_set_ephy_bit(sc, + 0x19, + BIT_6, + (BIT_12| BIT_8) + ); + re_clear_set_ephy_bit(sc, + 0x59, + BIT_6, + (BIT_12| BIT_8) + ); + re_clear_ephy_bit(sc, 0x0C, BIT_4); + re_clear_ephy_bit(sc, 0x4C, BIT_4); + re_clear_ephy_bit(sc, 0x0B, BIT_0); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + if (FALSE == HW_SUPP_SERDES_PHY(sc)) { + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_6); + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_6); + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_7); + } else { + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) & ~BIT_6); + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~BIT_6); + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) & ~BIT_7); + } + + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~BIT_3); + + if (ifp->if_mtu > ETHERMTU) + CSR_WRITE_1 (sc, RE_MTPS, 0x27); + + re_mac_ocp_write(sc, 0xC140, 0xFFFF); + re_mac_ocp_write(sc, 0xC142, 0xFFFF); + + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~IFCAP_HWCSUM; + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + } + } + } + + if (!((sc->re_if_flags & RL_FLAG_DESCV2) && + (sc->re_if_flags & RL_FLAG_8168G_PLUS))) + ifp->if_hwassist &= ~(CSUM_TCP_IPV6 | CSUM_UDP_IPV6); + + //clear io_rdy_l23 + switch (sc->re_type) { + case MACFG_42: + case MACFG_43: + case MACFG_52: + case MACFG_53: + case MACFG_54: + case MACFG_55: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_1); + break; + } + + switch(sc->re_type) { + case MACFG_36: + case MACFG_37: + case MACFG_38: + case MACFG_39: + case MACFG_42: + case MACFG_43: + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_53: + case MACFG_54: + case MACFG_55: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + _re_enable_aspm_clkreq_lock(sc, 1); + re_enable_force_clkreq(sc, 0); + break; + } + + //clear wol + re_clrwol(sc); + + data16 = CSR_READ_2(sc, RE_CPlusCmd); + if ((ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0) + data16 |= RL_CPLUSCMD_VLANSTRIP; + else + data16 &= ~RL_CPLUSCMD_VLANSTRIP; + + if ((ifp->if_capenable & IFCAP_RXCSUM) != 0) + data16 |= RL_RxChkSum; + else + data16 &= ~RL_RxChkSum; + CSR_WRITE_2 (sc, RE_CPlusCmd, data16); + + re_disable_cfg9346_write(sc); + //CSR_WRITE_1(sc, 0xec, 0x3f); + + if (sc->re_device_id == RT_DEVICEID_8169 || sc->re_device_id == RT_DEVICEID_8169SC) { + /* Enable transmit and receive.*/ + CSR_WRITE_1(sc, RE_COMMAND, RE_CMD_TX_ENB | RE_CMD_RX_ENB); + + /* Set the initial TX configuration.*/ + CSR_WRITE_4(sc, RE_TXCFG, RE_TXCFG_CONFIG); + + /* Set the initial RX configuration.*/ + /* + * Program the multicast filter, if necessary. + */ + re_set_rx_packet_filter(sc); + } else { + /* Set the initial RX configuration.*/ + /* + * Program the multicast filter, if necessary. + */ + re_set_rx_packet_filter(sc); + + /* Enable transmit and receive.*/ + CSR_WRITE_1(sc, RE_COMMAND, RE_CMD_TX_ENB | RE_CMD_RX_ENB); + } + + ifp->if_drv_flags |= IFF_DRV_RUNNING; + ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; + + /* + * Enable interrupts. + */ + CSR_WRITE_2(sc, RE_IMR, RE_INTRS); +} + +static void re_init_unlock(void *xsc) /* Software & Hardware Initialize */ +{ + struct re_softc *sc = xsc; + struct ifnet *ifp; +#if OS_VER < VERSION(6,0) + int i; +#endif + union { + uint32_t align_dummy; + u_char eaddr[ETHER_ADDR_LEN]; + } eaddr; + + ifp = RE_GET_IFNET(sc); + + /* + * Cancel pending I/O and free all RX/TX buffers. + */ + re_stop(sc); + + /* + * Disable TSO if interface MTU size is greater than MSS + * allowed in controller. + */ + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~(IFCAP_TSO | IFCAP_VLAN_HWTSO); + ifp->if_hwassist &= ~CSUM_TSO; + } + + /* Copy MAC address on stack to align. */ +#if OS_VER < VERSION(6,0) + bcopy((char *)&sc->arpcom.ac_enaddr, eaddr.eaddr, ETHER_ADDR_LEN); +#elif OS_VER < VERSION(7,0) + bcopy(IFP2ENADDR(ifp), eaddr.eaddr, ETHER_ADDR_LEN); +#else + bcopy(IF_LLADDR(ifp), eaddr.eaddr, ETHER_ADDR_LEN); +#endif + + /* Init our MAC address */ + re_rar_set(sc, eaddr.eaddr); + + sc->hw_start_unlock(sc); + + return; +} + + +static void re_init_locked(void *xsc) /* Software & Hardware Initialize */ +{ + struct re_softc *sc = xsc; + struct ifnet *ifp; + + ifp = RE_GET_IFNET(sc); + + if (re_link_ok(sc)) { + sc->link_state = LINK_STATE_UP; + re_link_state_change(ifp, sc->link_state); + re_link_on_patch(sc); + } + + sc->re_link_chg_det = 1; + re_start_timer(sc); +} + +static void re_init(void *xsc) /* Software & Hardware Initialize */ +{ + struct re_softc *sc = xsc; + + RE_LOCK(sc); + re_init_locked(sc); + RE_UNLOCK(sc); +} + +static void re_hw_start_unlock_8125(struct re_softc *sc) +{ + struct ifnet *ifp; + u_int32_t macver; + u_int16_t data16 = 0; + u_int8_t data8; + + ifp = RE_GET_IFNET(sc); + + /* Init descriptors. */ + re_var_init(sc); + + re_enable_cfg9346_write(sc); + + _re_enable_aspm_clkreq_lock(sc, 0); + re_enable_force_clkreq(sc, 0); + + re_set_eee_lpi_timer(sc); + + CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); + + /* Set the initial TX configuration.*/ + CSR_WRITE_4(sc, RE_TXCFG, RE_TXCFG_CONFIG); + + macver = CSR_READ_4(sc, RE_TXCFG) & 0xFC800000; + if (macver == 0x60800000 || macver == 0x64000000 || + macver == 0x64800000 || macver == 0x68000000 || + macver == 0x68800000) { + CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | BIT_5); + + re_mac_ocp_write(sc, 0xE098, 0xC302); + + /*set configuration space offset 0x70f to 0x17*/ + if (macver == 0x64800000) + re_set_offset70f(sc, 0x17); + else + re_set_offset70f(sc, 0x27); + + re_set_offset79(sc, 0x40); + + if (macver == 0x60800000 || macver == 0x64000000) + CSR_WRITE_2(sc, 0x382, 0x221B); + + CSR_WRITE_1(sc, 0x4500, 0x00); + CSR_WRITE_2(sc, 0x4800, 0x0000); + + CSR_WRITE_1(sc, RE_CFG1, CSR_READ_1(sc, RE_CFG1) & ~0x10); + + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~BIT_3); + + CSR_WRITE_1(sc, RE_TDFNR, 0x10); + + if (sc->re_type == MACFG_80) { + re_ephy_write(sc, 0x01, 0xA812); + re_ephy_write(sc, 0x09, 0x520C); + re_ephy_write(sc, 0x04, 0xD000); + re_ephy_write(sc, 0x0D, 0xF702); + re_ephy_write(sc, 0x0A, 0x8653); + re_ephy_write(sc, 0x06, 0x001E); + re_ephy_write(sc, 0x08, 0x3595); + re_ephy_write(sc, 0x20, 0x9455); + re_ephy_write(sc, 0x21, 0x99FF); + re_ephy_write(sc, 0x02, 0x6046); + re_ephy_write(sc, 0x29, 0xFE00); + re_ephy_write(sc, 0x23, 0xAB62); + re_clear_ephy_bit(sc, 0x24, BIT_11); + + re_ephy_write(sc, 0x41, 0xA80C); + re_ephy_write(sc, 0x49, 0x520C); + re_ephy_write(sc, 0x44, 0xD000); + re_ephy_write(sc, 0x4D, 0xF702); + re_ephy_write(sc, 0x4A, 0x8653); + re_ephy_write(sc, 0x46, 0x001E); + re_ephy_write(sc, 0x48, 0x3595); + re_ephy_write(sc, 0x60, 0x9455); + re_ephy_write(sc, 0x61, 0x99FF); + re_ephy_write(sc, 0x42, 0x6046); + re_ephy_write(sc, 0x69, 0xFE00); + re_ephy_write(sc, 0x63, 0xAB62); + re_clear_ephy_bit(sc, 0x64, BIT_11); + } else if (sc->re_type == MACFG_81) { + re_ephy_write(sc, 0x04, 0xD000); + re_ephy_write(sc, 0x0A, 0x8653); + re_ephy_write(sc, 0x23, 0xAB66); + re_ephy_write(sc, 0x20, 0x9455); + re_ephy_write(sc, 0x21, 0x99FF); + re_ephy_write(sc, 0x29, 0xFE04); + + re_ephy_write(sc, 0x44, 0xD000); + re_ephy_write(sc, 0x4A, 0x8653); + re_ephy_write(sc, 0x63, 0xAB66); + re_ephy_write(sc, 0x60, 0x9455); + re_ephy_write(sc, 0x61, 0x99FF); + re_ephy_write(sc, 0x69, 0xFE04); + + re_clear_set_ephy_bit(sc, + 0x2A, + (BIT_14 | BIT_13 | BIT_12), + (BIT_13 | BIT_12) + ); + re_clear_ephy_bit(sc, 0x19, BIT_6); + re_set_ephy_bit(sc, 0x1B, (BIT_11 | BIT_10 | BIT_9)); + re_clear_ephy_bit(sc, 0x1B, (BIT_14 | BIT_13 | BIT_12)); + re_ephy_write(sc, 0x02, 0x6042); + re_ephy_write(sc, 0x06, 0x0014); + + re_clear_set_ephy_bit(sc, + 0x6A, + (BIT_14 | BIT_13 | BIT_12), + (BIT_13 | BIT_12) + ); + re_clear_ephy_bit(sc, 0x59, BIT_6); + re_set_ephy_bit(sc, 0x5B, (BIT_11 | BIT_10 | BIT_9)); + re_clear_ephy_bit(sc, 0x5B, (BIT_14 | BIT_13 | BIT_12)); + re_ephy_write(sc, 0x42, 0x6042); + re_ephy_write(sc, 0x46, 0x0014); + } else if (sc->re_type == MACFG_82) { + re_ephy_write(sc, 0x06, 0x001F); + re_ephy_write(sc, 0x0A, 0xB66B); + re_ephy_write(sc, 0x01, 0xA852); + re_ephy_write(sc, 0x24, 0x0008); + re_ephy_write(sc, 0x2F, 0x6052); + re_ephy_write(sc, 0x0D, 0xF716); + re_ephy_write(sc, 0x20, 0xD477); + re_ephy_write(sc, 0x21, 0x4477); + re_ephy_write(sc, 0x22, 0x0013); + re_ephy_write(sc, 0x23, 0xBB66); + re_ephy_write(sc, 0x0B, 0xA909); + re_ephy_write(sc, 0x29, 0xFF04); + re_ephy_write(sc, 0x1B, 0x1EA0); + + re_ephy_write(sc, 0x46, 0x001F); + re_ephy_write(sc, 0x4A, 0xB66B); + re_ephy_write(sc, 0x41, 0xA84A); + re_ephy_write(sc, 0x64, 0x000C); + re_ephy_write(sc, 0x6F, 0x604A); + re_ephy_write(sc, 0x4D, 0xF716); + re_ephy_write(sc, 0x60, 0xD477); + re_ephy_write(sc, 0x61, 0x4477); + re_ephy_write(sc, 0x62, 0x0013); + re_ephy_write(sc, 0x63, 0xBB66); + re_ephy_write(sc, 0x4B, 0xA909); + re_ephy_write(sc, 0x69, 0xFF04); + re_ephy_write(sc, 0x5B, 0x1EA0); + } else if (sc->re_type == MACFG_83) { + re_ephy_write(sc, 0x0B, 0xA908); + re_ephy_write(sc, 0x1E, 0x20EB); + re_ephy_write(sc, 0x22, 0x0023); + re_ephy_write(sc, 0x02, 0x60C2); + re_ephy_write(sc, 0x29, 0xFF00); + + re_ephy_write(sc, 0x4B, 0xA908); + re_ephy_write(sc, 0x5E, 0x28EB); + re_ephy_write(sc, 0x62, 0x0023); + re_ephy_write(sc, 0x42, 0x60C2); + re_ephy_write(sc, 0x69, 0xFF00); + } else if (sc->re_type == MACFG_84 || sc->re_type == MACFG_85 || + sc->re_type == MACFG_86 || sc->re_type == MACFG_87) { + //do nothing + } + + re_mac_ocp_write(sc, 0xC140, 0xFFFF); + re_mac_ocp_write(sc, 0xC142, 0xFFFF); + + //old tx desc format + data16 = re_mac_ocp_read(sc, 0xEB58); + if (sc->re_type == MACFG_91 || sc->re_type == MACFG_92) + data16 &= ~(BIT_0 | BIT_1); + else + data16 &= ~(BIT_0); + re_mac_ocp_write(sc, 0xEB58, data16); + + if (sc->re_type == MACFG_84 || sc->re_type == MACFG_85 || + sc->re_type == MACFG_86 || sc->re_type == MACFG_87 || + sc->re_type == MACFG_91 || sc->re_type == MACFG_92) + CSR_WRITE_1(sc, 0xD8, CSR_READ_1(sc, 0xD8) & ~BIT_1); + + data16 = re_mac_ocp_read(sc, 0xE614); + data16 &= ~(BIT_10 | BIT_9 | BIT_8); + if (sc->re_type == MACFG_82 || sc->re_type == MACFG_83) + data16 |= (2 << 8); + else if (sc->re_type == MACFG_90 || sc->re_type == MACFG_91 || + sc->re_type == MACFG_92) + data16 |= (4 << 8); + else + data16 |= (3 << 8); + re_mac_ocp_write(sc, 0xE614, data16); + + data16 = re_mac_ocp_read(sc, 0xE63E); + data16 &= ~(BIT_11 | BIT_10); + re_mac_ocp_write(sc, 0xE63E, data16); + + data16 = re_mac_ocp_read(sc, 0xE63E); + data16 &= ~(BIT_5 | BIT_4); + if (sc->re_type == MACFG_80 || sc->re_type == MACFG_81 || + sc->re_type == MACFG_90 || sc->re_type == MACFG_91 || + sc->re_type == MACFG_92) + data16 |= ((0x02 & 0x03) << 4); + re_mac_ocp_write(sc, 0xE63E, data16); + + data16 = re_mac_ocp_read(sc, 0xC0B4); + data16 |= (BIT_3|BIT_2); + re_mac_ocp_write(sc, 0xC0B4, data16); + + data16 = re_mac_ocp_read(sc, 0xEB6A); + data16 &= ~(BIT_7 | BIT_6 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0); + data16 |= (BIT_5 | BIT_4 | BIT_1 | BIT_0); + re_mac_ocp_write(sc, 0xEB6A, data16); + + data16 = re_mac_ocp_read(sc, 0xEB50); + data16 &= ~(BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_5); + data16 |= (BIT_6); + re_mac_ocp_write(sc, 0xEB50, data16); + + data16 = re_mac_ocp_read(sc, 0xE056); + data16 &= ~(BIT_7 | BIT_6 | BIT_5 | BIT_4); + //data16 |= (BIT_4 | BIT_5); + re_mac_ocp_write(sc, 0xE056, data16); + + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_7); + + data16 = re_mac_ocp_read(sc, 0xE040); + data16 &= ~(BIT_12); + re_mac_ocp_write(sc, 0xE040, data16); + + data16 = re_mac_ocp_read(sc, 0xEA1C); + data16 &= ~(BIT_1 | BIT_0); + data16 |= (BIT_0); + re_mac_ocp_write(sc, 0xEA1C, data16); + + if (HW_DASH_SUPPORT_DASH(sc)) + OOB_mutex_lock(sc); + + if (sc->re_type == MACFG_84 || sc->re_type == MACFG_85) + re_mac_ocp_write(sc, 0xE0C0, 0x4403); + else + re_mac_ocp_write(sc, 0xE0C0, 0x4000); + + re_set_mac_ocp_bit(sc, 0xE052, (BIT_6 | BIT_5)); + re_clear_mac_ocp_bit(sc, 0xE052, BIT_3 | BIT_7); + + if (HW_DASH_SUPPORT_DASH(sc)) + OOB_mutex_unlock(sc); + + data16 = re_mac_ocp_read(sc, 0xC0AC); + data16 |= (BIT_7 | BIT_8 | BIT_9 | BIT_10 | BIT_11 | BIT_12); + if (macver == 0x60800000) + data16 &= ~(BIT_7); + re_mac_ocp_write(sc, 0xC0AC, data16); + + data16 = re_mac_ocp_read(sc, 0xD430); + data16 &= ~(BIT_11 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0); + data16 |= 0x45F; + re_mac_ocp_write(sc, 0xD430, data16); + + //re_mac_ocp_write(sc, 0xE0C0, 0x4F87); + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | (BIT_6 | BIT_7)); + + if (sc->re_type == MACFG_80 || sc->re_type == MACFG_81) + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) | BIT_0); + + if (sc->re_type != MACFG_84 && sc->re_type != MACFG_85) + re_mac_ocp_write(sc, 0xE080, re_mac_ocp_read(sc, 0xE080)&~BIT_1); + + data16 = re_mac_ocp_read(sc, 0xEA1C); + data16 &= ~(BIT_2); + if (sc->re_type == MACFG_91 || sc->re_type == MACFG_92) + data16 &= ~(BIT_9 | BIT_8); + re_mac_ocp_write(sc, 0xEA1C, data16); + + re_set_mac_ocp_bit(sc, 0xEB54, BIT_0); + DELAY(1); + re_clear_mac_ocp_bit(sc, 0xEB54, BIT_0); + CSR_WRITE_2(sc, 0x1880, CSR_READ_2(sc, 0x1880) & ~(BIT_4 | BIT_5)); + + if (macver == 0x60800000 || macver == 0x68000000 || + macver == 0x68800000) { + for (int i=0xA00; i<0xB00; i+=4) + CSR_WRITE_4(sc, i, 0x0000); + } else { + for (int i = 0xA00; i < 0xA80; i += 4) + CSR_WRITE_4(sc, i, 0x0000); + } + + if (macver == 0x60800000) { + //do nothing + } else { + data8 = CSR_READ_1(sc, RE_INT_CFG0_8125); + data8 &= ~(RTL8125_INT_CFG0_ENABLE_8125 | + RTL8125_INT_CFG0_TIMEOUT0_BYPASS | + RTL8125_INT_CFG0_MITIGATION_BYPASS); + if (sc->re_type == MACFG_91 || sc->re_type == MACFG_92) + data8 &= ~RTL8126_INT_CFG0_RDU_BYPASS; + if (sc->re_type == MACFG_84 || sc->re_type == MACFG_85 || + sc->re_type == MACFG_86 || sc->re_type == MACFG_87) + data8 &= ~RTL8125_INT_CFG0_MSIX_ENTRY_NUM_MODE; + CSR_WRITE_1(sc, RE_INT_CFG0_8125, data8); + + CSR_WRITE_2(sc, RE_INT_CFG1_8125, 0x0000); + } + + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + } + } + + if (sc->RequiredPfmPatch) + re_set_pfm_patch(sc, 0); + + _re_enable_aspm_clkreq_lock(sc, 1); + re_enable_force_clkreq(sc, 0); + + //clear wol + re_clrwol(sc); + + //Interrupt Mitigation + if (macver == 0x68000000 || macver == 0x68800000) + CSR_WRITE_4(sc, 0x0A00, 0x00140014); + else + CSR_WRITE_4(sc, 0x0A00, 0x00630063); + + if ((ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0) + CSR_WRITE_4(sc, RE_RXCFG, CSR_READ_4(sc, RE_RXCFG) | (BIT_22 | BIT_23)); + else + CSR_WRITE_4(sc, RE_RXCFG, CSR_READ_4(sc, RE_RXCFG) & ~(BIT_22 | BIT_23)); + + data16 = CSR_READ_2(sc, RE_CPlusCmd); + if ((ifp->if_capenable & IFCAP_RXCSUM) != 0) + data16 |= RL_RxChkSum; + else + data16 &= ~RL_RxChkSum; + CSR_WRITE_2 (sc, RE_CPlusCmd, data16); + + re_disable_cfg9346_write(sc); + + /* Set the initial RX configuration.*/ + /* + * Program the multicast filter, if necessary. + */ + re_set_rx_packet_filter(sc); + + /* Enable transmit and receive.*/ + CSR_WRITE_1(sc, RE_COMMAND, RE_CMD_TX_ENB | RE_CMD_RX_ENB); + + ifp->if_drv_flags |= IFF_DRV_RUNNING; + ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; + + /* + * Enable interrupts. + */ + CSR_WRITE_4(sc, RE_IMR0_8125, RE_INTRS); +} + +/* + * Initialize the transmit descriptors. + */ +static int re_var_init(struct re_softc *sc) +{ + int i; + union RxDesc *rxptr; + union TxDesc *txptr; + + sc->re_desc.rx_cur_index = 0; + rxptr = sc->re_desc.rx_desc; + for (i = 0; i < RE_RX_BUF_NUM; i++) { + memset(&rxptr[i], 0, sizeof(union RxDesc)); + + /* Init the RX buffer pointer register. */ + bus_dmamap_load(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[i], + sc->re_desc.rx_buf[i]->m_data, sc->re_rx_desc_buf_sz, + re_rx_dma_map_buf, + &rxptr[i], + 0); + bus_dmamap_sync(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[i], + BUS_DMASYNC_PREREAD); + + rxptr[i].ul[0] = htole32(sc->re_rx_desc_buf_sz); + if (i == (RE_RX_BUF_NUM - 1)) + rxptr[i].ul[0] |= htole32(RL_RDESC_CMD_EOR); + rxptr[i].ul[0] |= htole32(RL_RDESC_CMD_OWN); + } + + bus_dmamap_load(sc->re_desc.rx_desc_tag, + sc->re_desc.rx_desc_dmamap, + sc->re_desc.rx_desc, + sizeof(union RxDesc)*RE_RX_BUF_NUM, + re_dma_map_rxdesc, + sc, + 0); + bus_dmamap_sync(sc->re_desc.rx_desc_tag, + sc->re_desc.rx_desc_dmamap, + BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE); + + sc->re_desc.tx_cur_index = 0; + sc->re_desc.tx_last_index = 0; + txptr = sc->re_desc.tx_desc; + for (i = 0; i < RE_TX_BUF_NUM; i++) { + memset(&txptr[i], 0, sizeof(union TxDesc)); + if (i == (RE_TX_BUF_NUM - 1)) + txptr[i].ul[0] = htole32(RL_TDESC_CMD_EOR); + } + + bus_dmamap_load(sc->re_desc.tx_desc_tag, + sc->re_desc.tx_desc_dmamap, + sc->re_desc.tx_desc, + sizeof(union TxDesc) * RE_TX_BUF_NUM, + re_dma_map_txdesc, + sc, + 0); + bus_dmamap_sync(sc->re_desc.tx_desc_tag, + sc->re_desc.tx_desc_dmamap, + BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE); + + return 0; +} + +static void re_reset(struct re_softc *sc) +{ + register int i; + + re_clear_all_rx_packet_filter(sc); + + switch (sc->re_type) { + case MACFG_3: + case MACFG_4: + case MACFG_5: + case MACFG_6: + DELAY(10000); + break; + case MACFG_11: + case MACFG_12: + case MACFG_13: + case MACFG_14: + case MACFG_15: + case MACFG_16: + case MACFG_17: + case MACFG_18: + case MACFG_19: + case MACFG_21: + case MACFG_22: + case MACFG_23: + case MACFG_24: + case MACFG_25: + case MACFG_26: + case MACFG_27: + case MACFG_28: + case MACFG_31: + case MACFG_32: + case MACFG_33: + case MACFG_36: + case MACFG_37: + case MACFG_41: + case MACFG_42: + case MACFG_43: + case MACFG_54: + case MACFG_55: + case MACFG_63: + case MACFG_64: + case MACFG_65: + case MACFG_66: + CSR_WRITE_1(sc, RE_COMMAND, 0x8C); + break; + case MACFG_38: + case MACFG_39: + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_53: + CSR_WRITE_1(sc, RE_COMMAND, 0x8C); + while (!(CSR_READ_4(sc,RE_TXCFG) & BIT_11)) DELAY(100); + break; + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + DELAY(2000); + break; + default: + DELAY(10000); + break; + } + DELAY(200); + CSR_WRITE_1(sc, RE_COMMAND, RE_CMD_RESET); + + for (i = 0; i < RE_TIMEOUT; i++) { + DELAY(10); + if (!(CSR_READ_1(sc, RE_COMMAND) & RE_CMD_RESET)) + break; + } + + if (i == RE_TIMEOUT) + device_printf(sc->dev,"reset never completed!\n"); + + return; +} + +static u_int8_t re_link_ok(struct re_softc *sc) +{ + u_int8_t retval; + + retval = (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_LINK_STS) ? 1 : 0; + + return retval; +} + +static u_int8_t +re_set_wol_linkspeed(struct re_softc *sc) +{ + u_int8_t wol_link_speed = 0xff; + + if (HW_SUPP_SERDES_PHY(sc)) + goto exit; + +#ifdef ENABLE_FIBER_SUPPORT + if (HW_FIBER_MODE_ENABLED(sc)) + goto exit; +#endif //ENABLE_FIBER_SUPPORT + + re_mdio_write(sc, 0x1F, 0x0000); + + wol_link_speed = RE_WOL_LINK_SPEED_100M_FIRST; + if (!sc->re_dash) { + u_int16_t anlpar; + + anlpar = sc->phy_reg_anlpar; + + if ((anlpar & ANLPAR_10_FD) || (anlpar & ANLPAR_10)) { + wol_link_speed = RE_WOL_LINK_SPEED_10M_FIRST; + } else { + wol_link_speed = RE_WOL_LINK_SPEED_100M_FIRST; + } + } + + switch(sc->re_device_id) { + case RT_DEVICEID_8126: + re_clear_eth_ocp_phy_bit(sc, 0xA5D4, RTK_ADVERTISE_5000FULL); + /* FALLTHROUGH */ + case RT_DEVICEID_8125: + case RT_DEVICEID_3000: + case RT_DEVICEID_8162: + re_clear_eth_ocp_phy_bit(sc, 0xA5D4, RTK_ADVERTISE_2500FULL); + /* FALLTHROUGH */ + case RT_DEVICEID_8169: + case RT_DEVICEID_8169SC: + case RT_DEVICEID_8168: + case RT_DEVICEID_8161: + re_mdio_write(sc, MII_100T2CR, re_mdio_read(sc,MII_100T2CR) & ~(GTCR_ADV_1000TFDX|GTCR_ADV_1000THDX)); + /* FALLTHROUGH */ + default: + if (wol_link_speed == RE_WOL_LINK_SPEED_10M_FIRST) + re_mdio_write(sc, MII_ANAR, re_mdio_read(sc,MII_ANAR) & ~(ANAR_TX_FD | ANAR_TX)); + break; + } + + switch(sc->re_device_id) { + case RT_DEVICEID_8126: + case RT_DEVICEID_8125: + case RT_DEVICEID_3000: + case RT_DEVICEID_8162: + case RT_DEVICEID_8169: + case RT_DEVICEID_8169SC: + case RT_DEVICEID_8168: + case RT_DEVICEID_8161: + re_mdio_write(sc, MII_BMCR, BMCR_RESET | BMCR_AUTOEN | BMCR_STARTNEG); + break; + default: + if (sc->re_type == MACFG_36) + re_mdio_write(sc, MII_BMCR, BMCR_RESET | BMCR_AUTOEN | BMCR_STARTNEG); + else + re_mdio_write(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); + break; + } + +exit: + return wol_link_speed; +} + +static void +re_setwol(struct re_softc *sc) +{ + struct ifnet *ifp; + int pmc; + uint16_t pmstat; + uint8_t v; + + RE_LOCK_ASSERT(sc); + + ifp = RE_GET_IFNET(sc); + + if ((ifp->if_capenable & IFCAP_WOL) == 0) { + re_phy_power_down(sc->dev); + return; + } + + if (pci_find_cap(sc->dev, PCIY_PMG, &pmc) != 0) + return; + + /* Enable config register write. */ + re_enable_cfg9346_write(sc); + + if (ifp->if_capenable & IFCAP_WOL_MAGIC) + re_enable_magic_packet(sc); + else + re_disable_magic_packet(sc); + + v = CSR_READ_1(sc, RE_CFG5); + v &= ~(RL_CFG5_WOL_BCAST | RL_CFG5_WOL_MCAST | RL_CFG5_WOL_UCAST | + RL_CFG5_WOL_LANWAKE); + + if ((ifp->if_capenable & IFCAP_WOL_UCAST) != 0) + v |= RL_CFG5_WOL_UCAST; + if ((ifp->if_capenable & IFCAP_WOL_MCAST) != 0) + v |= RL_CFG5_WOL_MCAST | RL_CFG5_WOL_BCAST; + if ((ifp->if_capenable & IFCAP_WOL) != 0) + v |= RL_CFG5_WOL_LANWAKE; + CSR_WRITE_1(sc, RE_CFG5, v); + + /* Config register write done. */ + re_disable_cfg9346_write(sc); + + /* + * It seems that hardware resets its link speed to 100Mbps in + * power down mode so switching to 100Mbps in driver is not + * needed. + */ + + /* Request PME if WOL is requested. */ + pmstat = pci_read_config(sc->dev, pmc + PCIR_POWER_STATUS, 2); + pmstat &= ~(PCIM_PSTAT_PME | PCIM_PSTAT_PMEENABLE); + if ((ifp->if_capenable & IFCAP_WOL) != 0) + pmstat |= PCIM_PSTAT_PME | PCIM_PSTAT_PMEENABLE; + pci_write_config(sc->dev, pmc + PCIR_POWER_STATUS, pmstat, 2); + + /* Put controller into sleep mode. */ + if ((ifp->if_capenable & IFCAP_WOL) != 0) { + uint8_t wol_link_speed; + re_set_rx_packet_filter_in_sleep_state(sc); + wol_link_speed = re_set_wol_linkspeed(sc); + if (sc->re_type == MACFG_21 || sc->re_type == MACFG_22) + CSR_WRITE_1(sc, RE_COMMAND, RE_CMD_RX_ENB); + + if (sc->RequiredPfmPatch) + re_set_pfm_patch(sc, + (wol_link_speed == RE_WOL_LINK_SPEED_10M_FIRST) ? + 1 : 0); + } +} + +static void +re_clrwol(struct re_softc *sc) +{ + int pmc; + uint16_t pmstat; + uint8_t v; + + RE_LOCK_ASSERT(sc); + + if (pci_find_cap(sc->dev, PCIY_PMG, &pmc) != 0) + return; + + /* Disable PME and clear PME status. */ + pmstat = pci_read_config(sc->dev, pmc + PCIR_POWER_STATUS, 2); + pmstat &= ~PCIM_PSTAT_PMEENABLE; + pci_write_config(sc->dev, pmc + PCIR_POWER_STATUS, pmstat, 2); + + /* Enable config register write. */ + re_enable_cfg9346_write(sc); + + v = CSR_READ_1(sc, RE_CFG3); + v &= ~(RL_CFG3_WOL_LINK); + CSR_WRITE_1(sc, RE_CFG3, v); + + re_disable_magic_packet(sc); + + v = CSR_READ_1(sc, RE_CFG5); + v &= ~(RL_CFG5_WOL_BCAST | RL_CFG5_WOL_MCAST | RL_CFG5_WOL_UCAST); + v &= ~RL_CFG5_WOL_LANWAKE; + CSR_WRITE_1(sc, RE_CFG5, v); + + /* Config register write done. */ + re_disable_cfg9346_write(sc); +} + +/* + * Stop the adapter and free any mbufs allocated to the + * RX and TX lists. + */ +static void re_stop(struct re_softc *sc) /* Stop Driver */ +{ + struct ifnet *ifp; + + /* RE_LOCK_ASSERT(sc);*/ + + ifp = RE_GET_IFNET(sc); +#if OS_VER < VERSION(9,0) + ifp->if_timer = 0; +#endif + + re_stop_timer(sc); + + /* + * Disable accepting frames to put RX MAC into idle state. + * Otherwise it's possible to get frames while stop command + * execution is in progress and controller can DMA the frame + * to already freed RX buffer during that period. + */ + re_clear_all_rx_packet_filter(sc); + + switch (sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + CSR_WRITE_4(sc, RE_IMR0_8125, 0x00000000); + CSR_WRITE_4(sc, RE_ISR0_8125, 0xffffffff); + break; + default: + CSR_WRITE_2(sc, RE_IMR, 0x0000); + CSR_WRITE_2(sc, RE_ISR, 0xffff); + break; + } + + switch (sc->re_type) { + case MACFG_50: + case MACFG_51: + case MACFG_52: + re_eri_write(sc, 0x1bc, 4, 0x0000001f, ERIAR_ExGMAC); + re_eri_write(sc, 0x1dc, 4, 0x0000002d, ERIAR_ExGMAC); + break; + case MACFG_38: + re_eri_write(sc, 0x1bc, 4, 0x0000001f, ERIAR_ExGMAC); + re_eri_write(sc, 0x1dc, 4, 0x0000003f, ERIAR_ExGMAC); + break; + } + + switch (sc->re_type) { + case MACFG_74: + case MACFG_75: + re_set_mac_ocp_bit(sc, 0xD438, BIT_3); + re_set_mac_ocp_bit(sc, 0xD438, BIT_2); + re_clear_mac_ocp_bit(sc, 0xDE28, (BIT_1 | BIT_0)); + re_set_mac_ocp_bit(sc, 0xD438, (BIT_1 | BIT_0)); + break; + } + + re_reset(sc); + + /* + * Free the TX list buffers. + */ + while (sc->re_desc.tx_last_index!=sc->re_desc.tx_cur_index) { + u_int32_t entry = sc->re_desc.tx_last_index % RE_TX_BUF_NUM; + if (sc->re_desc.re_tx_mtag) { + bus_dmamap_sync(sc->re_desc.re_tx_mtag, + sc->re_desc.re_tx_dmamap[entry], + BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(sc->re_desc.re_tx_mtag, + sc->re_desc.re_tx_dmamap[entry]); + } + + if (sc->re_desc.tx_buf[entry]!=NULL) { + m_freem(sc->re_desc.tx_buf[entry]); + sc->re_desc.tx_buf[entry] = NULL; + } + sc->re_desc.tx_last_index++; + } + + ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); + + return; +} + +/* + * Main transmit routine. + */ +static void re_start(struct ifnet *ifp) /* Transmit Packet*/ +{ + struct re_softc *sc; + + sc = ifp->if_softc; /* Paste to ifp in function re_attach(dev) */ + RE_LOCK(sc); + re_start_locked(ifp); + RE_UNLOCK(sc); +} + +static uint16_t +re_get_eth_type(struct mbuf *mb) +{ + struct ether_vlan_header *eh; + uint16_t eth_type; + + eh = mtod(mb, struct ether_vlan_header *); + if (mb->m_len < ETHER_HDR_LEN) + return (0); + if (eh->evl_encap_proto == htons(ETHERTYPE_VLAN)) + eth_type = ntohs(eh->evl_proto); + else + eth_type = ntohs(eh->evl_encap_proto); + return (eth_type); +} + +static int +re_get_l4hdr_offset(struct mbuf *mb) +{ + struct ether_vlan_header *eh; + //struct tcphdr *th; + struct ip *ip; + int ip_hlen; + struct ip6_hdr *ip6; + uint16_t eth_type; + int eth_hdr_len; + + eh = mtod(mb, struct ether_vlan_header *); + if (mb->m_len < ETHER_HDR_LEN) + return (0); + if (eh->evl_encap_proto == htons(ETHERTYPE_VLAN)) { + eth_type = ntohs(eh->evl_proto); + eth_hdr_len = ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN; + } else { + eth_type = ntohs(eh->evl_encap_proto); + eth_hdr_len = ETHER_HDR_LEN; + } + if (mb->m_len < eth_hdr_len) + return (0); + switch (eth_type) { + case ETHERTYPE_IP: + ip = (struct ip *)(mb->m_data + eth_hdr_len); + if (mb->m_len < eth_hdr_len + sizeof(*ip)) + return (0); + if (ip->ip_p != IPPROTO_TCP) + return (0); + ip_hlen = ip->ip_hl << 2; + eth_hdr_len += ip_hlen; + break; + case ETHERTYPE_IPV6: + ip6 = (struct ip6_hdr *)(mb->m_data + eth_hdr_len); + if (mb->m_len < eth_hdr_len + sizeof(*ip6)) + return (0); + if (ip6->ip6_nxt != IPPROTO_TCP) + return (0); + eth_hdr_len += sizeof(*ip6); + break; + default: + return (0); + } + /* + if (mb->m_len < eth_hdr_len + sizeof(*th)) + return (0); + th = (struct tcphdr *)(mb->m_data + eth_hdr_len); + tcp_hlen = th->th_off << 2; + eth_hdr_len += tcp_hlen; + if (mb->m_len < eth_hdr_len) + return (0); + */ + return (eth_hdr_len); +} + +static void re_start_locked(struct ifnet *ifp) +{ + bus_dma_segment_t segs[RE_NTXSEGS]; + bus_dmamap_t map; + struct re_softc *sc; + struct mbuf *m_head; + struct mbuf *m_new; + uint32_t tx_cur_index; + uint32_t entry; + uint32_t first_entry; + int queued; + int nsegs; + int error; + int i; + + sc = ifp->if_softc; /* Paste to ifp in function re_attach(dev) */ + + /* RE_LOCK_ASSERT(sc);*/ + + if ((sc->driver_detach == 1) || (sc->rx_fifo_overflow != 0)) + return; + + tx_cur_index = sc->re_desc.tx_cur_index; + for (queued = 0; !IFQ_DRV_IS_EMPTY(&ifp->if_snd);) { + int fs = 1, ls = 0; + uint32_t opts1; + uint32_t opts2; + IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head); /* Remove(get) data from system transmit queue */ + if (m_head == NULL) { + break; + } + + if ((sc->re_type == MACFG_80 || sc->re_type == MACFG_81 || + sc->re_type == MACFG_82 || sc->re_type == MACFG_83) && + sc->re_device_id != RT_DEVICEID_3000) { + if (re_8125_pad(sc, m_head) != 0) { + IFQ_DRV_PREPEND(&ifp->if_snd, m_head); + ifp->if_drv_flags |= IFF_DRV_OACTIVE; + break; + } + } + + entry = tx_cur_index % RE_TX_BUF_NUM; + if (sc->re_coalesce_tx_pkt) { + if (re_encap(sc, &m_head)) { + IFQ_DRV_PREPEND(&ifp->if_snd, m_head); + ifp->if_drv_flags |= IFF_DRV_OACTIVE; + break; + } + } + + error = bus_dmamap_load_mbuf_sg(sc->re_desc.re_tx_mtag, sc->re_desc.re_tx_dmamap[entry], + m_head, segs, &nsegs, BUS_DMA_NOWAIT); + if (error == EFBIG) { + m_new = m_collapse(m_head, M_NOWAIT, RE_NTXSEGS); + if (m_new == NULL) { + m_freem(m_head); + m_head = NULL; + //return (ENOBUFS); + break; + } + m_head = m_new; + error = bus_dmamap_load_mbuf_sg(sc->re_desc.re_tx_mtag, + sc->re_desc.re_tx_dmamap[entry], m_head, segs, &nsegs, BUS_DMA_NOWAIT); + if (error != 0) { + m_freem(m_head); + m_head = NULL; + //return (error); + break; + } + } else if (error != 0) { + //return (error); + IFQ_DRV_PREPEND(&ifp->if_snd, m_head); + ifp->if_drv_flags |= IFF_DRV_OACTIVE; + break; + } + if (nsegs == 0) { + m_freem(m_head); + m_head = NULL; + //return (EIO); + break; + } + + /* Check for number of available descriptors. */ + if (CountFreeTxDescNum(&sc->re_desc) < nsegs) { /* No enough descriptor */ + bus_dmamap_unload(sc->re_desc.re_tx_mtag, sc->re_desc.re_tx_dmamap[entry]); + IFQ_DRV_PREPEND(&ifp->if_snd, m_head); + ifp->if_drv_flags |= IFF_DRV_OACTIVE; + break; + } + + bus_dmamap_sync(sc->re_desc.re_tx_mtag, sc->re_desc.re_tx_dmamap[entry], + BUS_DMASYNC_PREWRITE); + + first_entry = entry; + + if (ifp->if_bpf) { /* If there's a BPF listener, bounce a copy of this frame to him. */ + //printf("If there's a BPF listener, bounce a copy of this frame to him. \n"); + + /*#if OS_VER < VERSION(5, 1)*/ +#if OS_VER < VERSION(4,9) + bpf_mtap(ifp, m_head); +#else + bpf_mtap(ifp->if_bpf, m_head); +#endif + } + + opts1 = opts2 = 0; + //hw tso + if ((m_head->m_pkthdr.csum_flags & CSUM_TSO) != 0) { + if ((sc->re_if_flags & RL_FLAG_DESCV2) == 0) { + opts2 |= RL_TDESC_CMD_LGSEND | + ((uint32_t)m_head->m_pkthdr.tso_segsz << + RL_TDESC_CMD_MSSVAL_SHIFT); + } else { + /* + * RTL8168C/RTL816CP/RTL8111C/RTL8111CP + */ + const uint16_t l4hoffset = + re_get_l4hdr_offset(m_head); + + if (re_get_eth_type(m_head) == ETHERTYPE_IPV6) + opts1 |= RL_TDESC_CMD_GTSENDV6; + else + opts1 |= RL_TDESC_CMD_GTSENDV4; + opts1 |= (l4hoffset << RL_TDESC_CMD_GTSEND_TCPHO_SHIFT); + opts2 |= ((uint32_t)m_head->m_pkthdr.tso_segsz << + RL_TDESC_CMD_MSSVALV2_SHIFT); + } + goto process_vlan; + } + //hw checksum + if ((m_head->m_pkthdr.csum_flags & RE_CSUM_FEATURES) != 0) { + if ((sc->re_if_flags & RL_FLAG_DESCV2) == 0) { + opts1 |= RL_IPV4CS1; + if (m_head->m_pkthdr.csum_flags & CSUM_TCP) + opts1 |= RL_TCPCS1; + if (m_head->m_pkthdr.csum_flags & CSUM_UDP) + opts1 |= RL_UDPCS1; + } else { + /* + * RTL8168C/RTL816CP/RTL8111C/RTL8111CP + */ + if (re_get_eth_type(m_head) == ETHERTYPE_IP) + opts2 |= RL_IPV4CS; + if (m_head->m_pkthdr.csum_flags & + (CSUM_TCP | CSUM_TCP_IPV6)) + opts2 |= RL_TCPCS; + else if (m_head->m_pkthdr.csum_flags & + (CSUM_UDP | CSUM_UDP_IPV6)) + opts2 |= RL_UDPCS; + if (m_head->m_pkthdr.csum_flags & + (CSUM_TCP_IPV6 | CSUM_UDP_IPV6)) { + const uint16_t l4hoffset = + re_get_l4hdr_offset(m_head); + + opts2 |= RL_CS_V6F | + (l4hoffset << RL_TDESC_CMD_CSUM_TCPHO_SHIFT); + } + } + goto process_vlan; + } +process_vlan: + //vlan + if (m_head->m_flags & M_VLANTAG) + opts2 |= bswap16(m_head->m_pkthdr.ether_vtag) | RL_TDESC_VLANCTL_TAG; +#ifdef _DEBUG_ + printf("PktLen=%d \n", m_head->m_pkthdr.len); +#endif + for (i = 0; i < nsegs; i++) { + if (segs[i].ds_len == 0) + continue; + + if (i == (nsegs - 1)) { + ls=1; + + /* + * Insure that the map for this transmission + * is placed at the array index of the last descriptor + * in this chain. (Swap last and first dmamaps.) + */ + map = sc->re_desc.re_tx_dmamap[first_entry]; + sc->re_desc.re_tx_dmamap[first_entry] = sc->re_desc.re_tx_dmamap[entry]; + sc->re_desc.re_tx_dmamap[entry] = map; + sc->re_desc.tx_buf[entry] = m_head; + } else + sc->re_desc.tx_buf[entry] = NULL; + + WritePacket(sc,&segs[i],fs,ls,opts2,opts1, entry); + + fs=0; + + tx_cur_index++; + entry = tx_cur_index % RE_TX_BUF_NUM; + } + sc->re_desc.tx_cur_index = tx_cur_index; +#ifdef _DEBUG_ + printf("\n"); +#endif + queued++; + } + + sc->re_desc.tx_cur_index = tx_cur_index; + + if (queued == 0) + return; + + re_start_tx(sc); + +#if OS_VER < VERSION(9,0) + ifp->if_timer = 5; +#endif + + return; +} + +static void _re_start_tx(struct re_softc *sc) +{ + switch (sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + CSR_WRITE_2(sc, RE_TPPOLL_8125, RE_NPQ_8125); + break; + default: + CSR_WRITE_1(sc, RE_TPPOLL, RE_NPQ); + break; + } +} + +static void re_start_tx(struct re_softc *sc) +{ + bus_dmamap_sync(sc->re_desc.tx_desc_tag, + sc->re_desc.tx_desc_dmamap, + BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE); + + _re_start_tx(sc); +} + +/* + * Encapsulate an mbuf chain in a descriptor by coupling the mbuf data + * pointers to the fragment pointers. + */ +static int re_encap(struct re_softc *sc,struct mbuf **m_head) +{ + struct mbuf *m_new = NULL; + + m_new = m_defrag(*m_head, M_DONTWAIT); + + if (m_new == NULL) { + printf("re%d: no memory for tx list", sc->re_unit); + return (1); + } + + /* Pad frames to at least 60 bytes. */ + if (m_new->m_pkthdr.len < RE_MIN_FRAMELEN) { /* Case length < 60 bytes */ + /* + * Make security concious people happy: zero out the + * bytes in the pad area, since we don't know what + * this mbuf cluster buffer's previous user might + * have left in it. + */ + bzero(mtod(m_new, char *) + m_new->m_pkthdr.len, + RE_MIN_FRAMELEN - m_new->m_pkthdr.len); + m_new->m_pkthdr.len = RE_MIN_FRAMELEN; + m_new->m_len = m_new->m_pkthdr.len; + } + + *m_head = m_new; + + return(0); +} + +#define MIN_IPV4_PATCH_PKT_LEN (121) +#define MIN_IPV6_PATCH_PKT_LEN (147) +static int re_8125_pad(struct re_softc *sc,struct mbuf *m_head) +{ + uint32_t min_pkt_len; + uint16_t ether_type; + + if ((m_head->m_pkthdr.csum_flags & (CSUM_TCP | CSUM_UDP)) != 0) + goto out; + + ether_type = re_get_eth_type(m_head); + min_pkt_len = RE_MIN_FRAMELEN; + if (ether_type == ETHERTYPE_IP) { + struct ip *ip = (struct ip *)mtodo(m_head, ETHER_HDR_LEN); + if (ip->ip_p == IPPROTO_UDP) + min_pkt_len = MIN_IPV4_PATCH_PKT_LEN; + } else if (ether_type == ETHERTYPE_IPV6) { + struct ip6_hdr *ip6 = (struct ip6_hdr *)mtodo(m_head, ETHER_HDR_LEN); + if (ip6->ip6_nxt == IPPROTO_UDP) + min_pkt_len = MIN_IPV6_PATCH_PKT_LEN; + } + + if (m_head->m_pkthdr.len < min_pkt_len) { + static const uint8_t pad[MIN_IPV4_PATCH_PKT_LEN]; + uint16_t pad_len = min_pkt_len - m_head->m_pkthdr.len; + if (!m_append(m_head, pad_len, pad)) + return (1); + + if (ether_type == ETHERTYPE_IP && + m_head->m_pkthdr.csum_flags & CSUM_IP) { + struct ip *ip; + m_head->m_data += ETHER_HDR_LEN; + ip = mtod(m_head, struct ip *); + ip->ip_sum = in_cksum(m_head, ip->ip_hl << 2); + m_head->m_data -= ETHER_HDR_LEN; + m_head->m_pkthdr.csum_flags &= ~CSUM_IP; + } + } + +out: + return(0); +} + +static void WritePacket(struct re_softc *sc, bus_dma_segment_t *segs, int fs, int ls, uint32_t opts2, uint32_t opts1, uint32_t entry) +{ + union TxDesc *txptr; + uint32_t status; + + txptr = &(sc->re_desc.tx_desc[entry]); + + status = RL_TDESC_CMD_OWN | opts1 | segs->ds_len; + + if (fs) + status |= RL_TDESC_CMD_SOF; + if (ls) + status |= RL_TDESC_CMD_EOF; + if (entry == (RE_TX_BUF_NUM - 1)) + status |= RL_TDESC_CMD_EOR; + + txptr->so1.TxBuff = htole64(segs->ds_addr); + + txptr->ul[1] = htole32(opts2); + /* make sure opts2 is set before opts1 */ + wmb(); + txptr->ul[0] = htole32(status); +} + +static uint32_t CountFreeTxDescNum(struct re_descriptor *desc) +{ + uint32_t ret=desc->tx_last_index + RE_TX_BUF_NUM - desc->tx_cur_index; + + return ret; +} + +/* +static int CountMbufNum(struct mbuf *m_head) +{ + int ret=0; + struct mbuf *ptr = m_head; + + while (ptr!=NULL) { + if (ptr->m_len >0) + ret++; + ptr=ptr->m_next; + } + + return ret; +} +*/ + +#ifdef RE_FIXUP_RX +static __inline void re_fixup_rx(struct mbuf *m) +{ + int i; + uint16_t *src, *dst; + + src = mtod(m, uint16_t *); + dst = src - (RE_ETHER_ALIGN - ETHER_ALIGN) / sizeof *src; + + for (i = 0; i < (m->m_len / sizeof(uint16_t) + 1); i++) + *dst++ = *src++; + + m->m_data -= RE_ETHER_ALIGN - ETHER_ALIGN; +} +#endif + +/* + * A frame was downloaded to the chip. It's safe for us to clean up + * the list buffers. + */ +static void re_txeof(struct re_softc *sc) /* Transmit OK/ERR handler */ +{ + union TxDesc *txptr; + struct ifnet *ifp; + u_int32_t txstat; + u_int32_t entry; + u_int32_t tx_cur_index; + u_int32_t tx_last_index; + + /* printf("X");*/ + + ifp = RE_GET_IFNET(sc); + +#if OS_VER < VERSION(9,0) + /* Clear the timeout timer. */ + ifp->if_timer = 0; +#endif + tx_cur_index = sc->re_desc.tx_cur_index; + tx_last_index = sc->re_desc.tx_last_index; + /* No packet to complete. */ + if (tx_cur_index == tx_last_index) + return; + + bus_dmamap_sync(sc->re_desc.tx_desc_tag, + sc->re_desc.tx_desc_dmamap, + BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE); + + while (tx_cur_index != tx_last_index) { + entry = tx_last_index % RE_TX_BUF_NUM; + txptr=&(sc->re_desc.tx_desc[entry]); + txstat = le32toh(txptr->ul[0]); + if (txstat & RL_TDESC_STAT_OWN) + break; +#ifdef _DEBUG_ + printf("**** Tx OK ****\n"); +#endif + if (sc->re_desc.tx_buf[entry]!=NULL) { + bus_dmamap_sync(sc->re_desc.re_tx_mtag, + sc->re_desc.re_tx_dmamap[entry], + BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(sc->re_desc.re_tx_mtag, + sc->re_desc.re_tx_dmamap[entry]); + /* Free Current MBuf in a Mbuf list*/ + m_freem(sc->re_desc.tx_buf[entry]); + sc->re_desc.tx_buf[entry] = NULL; + } + + tx_last_index++; + } + + if (sc->re_desc.tx_last_index != tx_last_index) { + sc->re_desc.tx_last_index = tx_last_index; + ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; + } + + /* prevent tx stop. */ + if (tx_cur_index != tx_last_index) + _re_start_tx(sc); + + return; +} + +#if defined(INET) || defined(INET6) +static int +re_lro_rx(struct re_softc *sc, struct mbuf *m) +{ + struct lro_ctrl *lro; + + lro = &sc->re_lro; + + if (lro->lro_mbuf_max != 0) { + tcp_lro_queue_mbuf(lro, m); + return (0); + } + + return (tcp_lro_rx(lro, m, 0)); +} +#endif + +static void +re_rxq_input(struct re_softc *sc, struct mbuf *m, bool lro_able) +{ + struct ifnet *ifp; + + ifp = RE_GET_IFNET(sc); + +#if defined(INET) || defined(INET6) + if ((ifp->if_capenable & IFCAP_LRO) && lro_able) { + if (re_lro_rx(sc, m) == 0) + return; + } +#endif + + /*#if OS_VER < VERSION(5, 1)*/ +#if OS_VER < VERSION(4,9) + /* Remove header from mbuf and pass it on. */ + m_adj(m, sizeof(struct ether_header)); + ether_input(ifp, eh, m); +#else + (*ifp->if_input)(ifp, m); +#endif +} + +static void +re_drain_soft_lro(struct re_softc *sc) +{ +#if defined(INET) || defined(INET6) +#if OS_VER >= VERSION(11,0) + tcp_lro_flush_all(&sc->re_lro); +#else + struct lro_entry *queued; + + while ((!SLIST_EMPTY(&lro->lro_active))) { + queued = SLIST_FIRST(&lro->lro_active); + SLIST_REMOVE_HEAD(&lro->lro_active, next); + tcp_lro_flush(lro, queued); + } +#endif //OS_VER >= VERSION(11,0) +#endif //defined(INET) || defined(INET6) +} + +/* + * A frame has been uploaded: pass the resulting mbuf chain up to + * the higher level protocols. + * + * You know there's something wrong with a PCI bus-master chip design + * when you have to use m_devget(). + * + * The receive operation is badly documented in the datasheet, so I'll + * attempt to document it here. The driver provides a buffer area and + * places its base address in the RX buffer start address register. + * The chip then begins copying frames into the RX buffer. Each frame + * is preceeded by a 32-bit RX status word which specifies the length + * of the frame and certain other status bits. Each frame (starting with + * the status word) is also 32-bit aligned. The frame length is in the + * first 16 bits of the status word; the lower 15 bits correspond with + * the 'rx status register' mentioned in the datasheet. + * + * Note: to make the Alpha happy, the frame payload needs to be aligned + * on a 32-bit boundary. To achieve this, we cheat a bit by copying from + * the ring buffer starting at an address two bytes before the actual + * data location. We can then shave off the first two bytes using m_adj(). + * The reason we do this is because m_devget() doesn't let us specify an + * offset into the mbuf storage space, so we have to artificially create + * one. The ring is allocated in such a way that there are a few unused + * bytes of space preceecing it so that it will be safe for us to do the + * 2-byte backstep even if reading from the ring at offset 0. + */ +static int re_rxeof(struct re_softc *sc) /* Receive Data OK/ERR handler */ +{ + struct mbuf *m; + struct ifnet *ifp; + union RxDesc *rxptr; + struct mbuf *buf; + int size; + int maxpkt = RE_RX_BUDGET; + u_int32_t entry; + u_int32_t pkt_size; + u_int32_t rx_cur_index; + u_int32_t opts2,opts1,status; + bool lro_able; + + /* RE_LOCK_ASSERT(sc);*/ + + ifp = RE_GET_IFNET(sc); + + bus_dmamap_sync(sc->re_desc.rx_desc_tag, + sc->re_desc.rx_desc_dmamap, + BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE); + + rx_cur_index = sc->re_desc.rx_cur_index; + while (maxpkt > 0) { + entry = rx_cur_index % RE_RX_BUF_NUM; + rxptr=&(sc->re_desc.rx_desc[entry]); + opts1 = le32toh(rxptr->ul[0]); + lro_able = false; + + /* Check Receive OK */ + if (opts1&RL_RDESC_STAT_OWN) + break; + + /* Check if this packet is received correctly*/ + if (opts1&RL_RDESC_RES) /*Check RES bit*/ + goto drop_packet; + + pkt_size = (opts1&RL_RDESC_STAT_GFRAGLEN)-ETHER_CRC_LEN; + if (pkt_size > sc->re_rx_mbuf_sz) + goto drop_packet; + + /* Wait other fields is dmaed */ + rmb(); + + opts2 = le32toh(rxptr->ul[1]); + + //buf = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR); /* Alloc a new mbuf */ + + if (sc->re_rx_mbuf_sz <= MCLBYTES) + size = MCLBYTES; + else if (sc->re_rx_mbuf_sz <= MJUMPAGESIZE) + size = MJUMPAGESIZE; + else + size = MJUM9BYTES; + + buf = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, size); + if (buf==NULL) + goto drop_packet; + + buf->m_len = buf->m_pkthdr.len = size; +#ifdef RE_FIXUP_RX + /* + * This is part of an evil trick to deal with non-x86 platforms. + * The RealTek chip requires RX buffers to be aligned on 64-bit + * boundaries, but that will hose non-x86 machines. To get around + * this, we leave some empty space at the start of each buffer + * and for non-x86 hosts, we copy the buffer back six bytes + * to achieve word alignment. This is slightly more efficient + * than allocating a new buffer, copying the contents, and + * discarding the old buffer. + */ + m_adj(buf, RE_ETHER_ALIGN); +#endif + + bus_dmamap_sync(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[entry], + BUS_DMASYNC_POSTREAD); + bus_dmamap_unload(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[entry]); + + m = sc->re_desc.rx_buf[entry]; + sc->re_desc.rx_buf[entry] = buf; + m->m_pkthdr.len = m->m_len = pkt_size; + m->m_pkthdr.rcvif = ifp; + +#ifdef RE_FIXUP_RX + re_fixup_rx(m); +#endif + + //vlan + if (opts2 & RL_RDESC_VLANCTL_TAG) { + m->m_pkthdr.ether_vtag = + bswap16((opts2 & RL_RDESC_VLANCTL_DATA)); + m->m_flags |= M_VLANTAG; + } + if (ifp->if_capenable & IFCAP_RXCSUM) { + if ((sc->re_if_flags & RL_FLAG_DESCV2) == 0) { + u_int32_t proto = opts1 & RL_ProtoMASK; + + if (proto != 0) + m->m_pkthdr.csum_flags |= CSUM_IP_CHECKED; + if (!(opts1 & RL_IPF)) + m->m_pkthdr.csum_flags |= CSUM_IP_VALID; + if (((proto == RL_ProtoTCP) && !(opts1 & RL_TCPF)) || + ((proto == RL_ProtoUDP) && !(opts1 & RL_UDPF))) { + m->m_pkthdr.csum_flags |= CSUM_DATA_VALID|CSUM_PSEUDO_HDR; + m->m_pkthdr.csum_data = 0xffff; + if (proto == RL_ProtoTCP) + lro_able = true; + } + } else { + /* + * RTL8168C/RTL816CP/RTL8111C/RTL8111CP + */ + if (opts2 & RL_V4F) + m->m_pkthdr.csum_flags |= CSUM_IP_CHECKED; + if ((opts2 & RL_V4F) && !(opts1 & RL_IPF)) + m->m_pkthdr.csum_flags |= CSUM_IP_VALID; + if (((opts1 & RL_TCPT) && !(opts1 & RL_TCPF)) || + ((opts1 & RL_UDPT) && !(opts1 & RL_UDPF))) { + m->m_pkthdr.csum_flags |= CSUM_DATA_VALID|CSUM_PSEUDO_HDR; + m->m_pkthdr.csum_data = 0xffff; + if (opts1 & RL_TCPT) + lro_able = true; + } + } + } + +#if OS_VER < VERSION(11,0) + ifp->if_ipackets++; +#else + if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1); +#endif +#ifdef _DEBUG_ + printf("Rcv Packet, Len=%d \n", m->m_len); +#endif + + RE_UNLOCK(sc); + + re_rxq_input(sc, m, lro_able); + + RE_LOCK(sc); + + /* Load the map for rx buffer. */ + bus_dmamap_load(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[entry], + sc->re_desc.rx_buf[entry]->m_data, + sc->re_rx_desc_buf_sz, + re_rx_dma_map_buf, rxptr, + 0); + bus_dmamap_sync(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[entry], + BUS_DMASYNC_PREREAD); +update_desc: + status = RL_RDESC_CMD_OWN | sc->re_rx_desc_buf_sz; + if (entry == (RE_RX_BUF_NUM - 1)) + status |= RL_RDESC_CMD_EOR; + + rxptr->ul[1]=0; + /* make sure desc is all set before releasing it */ + wmb(); + rxptr->ul[0] = htole32(status); + + rx_cur_index++; + + maxpkt--; + + continue; +drop_packet: +#if OS_VER < VERSION(11,0) + ifp->if_ierrors++; +#else + if_inc_counter(ifp, IFCOUNTER_IERRORS, 1); +#endif + goto update_desc; + } + + if (sc->re_desc.rx_cur_index != rx_cur_index) { + if (ifp->if_capenable & IFCAP_LRO) { + RE_UNLOCK(sc); + re_drain_soft_lro(sc); + RE_LOCK(sc); + } + sc->re_desc.rx_cur_index = rx_cur_index; + bus_dmamap_sync(sc->re_desc.rx_desc_tag, + sc->re_desc.rx_desc_dmamap, + BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE); + } + + return (RE_RX_BUDGET - maxpkt); +} + +#if OS_VER < VERSION(7,0) +static void re_intr(void *arg) /* Interrupt Handler */ +#else +static int re_intr(void *arg) /* Interrupt Handler */ +#endif //OS_VER < VERSION(7,0) +{ + struct re_softc *sc; + + sc = arg; + + if ((sc->re_if_flags & (RL_FLAG_MSI | RL_FLAG_MSIX)) == 0) { + if ((CSR_READ_2(sc, RE_ISR) & RE_INTRS) == 0) { +#if OS_VER < VERSION(7,0) + return; +#else + return (FILTER_STRAY); +#endif + } + } + + /* Disable interrupts. */ + CSR_WRITE_2(sc, RE_IMR, 0x0000); + +#if OS_VER < VERSION(7,0) + re_int_task(arg, 0); +#else //OS_VER < VERSION(7,0) +#if OS_VER < VERSION(11,0) + taskqueue_enqueue_fast(sc->re_tq, &sc->re_inttask); +#else ////OS_VER < VERSION(11,0) + taskqueue_enqueue(sc->re_tq, &sc->re_inttask); +#endif //OS_VER < VERSION(11,0) + return (FILTER_HANDLED); +#endif //OS_VER < VERSION(7,0) +} + +#if OS_VER < VERSION(7,0) +static void re_intr_8125(void *arg) /* Interrupt Handler */ +#else +static int re_intr_8125(void *arg) /* Interrupt Handler */ +#endif //OS_VER < VERSION(7,0) +{ + struct re_softc *sc; + + sc = arg; + + if ((sc->re_if_flags & (RL_FLAG_MSI | RL_FLAG_MSIX)) == 0) { + if ((CSR_READ_4(sc, RE_ISR0_8125) & RE_INTRS) == 0) { +#if OS_VER < VERSION(7,0) + return; +#else + return (FILTER_STRAY); +#endif + } + } + + /* Disable interrupts. */ + CSR_WRITE_4(sc, RE_IMR0_8125, 0x00000000); + +#if OS_VER < VERSION(7,0) + re_int_task_8125(arg, 0); +#else //OS_VER < VERSION(7,0) +#if OS_VER < VERSION(11,0) + taskqueue_enqueue_fast(sc->re_tq, &sc->re_inttask); +#else ////OS_VER < VERSION(11,0) + taskqueue_enqueue(sc->re_tq, &sc->re_inttask); +#endif //OS_VER < VERSION(11,0) + return (FILTER_HANDLED); +#endif //OS_VER < VERSION(7,0) +} + +static void re_int_task_poll(void *arg, int npending) +{ + struct re_softc *sc; + struct ifnet *ifp; + int done; + + sc = arg; + + RE_LOCK(sc); + + ifp = RE_GET_IFNET(sc); + + if (sc->suspended || + (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { + RE_UNLOCK(sc); + return; + } + + done = re_rxeof(sc); + + re_txeof(sc); + + if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) + re_start_locked(ifp); + + RE_UNLOCK(sc); + +#if OS_VER>=VERSION(7,0) + if (done >= RE_RX_BUDGET) { +#if OS_VER < VERSION(11,0) + taskqueue_enqueue_fast(sc->re_tq, &sc->re_inttask_poll); +#else ////OS_VER < VERSION(11,0) + taskqueue_enqueue(sc->re_tq, &sc->re_inttask_poll); +#endif //OS_VER < VERSION(11,0) + return; + } +#endif //OS_VER>=VERSION(7,0) + + /* Re-enable interrupts. */ + CSR_WRITE_2(sc, RE_IMR, RE_INTRS); +} + +static void re_int_task(void *arg, int npending) +{ + struct re_softc *sc; + struct ifnet *ifp; + int done; + u_int32_t status; + + sc = arg; + + RE_LOCK(sc); + + ifp = RE_GET_IFNET(sc); + + status = CSR_READ_2(sc, RE_ISR); + + if (status) { + CSR_WRITE_2(sc, RE_ISR, status & ~RE_ISR_FIFO_OFLOW); + } + + if (sc->suspended || + (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { + RE_UNLOCK(sc); + return; + } + + done = re_rxeof(sc); + + if (sc->re_type == MACFG_21) { + if (status & RE_ISR_FIFO_OFLOW) { + sc->rx_fifo_overflow = 1; + CSR_WRITE_2(sc, RE_IntrMitigate, 0x0000); + CSR_WRITE_4(sc, RE_TIMERCNT, 0x4000); + CSR_WRITE_4(sc, RE_TIMERINT, 0x4000); + } else { + sc->rx_fifo_overflow = 0; + CSR_WRITE_4(sc,RE_CPlusCmd, 0x51512082); + } + + if (status & RE_ISR_PCS_TIMEOUT) { + if ((status & RE_ISR_FIFO_OFLOW) && + (!(status & (RE_ISR_RX_OK | RE_ISR_TX_OK | RE_ISR_RX_OVERRUN)))) { + re_reset(sc); + re_init_locked(sc); + sc->rx_fifo_overflow = 0; + CSR_WRITE_2(sc, RE_ISR, RE_ISR_FIFO_OFLOW); + } + } + } + + re_txeof(sc); + + if (status & RE_ISR_SYSTEM_ERR) { + re_reset(sc); + re_init_locked(sc); + } + + if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) + re_start_locked(ifp); + + RE_UNLOCK(sc); + +#if OS_VER>=VERSION(7,0) + if (done >= RE_RX_BUDGET) { +#if OS_VER < VERSION(11,0) + taskqueue_enqueue_fast(sc->re_tq, &sc->re_inttask_poll); +#else ////OS_VER < VERSION(11,0) + taskqueue_enqueue(sc->re_tq, &sc->re_inttask_poll); +#endif //OS_VER < VERSION(11,0) + return; + } +#endif //OS_VER>=VERSION(7,0) + + /* Re-enable interrupts. */ + CSR_WRITE_2(sc, RE_IMR, RE_INTRS); +} + +static void re_int_task_8125_poll(void *arg, int npending) +{ + struct re_softc *sc; + struct ifnet *ifp; + int done; + + sc = arg; + + RE_LOCK(sc); + + ifp = RE_GET_IFNET(sc); + + if (sc->suspended || + (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { + RE_UNLOCK(sc); + return; + } + + done = re_rxeof(sc); + + re_txeof(sc); + + if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) + re_start_locked(ifp); + + RE_UNLOCK(sc); + +#if OS_VER>=VERSION(7,0) + if (done >= RE_RX_BUDGET) { +#if OS_VER < VERSION(11,0) + taskqueue_enqueue_fast(sc->re_tq, &sc->re_inttask_poll); +#else ////OS_VER < VERSION(11,0) + taskqueue_enqueue(sc->re_tq, &sc->re_inttask_poll); +#endif //OS_VER < VERSION(11,0) + return; + } +#endif //OS_VER>=VERSION(7,0) + + /* Re-enable interrupts. */ + CSR_WRITE_4(sc, RE_IMR0_8125, RE_INTRS); +} + +static void re_int_task_8125(void *arg, int npending) +{ + struct re_softc *sc; + struct ifnet *ifp; + int done; + u_int32_t status; + + sc = arg; + + RE_LOCK(sc); + + ifp = RE_GET_IFNET(sc); + + status = CSR_READ_4(sc, RE_ISR0_8125); + + if (status) { + CSR_WRITE_4(sc, RE_ISR0_8125, status & ~RE_ISR_FIFO_OFLOW); + } + + if (sc->suspended || + (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { + RE_UNLOCK(sc); + return; + } + + done = re_rxeof(sc); + + re_txeof(sc); + + if (status & RE_ISR_SYSTEM_ERR) { + re_reset(sc); + re_init_locked(sc); + } + + if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) + re_start_locked(ifp); + + RE_UNLOCK(sc); + +#if OS_VER>=VERSION(7,0) + if (done >= RE_RX_BUDGET) { +#if OS_VER < VERSION(11,0) + taskqueue_enqueue_fast(sc->re_tq, &sc->re_inttask_poll); +#else ////OS_VER < VERSION(11,0) + taskqueue_enqueue(sc->re_tq, &sc->re_inttask_poll); +#endif //OS_VER < VERSION(11,0) + return; + } +#endif //OS_VER>=VERSION(7,0) + + /* Re-enable interrupts. */ + CSR_WRITE_4(sc, RE_IMR0_8125, RE_INTRS); +} + +static void re_set_multicast_reg(struct re_softc *sc, u_int32_t mask0, + u_int32_t mask4) +{ + u_int8_t enable_cfg_reg_write = 0; + + if (sc->re_type == MACFG_5 || sc->re_type == MACFG_6) + enable_cfg_reg_write = 1; + + if (enable_cfg_reg_write) + re_enable_cfg9346_write(sc); + CSR_WRITE_4(sc, RE_MAR0, mask0); + CSR_WRITE_4(sc, RE_MAR4, mask4); + if (enable_cfg_reg_write) + re_disable_cfg9346_write(sc); + + return; +} + +static void re_clear_all_rx_packet_filter(struct re_softc *sc) +{ + CSR_WRITE_4(sc, RE_RXCFG, CSR_READ_4(sc, RE_RXCFG) & + ~(RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_INDIV | RE_RXCFG_RX_MULTI | + RE_RXCFG_RX_BROAD | RE_RXCFG_RX_RUNT | RE_RXCFG_RX_ERRPKT)); +} + +static void re_set_rx_packet_filter_in_sleep_state(struct re_softc *sc) +{ + u_int32_t rxfilt; + + rxfilt = CSR_READ_4(sc, RE_RXCFG); + + rxfilt &= ~(RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_INDIV | RE_RXCFG_RX_MULTI | RE_RXCFG_RX_BROAD | RE_RXCFG_RX_RUNT | RE_RXCFG_RX_ERRPKT); + rxfilt |= (RE_RXCFG_RX_INDIV | RE_RXCFG_RX_MULTI | RE_RXCFG_RX_BROAD); + + CSR_WRITE_4(sc, RE_RXCFG, rxfilt); + + re_set_multicast_reg(sc, 0xFFFFFFFF, 0xFFFFFFFF); + + return; +} + +static void re_set_rx_packet_filter(struct re_softc *sc) +{ + struct ifnet *ifp; + u_int32_t rxfilt; + + ifp = RE_GET_IFNET(sc); + + rxfilt = CSR_READ_4(sc, RE_RXCFG); + + rxfilt |= RE_RXCFG_RX_INDIV; + + if (ifp->if_flags & (IFF_MULTICAST | IFF_ALLMULTI | IFF_PROMISC)) { + rxfilt |= (RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_MULTI); + } else { + rxfilt &= ~(RE_RXCFG_RX_MULTI); + } + + if (ifp->if_flags & IFF_PROMISC) { + rxfilt |= (RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_RUNT | RE_RXCFG_RX_ERRPKT); + } else { + rxfilt &= ~(RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_RUNT | RE_RXCFG_RX_ERRPKT); + } + + if (ifp->if_flags & (IFF_BROADCAST | IFF_PROMISC)) { + rxfilt |= RE_RXCFG_RX_BROAD; + } else { + rxfilt &= ~RE_RXCFG_RX_BROAD; + } + + CSR_WRITE_4(sc, RE_RXCFG, rxfilt); + + re_setmulti(sc); + + return; +} + +#if OS_VER >= VERSION(13,0) +static u_int +re_hash_maddr(void *arg, struct sockaddr_dl *sdl, u_int cnt) +{ + uint32_t h, *hashes = arg; + + h = ether_crc32_be(LLADDR(sdl), ETHER_ADDR_LEN) >> 26; + if (h < 32) + hashes[0] |= (1 << h); + else + hashes[1] |= (1 << (h - 32)); + + return (1); +} +#endif + +/* + * Program the 64-bit multicast hash filter. + */ +static void re_setmulti(struct re_softc *sc) +{ + struct ifnet *ifp; + int h = 0; + u_int32_t hashes[2] = { 0, 0 }; +#if OS_VER < VERSION(13,0) + struct ifmultiaddr *ifma; +#endif + u_int32_t rxfilt; + int mcnt = 0; + + ifp = RE_GET_IFNET(sc); + + rxfilt = CSR_READ_4(sc, RE_RXCFG); + + if (ifp->if_flags & IFF_ALLMULTI || ifp->if_flags & IFF_PROMISC) { + rxfilt |= RE_RXCFG_RX_MULTI; + CSR_WRITE_4(sc, RE_RXCFG, rxfilt); + re_set_multicast_reg(sc, 0xFFFFFFFF, 0xFFFFFFFF); + + return; + } + + /* now program new ones */ +#if OS_VER >= VERSION(13,0) + mcnt = if_foreach_llmaddr(ifp, re_hash_maddr, hashes); +#else +#if OS_VER >= VERSION(12,0) + if_maddr_rlock(ifp); +#elif OS_VER > VERSION(6,0) + IF_ADDR_LOCK(ifp); +#endif +#if OS_VER < VERSION(4,9) + for (ifma = ifp->if_multiaddrs.lh_first; ifma != NULL; + ifma = ifma->ifma_link.le_next) +#elif OS_VER < VERSION(12,0) + TAILQ_FOREACH(ifma,&ifp->if_multiaddrs,ifma_link) +#else + CK_STAILQ_FOREACH(ifma,&ifp->if_multiaddrs,ifma_link) +#endif + { + if (ifma->ifma_addr->sa_family != AF_LINK) + continue; + h = ether_crc32_be(LLADDR((struct sockaddr_dl *) + ifma->ifma_addr), ETHER_ADDR_LEN) >> 26; + if (h < 32) + hashes[0] |= (1 << h); + else + hashes[1] |= (1 << (h - 32)); + mcnt++; + } +#if OS_VER >= VERSION(12,0) + if_maddr_runlock(ifp); +#elif OS_VER > VERSION(6,0) + IF_ADDR_UNLOCK(ifp); +#endif +#endif + + if (mcnt) { + if ((sc->re_if_flags & RL_FLAG_PCIE) != 0) { + h = bswap32(hashes[0]); + hashes[0] = bswap32(hashes[1]); + hashes[1] = h; + } + rxfilt |= RE_RXCFG_RX_MULTI; + } else + rxfilt &= ~RE_RXCFG_RX_MULTI; + + CSR_WRITE_4(sc, RE_RXCFG, rxfilt); + re_set_multicast_reg(sc, hashes[0], hashes[1]); + + return; +} + +static int re_ioctl(struct ifnet *ifp, u_long command, caddr_t data) +{ + struct re_softc *sc = ifp->if_softc; + struct ifreq *ifr = (struct ifreq *) data; + /*int s;*/ + int error = 0; + int mask, reinit; + /*s = splimp();*/ + + switch(command) { + case SIOCSIFADDR: + case SIOCGIFADDR: + error = ether_ioctl(ifp, command, data); + + break; + case SIOCSIFMTU: + + //printf("before mtu =%d\n",(int)ifp->if_mtu); + if (ifr->ifr_mtu > sc->max_jumbo_frame_size) { + error = EINVAL; + break; + } + RE_LOCK(sc); + if (ifp->if_mtu != ifr->ifr_mtu) { + ifp->if_mtu = ifr->ifr_mtu; + //if running + if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + //printf("set mtu when running\n"); + re_stop(sc); + + re_release_buf(sc); + set_rxbufsize(sc); + error = re_alloc_buf(sc); + + if (error == 0) { + re_init_locked(sc); + } + } else { + //if not running + re_release_buf(sc); + set_rxbufsize(sc); + error = re_alloc_buf(sc); + if (error == 0) { + /* Init descriptors. */ + re_var_init(sc); + } + + } + + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~(IFCAP_TSO | + IFCAP_VLAN_HWTSO); + ifp->if_hwassist &= ~CSUM_TSO; + } + // printf("after mtu =%d\n",(int)ifp->if_mtu); + } + RE_UNLOCK(sc); + break; + case SIOCSIFFLAGS: + RE_LOCK(sc); + if (ifp->if_flags & IFF_UP) { + re_init_locked(sc); + } else if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + re_stop(sc); + } + error = 0; + RE_UNLOCK(sc); + break; + case SIOCADDMULTI: + case SIOCDELMULTI: + RE_LOCK(sc); + re_set_rx_packet_filter(sc); + RE_UNLOCK(sc); + error = 0; + break; + case SIOCGIFMEDIA: + case SIOCSIFMEDIA: + error = ifmedia_ioctl(ifp, ifr, &sc->media, command); + break; + case SIOCSIFCAP: + mask = ifr->ifr_reqcap ^ ifp->if_capenable; + reinit = 0; + + if ((mask & IFCAP_TXCSUM) != 0 && (ifp->if_capabilities & IFCAP_TXCSUM) != 0) { + ifp->if_capenable ^= IFCAP_TXCSUM; + if ((ifp->if_capenable & IFCAP_TXCSUM) != 0) { + if ((sc->re_type == MACFG_24) || (sc->re_type == MACFG_25) || (sc->re_type == MACFG_26)) + ifp->if_hwassist |= CSUM_TCP | CSUM_UDP; + else + ifp->if_hwassist |= RE_CSUM_FEATURES_IPV4; + } else + ifp->if_hwassist &= ~RE_CSUM_FEATURES_IPV4; + reinit = 1; + } + + if ((mask & IFCAP_TXCSUM_IPV6) != 0 && (ifp->if_capabilities & IFCAP_TXCSUM_IPV6) != 0) { + ifp->if_capenable ^= IFCAP_TXCSUM_IPV6; + if ((ifp->if_capenable & IFCAP_TXCSUM_IPV6) != 0) { + ifp->if_hwassist |= RE_CSUM_FEATURES_IPV6; + } else + ifp->if_hwassist &= ~RE_CSUM_FEATURES_IPV6; + + if (!((sc->re_if_flags & RL_FLAG_DESCV2) && + (sc->re_if_flags & RL_FLAG_8168G_PLUS))) + ifp->if_hwassist &= ~RE_CSUM_FEATURES_IPV6; + reinit = 1; + } + + if ((mask & IFCAP_RXCSUM) != 0 && + (ifp->if_capabilities & IFCAP_RXCSUM) != 0) { + ifp->if_capenable ^= IFCAP_RXCSUM; + reinit = 1; + } + + if ((mask & IFCAP_RXCSUM_IPV6) != 0 && + (ifp->if_capabilities & IFCAP_RXCSUM_IPV6) != 0) { + ifp->if_capenable ^= IFCAP_RXCSUM_IPV6; + reinit = 1; + } + + if ((ifp->if_mtu <= ETHERMTU) || ((sc->re_type>= MACFG_3) &&(sc->re_type <=MACFG_6)) || ((sc->re_type>= MACFG_21) && (sc->re_type <=MACFG_23))) { + if (ifp->if_capenable & IFCAP_TXCSUM) + sc->re_tx_cstag = 1; + else + sc->re_tx_cstag = 0; + + if (ifp->if_capenable & (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6)) + sc->re_rx_cstag = 1; + else + sc->re_rx_cstag = 0; + } + + if ((mask & IFCAP_TSO4) != 0 && + (ifp->if_capabilities & IFCAP_TSO4) != 0) { + ifp->if_capenable ^= IFCAP_TSO4; + if ((IFCAP_TSO4 & ifp->if_capenable) != 0) + ifp->if_hwassist |= CSUM_IP_TSO; + else + ifp->if_hwassist &= ~CSUM_IP_TSO; + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~IFCAP_TSO4; + ifp->if_hwassist &= ~CSUM_IP_TSO; + } + } + /* + if ((mask & IFCAP_TSO6) != 0 && + (ifp->if_capabilities & IFCAP_TSO6) != 0) { + ifp->if_capenable ^= IFCAP_TSO6; + if ((IFCAP_TSO6 & ifp->if_capenable) != 0) + ifp->if_hwassist |= CSUM_IP6_TSO; + else + ifp->if_hwassist &= ~CSUM_IP6_TSO; + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~IFCAP_TSO6; + ifp->if_hwassist &= ~CSUM_IP6_TSO; + } + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~IFCAP_TSO6; + ifp->if_hwassist &= ~CSUM_IP6_TSO; + } + } + */ + if ((mask & IFCAP_VLAN_HWTSO) != 0 && + (ifp->if_capabilities & IFCAP_VLAN_HWTSO) != 0) + ifp->if_capenable ^= IFCAP_VLAN_HWTSO; + if ((mask & IFCAP_VLAN_HWTAGGING) != 0 && + (ifp->if_capabilities & IFCAP_VLAN_HWTAGGING) != 0) { + ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING; + /* TSO over VLAN requires VLAN hardware tagging. */ + //if ((ifp->if_capenable & IFCAP_VLAN_HWTAGGING) == 0) + // ifp->if_capenable &= ~IFCAP_VLAN_HWTSO; + reinit = 1; + } + if (mask & IFCAP_LRO) + ifp->if_capenable ^= IFCAP_LRO; + + if ((mask & IFCAP_WOL) != 0 && + (ifp->if_capabilities & IFCAP_WOL) != 0) { + if ((mask & IFCAP_WOL_UCAST) != 0) + ifp->if_capenable ^= IFCAP_WOL_UCAST; + if ((mask & IFCAP_WOL_MCAST) != 0) + ifp->if_capenable ^= IFCAP_WOL_MCAST; + if ((mask & IFCAP_WOL_MAGIC) != 0) + ifp->if_capenable ^= IFCAP_WOL_MAGIC; + } + if (reinit && ifp->if_drv_flags & IFF_DRV_RUNNING) { + ifp->if_drv_flags &= ~IFF_DRV_RUNNING; + re_init(sc); + } + VLAN_CAPABILITIES(ifp); + break; + default: + error = EINVAL; + break; + } + + /*(void)splx(s);*/ + + return(error); +} + +static void re_link_on_patch(struct re_softc *sc) +{ + struct ifnet *ifp; + + ifp = RE_GET_IFNET(sc); + + if (sc->re_type == MACFG_50 || sc->re_type == MACFG_51 || sc->re_type == MACFG_52) { + if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_1000MF) { + re_eri_write(sc, 0x1bc, 4, 0x00000011, ERIAR_ExGMAC); + re_eri_write(sc, 0x1dc, 4, 0x0000001f, ERIAR_ExGMAC); + } else if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_100M) { + re_eri_write(sc, 0x1bc, 4, 0x0000001f, ERIAR_ExGMAC); + re_eri_write(sc, 0x1dc, 4, 0x0000001f, ERIAR_ExGMAC); + } else { + re_eri_write(sc, 0x1bc, 4, 0x0000001f, ERIAR_ExGMAC); + re_eri_write(sc, 0x1dc, 4, 0x0000002d, ERIAR_ExGMAC); + } + } else if ((sc->re_type == MACFG_38 || sc->re_type == MACFG_39) && (ifp->if_flags & IFF_UP)) { + if (sc->re_type == MACFG_38 && (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_10M)) { + CSR_WRITE_4(sc, RE_RXCFG, CSR_READ_4(sc, RE_RXCFG) | RE_RXCFG_RX_ALLPHYS); + } else if (sc->re_type == MACFG_39) { + if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_1000MF) { + re_eri_write(sc, 0x1bc, 4, 0x00000011, ERIAR_ExGMAC); + re_eri_write(sc, 0x1dc, 4, 0x00000005, ERIAR_ExGMAC); + } else if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_100M) { + re_eri_write(sc, 0x1bc, 4, 0x0000001f, ERIAR_ExGMAC); + re_eri_write(sc, 0x1dc, 4, 0x00000005, ERIAR_ExGMAC); + } else { + re_eri_write(sc, 0x1bc, 4, 0x0000001f, ERIAR_ExGMAC); + re_eri_write(sc, 0x1dc, 4, 0x0000003f, ERIAR_ExGMAC); + } + } + } else if ((sc->re_type == MACFG_36 || sc->re_type == MACFG_37) && eee_enable == 1) { + /*Full -Duplex mode*/ + if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_FULL_DUP) { + re_mdio_write(sc, 0x1F, 0x0006); + re_mdio_write(sc, 0x00, 0x5a30); + re_mdio_write(sc, 0x1F, 0x0000); + if (CSR_READ_1(sc, RE_PHY_STATUS) & (RL_PHY_STATUS_10M | RL_PHY_STATUS_100M)) + CSR_WRITE_4(sc, RE_TXCFG, (CSR_READ_4(sc, RE_TXCFG) & ~BIT_19) | BIT_25); + + } else { + re_mdio_write(sc, 0x1F, 0x0006); + re_mdio_write(sc, 0x00, 0x5a00); + re_mdio_write(sc, 0x1F, 0x0000); + if (CSR_READ_1(sc, RE_PHY_STATUS) & (RL_PHY_STATUS_10M | RL_PHY_STATUS_100M)) + CSR_WRITE_4(sc, RE_TXCFG, (CSR_READ_4(sc, RE_TXCFG) & ~BIT_19) | RE_TXCFG_IFG); + } + } else if ((sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || + sc->re_type == MACFG_58 || sc->re_type == MACFG_59 || + sc->re_type == MACFG_60 || sc->re_type == MACFG_61 || + sc->re_type == MACFG_62 || sc->re_type == MACFG_67 || + sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || + sc->re_type == MACFG_72 || sc->re_type == MACFG_73 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || + sc->re_type == MACFG_76 || sc->re_type == MACFG_80 || + sc->re_type == MACFG_81 || sc->re_type == MACFG_82 || + sc->re_type == MACFG_83 || sc->re_type == MACFG_84 || + sc->re_type == MACFG_85 || sc->re_type == MACFG_86 || + sc->re_type == MACFG_87 || sc->re_type == MACFG_90 || + sc->re_type == MACFG_91 || sc->re_type == MACFG_92) && + (ifp->if_flags & IFF_UP)) { + if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_FULL_DUP) + CSR_WRITE_4(sc, RE_TXCFG, (CSR_READ_4(sc, RE_TXCFG) | (BIT_24 | BIT_25)) & ~BIT_19); + else + CSR_WRITE_4(sc, RE_TXCFG, (CSR_READ_4(sc, RE_TXCFG) | BIT_25) & ~(BIT_19 | BIT_24)); + } + + if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || + sc->re_type == MACFG_61 || sc->re_type == MACFG_62) { + /*half mode*/ + if (!(CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_FULL_DUP)) { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, MII_ANAR, re_mdio_read(sc, MII_ANAR)&~(ANAR_FC |ANAR_PAUSE_ASYM)); + } + } + + if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_10M) { + if (sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || + sc->re_type == MACFG_72 || sc->re_type == MACFG_73) { + uint32_t Data32; + + Data32 = re_eri_read(sc, 0x1D0, 1, ERIAR_ExGMAC); + Data32 |= BIT_1; + re_eri_write(sc, 0x1D0, 1, Data32, ERIAR_ExGMAC); + } else if (sc->re_type == MACFG_80 || sc->re_type == MACFG_81 || + sc->re_type == MACFG_82 || sc->re_type == MACFG_83 || + sc->re_type == MACFG_84 || sc->re_type == MACFG_85 || + sc->re_type == MACFG_90 || sc->re_type == MACFG_91 || + sc->re_type == MACFG_92) { + re_mac_ocp_write(sc, 0xE080, re_mac_ocp_read(sc, 0xE080)|BIT_1); + } + } + + if (sc->RequiredPfmPatch) + re_set_pfm_patch(sc, (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_10M) ? 1 : 0); + + re_init_unlock(sc); +} + +static void re_link_down_patch(struct re_softc *sc) +{ + if (sc->RequiredPfmPatch) + re_set_pfm_patch(sc, 1); + + re_txeof(sc); + re_rxeof(sc); + re_stop(sc); +} + +/* + * Check Link Status. + */ +static void re_check_link_status(struct re_softc *sc) +{ + u_int8_t link_state; + struct ifnet *ifp; + + ifp = RE_GET_IFNET(sc); + + if (re_link_ok(sc)) { + link_state = LINK_STATE_UP; + } else { + link_state = LINK_STATE_DOWN; + } + + if (link_state != sc->link_state) { + sc->link_state = link_state; + if (link_state == LINK_STATE_UP) { + re_link_on_patch(sc); + re_link_state_change(ifp, LINK_STATE_UP); + } else { + re_link_state_change(ifp, LINK_STATE_DOWN); + re_link_down_patch(sc); + } + } +} + +static void re_init_timer(struct re_softc *sc) +{ +#ifdef RE_USE_NEW_CALLOUT_FUN + callout_init(&sc->re_stat_ch, CALLOUT_MPSAFE); +#else + callout_handle_init(&sc->re_stat_ch); +#endif +} + +static void re_stop_timer(struct re_softc *sc) +{ +#ifdef RE_USE_NEW_CALLOUT_FUN + callout_stop(&sc->re_stat_ch); +#else + untimeout(re_tick, sc, sc->re_stat_ch); +#endif +} + +static void re_start_timer(struct re_softc *sc) +{ +#ifdef RE_USE_NEW_CALLOUT_FUN + callout_reset(&sc->re_stat_ch, hz, re_tick, sc); +#else + re_stop_timer(sc); + sc->re_stat_ch = timeout(re_tick, sc, hz); +#endif +} + +static void re_tick(void *xsc) +{ + /*called per second*/ + struct re_softc *sc; + int s; + + s = splimp(); + + sc = xsc; + /*mii = device_get_softc(sc->re_miibus); + + mii_tick(mii);*/ + + splx(s); + + RE_LOCK(sc); + + if (sc->re_link_chg_det == 1) { + re_check_link_status(sc); + re_start_timer(sc); + } + + RE_UNLOCK(sc); + + return; +} + +#if OS_VER < VERSION(7,0) +static void re_watchdog(ifp) +struct ifnet *ifp; +{ + struct re_softc *sc; + + sc = ifp->if_softc; + + printf("re%d: watchdog timeout\n", sc->re_unit); +#if OS_VER < VERSION(11,0) + ifp->if_oerrors++; +#else + if_inc_counter(ifp, IFCOUNTER_OERRORS, 1); +#endif + + re_txeof(sc); + re_rxeof(sc); + re_init(sc); + + return; +} +#endif + +/* + * Set media options. + */ +static int re_ifmedia_upd(struct ifnet *ifp) +{ + struct re_softc *sc = ifp->if_softc; + struct ifmedia *ifm = &sc->media; + int anar; + int gbcr; + + if (IFM_TYPE(ifm->ifm_media) != IFM_ETHER) + return(EINVAL); + + if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || + sc->re_type == MACFG_72 || sc->re_type == MACFG_73 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75) { + //Disable Giga Lite + re_mdio_write(sc, 0x1F, 0x0A42); + re_clear_eth_phy_bit(sc, 0x14, BIT_9); + if (sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || + sc->re_type == MACFG_72 || sc->re_type == MACFG_73) + re_clear_eth_phy_bit(sc, 0x14, BIT_7); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + } + + + switch (IFM_SUBTYPE(ifm->ifm_media)) { + case IFM_AUTO: + anar = ANAR_TX_FD | + ANAR_TX | + ANAR_10_FD | + ANAR_10; + gbcr = GTCR_ADV_1000TFDX | + GTCR_ADV_1000THDX; + break; + case IFM_1000_SX: +#if OS_VER < 500000 + case IFM_1000_TX: +#else + case IFM_1000_T: +#endif + anar = ANAR_TX_FD | + ANAR_TX | + ANAR_10_FD | + ANAR_10; + gbcr = GTCR_ADV_1000TFDX | + GTCR_ADV_1000THDX; + break; + case IFM_100_TX: + gbcr = re_mdio_read(sc, MII_100T2CR) & + ~(GTCR_ADV_1000TFDX | GTCR_ADV_1000THDX); + if ((ifm->ifm_media & IFM_GMASK) == IFM_FDX) { + anar = ANAR_TX_FD | + ANAR_TX | + ANAR_10_FD | + ANAR_10; + } else { + anar = ANAR_TX | + ANAR_10_FD | + ANAR_10; + } + break; + case IFM_10_T: + gbcr = re_mdio_read(sc, MII_100T2CR) & + ~(GTCR_ADV_1000TFDX | GTCR_ADV_1000THDX); + if ((ifm->ifm_media & IFM_GMASK) == IFM_FDX) { + anar = ANAR_10_FD | + ANAR_10; + } else { + anar = ANAR_10; + } + + if (sc->re_type == MACFG_13) { + re_mdio_write(sc, MII_BMCR, 0x8000); + } + + break; + default: + printf("re%d: Unsupported media type\n", sc->re_unit); + return(0); + } + + if (sc->re_device_id==RT_DEVICEID_8162) + re_clear_eth_ocp_phy_bit(sc, 0xA5D4, RTK_ADVERTISE_2500FULL); + + re_mdio_write(sc, 0x1F, 0x0000); + if (sc->re_device_id==RT_DEVICEID_8169 || sc->re_device_id==RT_DEVICEID_8169SC || + sc->re_device_id==RT_DEVICEID_8168 || sc->re_device_id==RT_DEVICEID_8161 || + sc->re_device_id==RT_DEVICEID_8162) { + re_mdio_write(sc, MII_ANAR, anar | ANAR_FC | ANAR_PAUSE_ASYM); + re_mdio_write(sc, MII_100T2CR, gbcr); + re_mdio_write(sc, MII_BMCR, BMCR_RESET | BMCR_AUTOEN | BMCR_STARTNEG); + } else if (sc->re_type == MACFG_36) { + re_mdio_write(sc, MII_ANAR, anar | ANAR_FC | ANAR_PAUSE_ASYM); + re_mdio_write(sc, MII_BMCR, BMCR_RESET | BMCR_AUTOEN | BMCR_STARTNEG); + } else { + re_mdio_write(sc, MII_ANAR, anar | 1); + re_mdio_write(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); + } + + return(0); +} + +static int re_ifmedia_upd_8125(struct ifnet *ifp) +{ + struct re_softc *sc = ifp->if_softc; + struct ifmedia *ifm = &sc->media; + int anar; + int gbcr; + int cr2500; + + if (IFM_TYPE(ifm->ifm_media) != IFM_ETHER) + return(EINVAL); + + //Disable Giga Lite + re_clear_eth_ocp_phy_bit(sc, 0xA428, BIT_9); + re_clear_eth_ocp_phy_bit(sc, 0xA5EA, BIT_0); + if (sc->re_device_id == RT_DEVICEID_8126) + re_clear_eth_ocp_phy_bit(sc, 0xB5EA, BIT_1); + + cr2500 = re_real_ocp_phy_read(sc, 0xA5D4) & + ~(RTK_ADVERTISE_2500FULL | RTK_ADVERTISE_5000FULL); + gbcr = re_mdio_read(sc, MII_100T2CR) & + ~(GTCR_ADV_1000TFDX | GTCR_ADV_1000THDX); + anar = re_mdio_read(sc, MII_ANAR) & + ~(ANAR_10 | ANAR_10_FD | ANAR_TX | ANAR_TX_FD | ANAR_FC | ANAR_PAUSE_ASYM); + + switch (IFM_SUBTYPE(ifm->ifm_media)) { + case IFM_AUTO: + case IFM_5000_T: + if (sc->re_device_id == RT_DEVICEID_8126) + cr2500 |= RTK_ADVERTISE_5000FULL; + /* FALLTHROUGH */ + case IFM_2500_SX: + case IFM_2500_X: + case IFM_2500_T: + cr2500 |= RTK_ADVERTISE_2500FULL; + /* FALLTHROUGH */ + case MACFG_80: + case IFM_1000_SX: +#if OS_VER < 500000 + case IFM_1000_TX: +#else + case IFM_1000_T: +#endif + gbcr |= GTCR_ADV_1000TFDX; + anar |= ANAR_TX_FD; + /* FALLTHROUGH */ + case IFM_100_TX: + anar |= ANAR_TX | ANAR_10_FD; + if ((ifm->ifm_media & IFM_GMASK) == IFM_FDX) + anar |= ANAR_TX_FD; + /* FALLTHROUGH */ + case IFM_10_T: + anar |= ANAR_10; + if ((ifm->ifm_media & IFM_GMASK) == IFM_FDX) + anar |= ANAR_10_FD; + + if (sc->re_type == MACFG_13) { + re_mdio_write(sc, MII_BMCR, 0x8000); + } + break; + default: + printf("re%d: Unsupported media type\n", sc->re_unit); + return(0); + } + + re_mdio_write(sc, 0x1F, 0x0000); + re_real_ocp_phy_write(sc, 0xA5D4, cr2500); + re_mdio_write(sc, MII_ANAR, anar | ANAR_FC | ANAR_PAUSE_ASYM); + re_mdio_write(sc, MII_100T2CR, gbcr); + re_mdio_write(sc, MII_BMCR, BMCR_RESET | BMCR_AUTOEN | BMCR_STARTNEG); + + return(0); +} + +/* + * Report current media status. + */ +static void re_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr) +{ + struct re_softc *sc; + + sc = ifp->if_softc; + + RE_LOCK(sc); + + ifmr->ifm_status = IFM_AVALID; + ifmr->ifm_active = IFM_ETHER; + + if (re_link_ok(sc)) { + unsigned char msr; + + ifmr->ifm_status |= IFM_ACTIVE; + + msr = CSR_READ_1(sc, RE_PHY_STATUS); + if (msr & RL_PHY_STATUS_FULL_DUP) + ifmr->ifm_active |= IFM_FDX; + else + ifmr->ifm_active |= IFM_HDX; + + if (msr & RL_PHY_STATUS_10M) + ifmr->ifm_active |= IFM_10_T; + else if (msr & RL_PHY_STATUS_100M) + ifmr->ifm_active |= IFM_100_TX; + else if (msr & RL_PHY_STATUS_1000MF) + ifmr->ifm_active |= IFM_1000_T; + } + + RE_UNLOCK(sc); + + return; +} + +static void re_ifmedia_sts_8125(struct ifnet *ifp, struct ifmediareq *ifmr) +{ + struct re_softc *sc; + + sc = ifp->if_softc; + + RE_LOCK(sc); + + ifmr->ifm_status = IFM_AVALID; + ifmr->ifm_active = IFM_ETHER; + + if (re_link_ok(sc)) { + u_int32_t msr; + + ifmr->ifm_status |= IFM_ACTIVE; + + msr = CSR_READ_4(sc, RE_PHY_STATUS); + + if (msr & RL_PHY_STATUS_FULL_DUP) + ifmr->ifm_active |= IFM_FDX; + else + ifmr->ifm_active |= IFM_HDX; + + if (msr & RL_PHY_STATUS_10M) + ifmr->ifm_active |= IFM_10_T; + else if (msr & RL_PHY_STATUS_100M) + ifmr->ifm_active |= IFM_100_TX; + else if (msr & RL_PHY_STATUS_1000MF) + ifmr->ifm_active |= IFM_1000_T; + else if (msr & RL_PHY_STATUS_500MF) + ifmr->ifm_active |= IFM_1000_T; + else if (msr & RL_PHY_STATUS_1250MF) + ifmr->ifm_active |= IFM_1000_T; + else if (msr & RL_PHY_STATUS_2500MF) + ifmr->ifm_active |= IFM_2500_T; + else if (msr & RL_PHY_STATUS_5000MF_LITE) + ifmr->ifm_active |= IFM_2500_T; + else if (msr & RL_PHY_STATUS_5000MF) + ifmr->ifm_active |= IFM_5000_T; + } + + RE_UNLOCK(sc); + + return; +} + +static bool re_is_advanced_eee_enabled(struct re_softc *sc) +{ + switch (sc->re_type) { + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + if (re_real_ocp_phy_read(sc, 0xA430) & BIT_15) + return true; + break; + default: + break; + } + + return false; +} + +static void _re_disable_advanced_eee(struct re_softc *sc) +{ + u_int16_t data; + bool lock; + + if (re_is_advanced_eee_enabled(sc)) + lock = true; + else + lock = false; + + if (lock) + re_set_phy_mcu_patch_request(sc); + + switch (sc->re_type) { + case MACFG_59: + re_eri_write(sc, 0x1EA, 1, 0x00, ERIAR_ExGMAC); + + re_mdio_write(sc, 0x1F, 0x0A42); + data = re_mdio_read(sc, 0x16); + data &= ~(BIT_1); + re_mdio_write(sc, 0x16, data); + re_mdio_write(sc, 0x1F, 0x0000); + break; + case MACFG_60: + data = re_mac_ocp_read(sc, 0xE052); + data &= ~(BIT_0); + re_mac_ocp_write(sc, 0xE052, data); + + re_mdio_write(sc, 0x1F, 0x0A42); + data = re_mdio_read(sc, 0x16); + data &= ~(BIT_1); + re_mdio_write(sc, 0x16, data); + re_mdio_write(sc, 0x1F, 0x0000); + break; + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + data = re_mac_ocp_read(sc, 0xE052); + data &= ~(BIT_0); + re_mac_ocp_write(sc, 0xE052, data); + break; + case MACFG_68: + case MACFG_69: + case MACFG_74: + case MACFG_75: + data = re_mac_ocp_read(sc, 0xE052); + data &= ~(BIT_0); + re_mac_ocp_write(sc, 0xE052, data); + + re_mdio_write(sc, 0x1F, 0x0A43); + data = re_mdio_read(sc, 0x10) & ~(BIT_15); + re_mdio_write(sc, 0x10, data); + + re_mdio_write(sc, 0x1F, 0x0A44); + data = re_mdio_read(sc, 0x11) & ~(BIT_12 | BIT_13 | BIT_14); + re_mdio_write(sc, 0x11, data); + re_mdio_write(sc, 0x1f, 0x0000); + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_clear_mac_ocp_bit(sc, 0xE052, BIT_0); + re_clear_eth_ocp_phy_bit(sc, 0xA442, BIT_12 | BIT_13); + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_15); + break; + } + + if (lock) + re_clear_phy_mcu_patch_request(sc); +} + +static void re_disable_advanced_eee(struct re_softc *sc) +{ + if (sc->HwSuppDashVer > 1) + OOB_mutex_lock(sc); + + _re_disable_advanced_eee(sc); + + if (sc->HwSuppDashVer > 1) + OOB_mutex_unlock(sc); +} + +static int re_enable_eee(struct re_softc *sc) +{ + int ret; + u_int16_t data; + + ret = 0; + switch (sc->re_type) { + case MACFG_42: + case MACFG_43: + re_eri_write(sc, 0x1B0, 2, 0xED03, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0004); + if (CSR_READ_1(sc, 0xEF) & 0x02) { + re_mdio_write(sc, 0x10, 0x731F); + re_mdio_write(sc, 0x19, 0x7630); + } else { + re_mdio_write(sc, 0x10, 0x711F); + re_mdio_write(sc, 0x19, 0x7030); + } + re_mdio_write(sc, 0x1A, 0x1506); + re_mdio_write(sc, 0x1B, 0x0551); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0002); + re_mdio_write(sc, 0x0D, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0003); + re_mdio_write(sc, 0x0E, 0x0015); + re_mdio_write(sc, 0x0D, 0x4003); + re_mdio_write(sc, 0x0E, 0x0002); + re_mdio_write(sc, 0x0D, 0x0000); + + re_mdio_write(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); + break; + + case MACFG_53: + case MACFG_54: + case MACFG_55: + re_eri_write(sc, 0x1B0, 2, 0xED03, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x10, 0x731F); + re_mdio_write(sc, 0x19, 0x7630); + re_mdio_write(sc, 0x1A, 0x1506); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0002); + re_mdio_write(sc, 0x0D, 0x0000); + + re_mdio_write(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); + break; + + case MACFG_36: + case MACFG_37: + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0020); + data = re_mdio_read(sc, 0x15) | 0x0100; + re_mdio_write(sc, 0x15, data); + re_mdio_write(sc, 0x1F, 0x0006); + re_mdio_write(sc, 0x00, 0x5A30); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0006); + re_mdio_write(sc, 0x0D, 0x0000); + if ((CSR_READ_1(sc, RE_CFG4)&RL_CFG4_CUSTOMIZED_LED) && (CSR_READ_1(sc, RE_MACDBG) & BIT_7)) { + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8AC8); + re_mdio_write(sc, 0x06, CSR_READ_1(sc, RE_CUSTOM_LED)); + re_mdio_write(sc, 0x05, 0x8B82); + data = re_mdio_read(sc, 0x06) | 0x0010; + re_mdio_write(sc, 0x05, 0x8B82); + re_mdio_write(sc, 0x06, data); + re_mdio_write(sc, 0x1F, 0x0000); + } + break; + + case MACFG_50: + case MACFG_51: + case MACFG_52: + data = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC) | 0x0003; + re_eri_write(sc, 0x1B0, 4, data, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0020); + data = re_mdio_read(sc, 0x15)|0x0100; + re_mdio_write(sc, 0x15, data); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + data = re_mdio_read(sc, 0x06)|0x2000; + re_mdio_write(sc, 0x06, data); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0006); + re_mdio_write(sc, 0x1D, 0x0000); + break; + + case MACFG_38: + case MACFG_39: + data = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + data |= BIT_1 | BIT_0; + re_eri_write(sc, 0x1B0, 4, data, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1e, 0x0020); + data = re_mdio_read(sc, 0x15); + data |= BIT_8; + re_mdio_write(sc, 0x15, data); + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + data = re_mdio_read(sc, 0x06); + data |= BIT_13; + re_mdio_write(sc, 0x06, data); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0006); + re_mdio_write(sc, 0x0D, 0x0000); + break; + + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + data = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + data |= BIT_1 | BIT_0; + re_eri_write(sc, 0x1B0, 4, data, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0A43); + data = re_mdio_read(sc, 0x11); + re_mdio_write(sc, 0x11, data | BIT_4); + re_mdio_write(sc, 0x1F, 0x0A5D); + re_mdio_write(sc, 0x10, 0x0006); + re_mdio_write(sc, 0x1F, 0x0000); + break; + + case MACFG_80: + case MACFG_81: + re_set_mac_ocp_bit(sc, 0xE040, (BIT_1|BIT_0)); + re_set_mac_ocp_bit(sc, 0xEB62, (BIT_2|BIT_1)); + + re_set_eth_ocp_phy_bit(sc, 0xA432, BIT_4); + re_set_eth_ocp_phy_bit(sc, 0xA5D0, (BIT_2 | BIT_1)); + re_clear_eth_ocp_phy_bit(sc, 0xA6D4, BIT_0); + + re_clear_eth_ocp_phy_bit(sc, 0xA6D8, BIT_4); + re_clear_eth_ocp_phy_bit(sc, 0xA428, BIT_7); + re_clear_eth_ocp_phy_bit(sc, 0xA4A2, BIT_9); + break; + + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + re_set_mac_ocp_bit(sc, 0xE040, (BIT_1|BIT_0)); + + re_set_eth_ocp_phy_bit(sc, 0xA432, BIT_4); + + re_set_eth_ocp_phy_bit(sc, 0xA5D0, (BIT_2 | BIT_1)); + re_clear_eth_ocp_phy_bit(sc, 0xA6D4, BIT_0); + + re_clear_eth_ocp_phy_bit(sc, 0xA6D8, BIT_4); + re_clear_eth_ocp_phy_bit(sc, 0xA428, BIT_7); + re_clear_eth_ocp_phy_bit(sc, 0xA4A2, BIT_9); + break; + + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_set_mac_ocp_bit(sc, 0xE040, (BIT_1|BIT_0)); + + re_set_eth_ocp_phy_bit(sc, 0xA5D0, (BIT_2 | BIT_1)); + re_clear_eth_ocp_phy_bit(sc, 0xA6D4, (BIT_1|BIT_0)); + + re_clear_eth_ocp_phy_bit(sc, 0xA428, BIT_7); + re_clear_eth_ocp_phy_bit(sc, 0xA4A2, BIT_9); + break; + + default: + ret = -EOPNOTSUPP; + break; + } + + switch (sc->re_type) { + case MACFG_68: + case MACFG_69: + case MACFG_74: + case MACFG_75: + re_mdio_write(sc, 0x1F, 0x0A4A); + re_set_eth_phy_bit(sc, 0x11, BIT_9); + re_mdio_write(sc, 0x1F, 0x0A42); + re_set_eth_phy_bit(sc, 0x14, BIT_7); + re_mdio_write(sc, 0x1F, 0x0000); + break; + } + + /*Advanced EEE*/ + re_disable_advanced_eee(sc); + + return ret; +} + +static int re_disable_eee(struct re_softc *sc) +{ + int ret; + u_int16_t data; + + ret = 0; + switch (sc->re_type) { + case MACFG_42: + case MACFG_43: + re_eri_write(sc, 0x1B0, 2, 0, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x10, 0x401F); + re_mdio_write(sc, 0x19, 0x7030); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0003); + re_mdio_write(sc, 0x0E, 0x0015); + re_mdio_write(sc, 0x0D, 0x4003); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + + re_mdio_write(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); + break; + + case MACFG_53: + re_eri_write(sc, 0x1B0, 2, 0, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x10, 0x401F); + re_mdio_write(sc, 0x19, 0x7030); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + + re_mdio_write(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); + break; + + case MACFG_54: + case MACFG_55: + re_eri_write(sc, 0x1B0, 2, 0, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x10, 0xC07F); + re_mdio_write(sc, 0x19, 0x7030); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + + re_mdio_write(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); + break; + + case MACFG_36: + case MACFG_37: + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0020); + data = re_mdio_read(sc, 0x15) & ~0x0100; + re_mdio_write(sc, 0x15, data); + re_mdio_write(sc, 0x1F, 0x0006); + re_mdio_write(sc, 0x00, 0x5A00); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + if (CSR_READ_1(sc, RE_CFG4) & RL_CFG4_CUSTOMIZED_LED) { + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B82); + data = re_mdio_read(sc, 0x06) & ~0x0010; + re_mdio_write(sc, 0x05, 0x8B82); + re_mdio_write(sc, 0x06, data); + re_mdio_write(sc, 0x1F, 0x0000); + } + break; + + case MACFG_50: + case MACFG_51: + case MACFG_52: + data = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC)& ~0x0003; + re_eri_write(sc, 0x1B0, 4, data, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + data = re_mdio_read(sc, 0x06) & ~0x2000; + re_mdio_write(sc, 0x06, data); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0020); + data = re_mdio_read(sc, 0x15) & ~0x0100; + re_mdio_write(sc, 0x15, data); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + break; + + case MACFG_38: + case MACFG_39: + data = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + data &= ~(BIT_1 | BIT_0); + re_eri_write(sc, 0x1B0, 4, data, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + data = re_mdio_read(sc, 0x06); + data &= ~BIT_13; + re_mdio_write(sc, 0x06, data); + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1e, 0x0020); + data = re_mdio_read(sc, 0x15); + data &= ~BIT_8; + re_mdio_write(sc, 0x15, data); + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + break; + + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + data = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + data &= ~(BIT_1 | BIT_0); + re_eri_write(sc, 0x1B0, 4, data, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0A43); + data = re_mdio_read(sc, 0x11); + if (sc->re_type == MACFG_75) + re_mdio_write(sc, 0x11, data | BIT_4); + else + re_mdio_write(sc, 0x11, data & ~BIT_4); + re_mdio_write(sc, 0x1F, 0x0A5D); + re_mdio_write(sc, 0x10, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + break; + + case MACFG_80: + case MACFG_81: + re_clear_mac_ocp_bit(sc, 0xE040, (BIT_1|BIT_0)); + re_clear_mac_ocp_bit(sc, 0xEB62, (BIT_2|BIT_1)); + + re_clear_eth_ocp_phy_bit(sc, 0xA432, BIT_4); + re_clear_eth_ocp_phy_bit(sc, 0xA5D0, (BIT_2 | BIT_1)); + re_clear_eth_ocp_phy_bit(sc, 0xA6D4, BIT_0); + + re_clear_eth_ocp_phy_bit(sc, 0xA6D8, BIT_4); + re_clear_eth_ocp_phy_bit(sc, 0xA428, BIT_7); + re_clear_eth_ocp_phy_bit(sc, 0xA4A2, BIT_9); + break; + + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + re_clear_mac_ocp_bit(sc, 0xE040, (BIT_1|BIT_0)); + + re_set_eth_ocp_phy_bit(sc, 0xA432, BIT_4); + + re_clear_eth_ocp_phy_bit(sc, 0xA5D0, (BIT_2 | BIT_1)); + re_clear_eth_ocp_phy_bit(sc, 0xA6D4, BIT_0); + + re_clear_eth_ocp_phy_bit(sc, 0xA6D8, BIT_4); + re_clear_eth_ocp_phy_bit(sc, 0xA428, BIT_7); + re_clear_eth_ocp_phy_bit(sc, 0xA4A2, BIT_9); + break; + + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_clear_mac_ocp_bit(sc, 0xE040, (BIT_1|BIT_0)); + + re_clear_eth_ocp_phy_bit(sc, 0xA5D0, (BIT_2 | BIT_1)); + re_clear_eth_ocp_phy_bit(sc, 0xA6D4, (BIT_0 | BIT_1)); + + re_clear_eth_ocp_phy_bit(sc, 0xA428, BIT_7); + re_clear_eth_ocp_phy_bit(sc, 0xA4A2, BIT_9); + break; + + default: + ret = -EOPNOTSUPP; + break; + } + + switch (sc->re_type) { + case MACFG_68: + case MACFG_69: + case MACFG_74: + case MACFG_75: + re_mdio_write(sc, 0x1F, 0x0A42); + re_clear_eth_phy_bit(sc, 0x14, BIT_7); + re_mdio_write(sc, 0x1F, 0x0A4A); + re_clear_eth_phy_bit(sc, 0x11, BIT_9); + re_mdio_write(sc, 0x1F, 0x0000); + break; + } + + /*Advanced EEE*/ + re_disable_advanced_eee(sc); + + return ret; +} + +static int re_phy_ram_code_check(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + int retval = TRUE; + + switch(sc->re_type) { + case MACFG_56: + re_mdio_write(sc, 0x1f, 0x0A40); + PhyRegValue = re_mdio_read(sc, 0x10); + PhyRegValue &= ~(BIT_11); + re_mdio_write(sc, 0x10, PhyRegValue); + + + re_mdio_write(sc, 0x1f, 0x0A00); + PhyRegValue = re_mdio_read(sc, 0x10); + PhyRegValue &= ~(BIT_12 | BIT_13 | BIT_14 | BIT_15); + re_mdio_write(sc, 0x10, PhyRegValue); + + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8010); + PhyRegValue = re_mdio_read(sc, 0x14); + PhyRegValue &= ~(BIT_11); + re_mdio_write(sc, 0x14, PhyRegValue); + + re_set_phy_mcu_patch_request(sc); + + re_mdio_write(sc, 0x1f, 0x0A40); + re_mdio_write(sc, 0x10, 0x0140); + + re_mdio_write(sc, 0x1f, 0x0A4A); + PhyRegValue = re_mdio_read(sc, 0x13); + PhyRegValue &= ~(BIT_6); + PhyRegValue |= (BIT_7); + re_mdio_write(sc, 0x13, PhyRegValue); + + re_mdio_write(sc, 0x1f, 0x0A44); + PhyRegValue = re_mdio_read(sc, 0x14); + PhyRegValue |= (BIT_2); + re_mdio_write(sc, 0x14, PhyRegValue); + + re_mdio_write(sc, 0x1f, 0x0A50); + PhyRegValue = re_mdio_read(sc, 0x11); + PhyRegValue |= (BIT_11|BIT_12); + re_mdio_write(sc, 0x11, PhyRegValue); + + re_clear_phy_mcu_patch_request(sc); + + re_mdio_write(sc, 0x1f, 0x0A40); + re_mdio_write(sc, 0x10, 0x1040); + + re_mdio_write(sc, 0x1f, 0x0A4A); + PhyRegValue = re_mdio_read(sc, 0x13); + PhyRegValue &= ~(BIT_6|BIT_7); + re_mdio_write(sc, 0x13, PhyRegValue); + + re_mdio_write(sc, 0x1f, 0x0A44); + PhyRegValue = re_mdio_read(sc, 0x14); + PhyRegValue &= ~(BIT_2); + re_mdio_write(sc, 0x14, PhyRegValue); + + re_mdio_write(sc, 0x1f, 0x0A50); + PhyRegValue = re_mdio_read(sc, 0x11); + PhyRegValue &= ~(BIT_11|BIT_12); + re_mdio_write(sc, 0x11, PhyRegValue); + + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8010); + PhyRegValue = re_mdio_read(sc, 0x14); + PhyRegValue |= (BIT_11); + re_mdio_write(sc, 0x14, PhyRegValue); + + re_set_phy_mcu_patch_request(sc); + + re_mdio_write(sc, 0x1f, 0x0A20); + PhyRegValue = re_mdio_read(sc, 0x13); + if (PhyRegValue & BIT_11) { + if (PhyRegValue & BIT_10) { + retval = FALSE; + } + } + + re_clear_phy_mcu_patch_request(sc); + + //delay 2ms + DELAY(2000); + break; + default: + break; + } + + re_mdio_write(sc, 0x1F, 0x0000); + + return retval; +} + +static void re_set_phy_ram_code_check_fail_flag(struct re_softc *sc) +{ + u_int16_t TmpUshort; + + switch(sc->re_type) { + case MACFG_56: + TmpUshort = re_mac_ocp_read(sc, 0xD3C0); + TmpUshort |= BIT_0; + re_mac_ocp_write(sc, 0xD3C0, TmpUshort); + break; + } +} + +static int re_hw_phy_mcu_code_ver_matched(struct re_softc *sc) +{ + int ram_code_ver_match = 0; + + switch (sc->re_type) { + case MACFG_36: + case MACFG_37: + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B60); + sc->re_hw_ram_code_ver = re_mdio_read(sc, 0x06); + re_mdio_write(sc, 0x1F, 0x0000); + break; + case MACFG_38: + case MACFG_39: + case MACFG_50: + case MACFG_51: + case MACFG_52: + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B30); + sc->re_hw_ram_code_ver = re_mdio_read(sc, 0x06); + re_mdio_write(sc, 0x1F, 0x0000); + break; + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x801E); + sc->re_hw_ram_code_ver = re_mdio_read(sc, 0x14); + re_mdio_write(sc, 0x1F, 0x0000); + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_real_ocp_phy_write(sc, 0xA436, 0x801E); + sc->re_hw_ram_code_ver = re_real_ocp_phy_read(sc, 0xA438); + break; + default: + sc->re_hw_ram_code_ver = ~0; + break; + } + + if (sc->re_hw_ram_code_ver == sc->re_sw_ram_code_ver) + ram_code_ver_match = 1; + + return ram_code_ver_match; +} + +static void re_write_hw_phy_mcu_code_ver(struct re_softc *sc) +{ + switch (sc->re_type) { + case MACFG_36: + case MACFG_37: + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B60); + re_mdio_write(sc, 0x06, sc->re_sw_ram_code_ver); + re_mdio_write(sc, 0x1F, 0x0000); + sc->re_hw_ram_code_ver = sc->re_sw_ram_code_ver; + break; + case MACFG_38: + case MACFG_39: + case MACFG_50: + case MACFG_51: + case MACFG_52: + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B30); + re_mdio_write(sc, 0x06, sc->re_sw_ram_code_ver); + re_mdio_write(sc, 0x1F, 0x0000); + sc->re_hw_ram_code_ver = sc->re_sw_ram_code_ver; + break; + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x801E); + re_mdio_write(sc, 0x14, sc->re_sw_ram_code_ver); + re_mdio_write(sc, 0x1F, 0x0000); + sc->re_hw_ram_code_ver = sc->re_sw_ram_code_ver; + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_real_ocp_phy_write(sc, 0xA436, 0x801E); + re_real_ocp_phy_write(sc, 0xA438, sc->re_sw_ram_code_ver); + sc->re_hw_ram_code_ver = sc->re_sw_ram_code_ver; + break; + } +} + +static void +re_acquire_phy_mcu_patch_key_lock(struct re_softc *sc) +{ + u_int16_t PatchKey; + + switch (sc->re_type) { + case MACFG_80: + PatchKey = 0x8600; + break; + case MACFG_81: + PatchKey = 0x8601; + break; + case MACFG_82: + PatchKey = 0x3700; + break; + case MACFG_83: + PatchKey = 0x3701; + break; + default: + return; + } + re_real_ocp_phy_write(sc, 0xA436, 0x8024); + re_real_ocp_phy_write(sc, 0xA438, PatchKey); + re_real_ocp_phy_write(sc, 0xA436, 0xB82E); + re_real_ocp_phy_write(sc, 0xA438, 0x0001); +} + +static void +re_release_phy_mcu_patch_key_lock(struct re_softc *sc) +{ + switch (sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + re_real_ocp_phy_write(sc, 0xA436, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_clear_eth_ocp_phy_bit(sc, 0xB82E, BIT_0); + re_real_ocp_phy_write(sc, 0xA436, 0x8024); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + break; + default: + break; + } +} + +bool +re_set_phy_mcu_patch_request(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + u_int16_t WaitCount = 0; + bool bSuccess = TRUE; + + switch (sc->re_type) { + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + re_mdio_write(sc, 0x1f, 0x0B82); + re_set_eth_phy_bit(sc, 0x10, BIT_4); + + re_mdio_write(sc, 0x1f, 0x0B80); + WaitCount = 0; + do { + PhyRegValue = re_mdio_read(sc, 0x10); + DELAY(50); + DELAY(50); + WaitCount++; + } while (!(PhyRegValue & BIT_6) && (WaitCount < 1000)); + + if (!(PhyRegValue & BIT_6) && (WaitCount == 1000)) bSuccess = FALSE; + + re_mdio_write(sc, 0x1f, 0x0000); + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_set_eth_ocp_phy_bit(sc, 0xB820, BIT_4); + + WaitCount = 0; + do { + PhyRegValue = re_real_ocp_phy_read(sc, 0xB800); + DELAY(50); + DELAY(50); + WaitCount++; + } while (!(PhyRegValue & BIT_6) && (WaitCount < 1000)); + + if (!(PhyRegValue & BIT_6) && (WaitCount == 1000)) bSuccess = FALSE; + + break; + } + + return bSuccess; +} + +bool +re_clear_phy_mcu_patch_request(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + u_int16_t WaitCount = 0; + bool bSuccess = TRUE; + + switch (sc->re_type) { + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + re_mdio_write(sc, 0x1f, 0x0B82); + re_clear_eth_phy_bit(sc, 0x10, BIT_4); + + re_mdio_write(sc, 0x1f, 0x0B80); + WaitCount = 0; + do { + PhyRegValue = re_mdio_read(sc, 0x10); + DELAY(50); + DELAY(50); + WaitCount++; + } while ((PhyRegValue & BIT_6) && (WaitCount < 1000)); + + if ((PhyRegValue & BIT_6) && (WaitCount == 1000)) bSuccess = FALSE; + + re_mdio_write(sc, 0x1f, 0x0000); + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_clear_eth_ocp_phy_bit(sc, 0xB820, BIT_4); + + WaitCount = 0; + do { + PhyRegValue = re_real_ocp_phy_read(sc, 0xB800); + DELAY(50); + DELAY(50); + WaitCount++; + } while ((PhyRegValue & BIT_6) && (WaitCount < 1000)); + + if ((PhyRegValue & BIT_6) && (WaitCount == 1000)) bSuccess = FALSE; + + break; + } + + return bSuccess; +} + +static void +re_set_phy_mcu_ram_code(struct re_softc *sc, const u_int16_t *ramcode, u_int16_t codesize) +{ + u_int16_t i; + u_int16_t addr; + u_int16_t val; + + if (ramcode == NULL || codesize % 2) { + goto out; + } + + for (i = 0; i < codesize; i += 2) { + addr = ramcode[i]; + val = ramcode[i + 1]; + if (addr == 0xFFFF && val == 0xFFFF) { + break; + } + re_real_ocp_phy_write(sc, addr, val); + } + +out: + return; +} + +static void re_set_phy_mcu_8168e_1(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + int i; + + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x17, 0x0117); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1E, 0x002C); + re_mdio_write(sc, 0x1B, 0x5000); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x16, 0x4104); + for (i=0; i<200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x1E); + PhyRegValue &= 0x03FF; + if (PhyRegValue== 0x000C) + break; + } + re_mdio_write(sc, 0x1f, 0x0005); + for (i=0; i<200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x07); + if ((PhyRegValue&0x0020)==0) + break; + } + PhyRegValue = re_mdio_read(sc, 0x07); + if (PhyRegValue & 0x0020) { + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x00a1); + re_mdio_write(sc, 0x17, 0x1000); + re_mdio_write(sc, 0x17, 0x0000); + re_mdio_write(sc, 0x17, 0x2000); + re_mdio_write(sc, 0x1e, 0x002f); + re_mdio_write(sc, 0x18, 0x9bfb); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x07, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + } + + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + PhyRegValue = re_mdio_read(sc, 0x00); + PhyRegValue &= ~(BIT_7); + re_mdio_write(sc, 0x00, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0002); + PhyRegValue = re_mdio_read(sc, 0x08); + PhyRegValue &= ~(BIT_7); + re_mdio_write(sc, 0x08, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0307); + re_mdio_write(sc, 0x15, 0x000e); + re_mdio_write(sc, 0x19, 0x000a); + re_mdio_write(sc, 0x15, 0x0010); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x0018); + re_mdio_write(sc, 0x19, 0x4801); + re_mdio_write(sc, 0x15, 0x0019); + re_mdio_write(sc, 0x19, 0x6801); + re_mdio_write(sc, 0x15, 0x001a); + re_mdio_write(sc, 0x19, 0x66a1); + re_mdio_write(sc, 0x15, 0x001f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0020); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0021); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0022); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0023); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0024); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0025); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x0026); + re_mdio_write(sc, 0x19, 0x40ea); + re_mdio_write(sc, 0x15, 0x0027); + re_mdio_write(sc, 0x19, 0x4503); + re_mdio_write(sc, 0x15, 0x0028); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0029); + re_mdio_write(sc, 0x19, 0xa631); + re_mdio_write(sc, 0x15, 0x002a); + re_mdio_write(sc, 0x19, 0x9717); + re_mdio_write(sc, 0x15, 0x002b); + re_mdio_write(sc, 0x19, 0x302c); + re_mdio_write(sc, 0x15, 0x002c); + re_mdio_write(sc, 0x19, 0x4802); + re_mdio_write(sc, 0x15, 0x002d); + re_mdio_write(sc, 0x19, 0x58da); + re_mdio_write(sc, 0x15, 0x002e); + re_mdio_write(sc, 0x19, 0x400d); + re_mdio_write(sc, 0x15, 0x002f); + re_mdio_write(sc, 0x19, 0x4488); + re_mdio_write(sc, 0x15, 0x0030); + re_mdio_write(sc, 0x19, 0x9e00); + re_mdio_write(sc, 0x15, 0x0031); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x0032); + re_mdio_write(sc, 0x19, 0x6481); + re_mdio_write(sc, 0x15, 0x0033); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0034); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0035); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0036); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0037); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0038); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0039); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x003a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x003b); + re_mdio_write(sc, 0x19, 0x63e8); + re_mdio_write(sc, 0x15, 0x003c); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x003d); + re_mdio_write(sc, 0x19, 0x59d4); + re_mdio_write(sc, 0x15, 0x003e); + re_mdio_write(sc, 0x19, 0x63f8); + re_mdio_write(sc, 0x15, 0x0040); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x0041); + re_mdio_write(sc, 0x19, 0x30de); + re_mdio_write(sc, 0x15, 0x0044); + re_mdio_write(sc, 0x19, 0x480f); + re_mdio_write(sc, 0x15, 0x0045); + re_mdio_write(sc, 0x19, 0x6800); + re_mdio_write(sc, 0x15, 0x0046); + re_mdio_write(sc, 0x19, 0x6680); + re_mdio_write(sc, 0x15, 0x0047); + re_mdio_write(sc, 0x19, 0x7c10); + re_mdio_write(sc, 0x15, 0x0048); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x0049); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004b); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004f); + re_mdio_write(sc, 0x19, 0x40ea); + re_mdio_write(sc, 0x15, 0x0050); + re_mdio_write(sc, 0x19, 0x4503); + re_mdio_write(sc, 0x15, 0x0051); + re_mdio_write(sc, 0x19, 0x58ca); + re_mdio_write(sc, 0x15, 0x0052); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x0053); + re_mdio_write(sc, 0x19, 0x63d8); + re_mdio_write(sc, 0x15, 0x0054); + re_mdio_write(sc, 0x19, 0x66a0); + re_mdio_write(sc, 0x15, 0x0055); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0056); + re_mdio_write(sc, 0x19, 0x3000); + re_mdio_write(sc, 0x15, 0x006E); + re_mdio_write(sc, 0x19, 0x9afa); + re_mdio_write(sc, 0x15, 0x00a1); + re_mdio_write(sc, 0x19, 0x3044); + re_mdio_write(sc, 0x15, 0x00ab); + re_mdio_write(sc, 0x19, 0x5820); + re_mdio_write(sc, 0x15, 0x00ac); + re_mdio_write(sc, 0x19, 0x5e04); + re_mdio_write(sc, 0x15, 0x00ad); + re_mdio_write(sc, 0x19, 0xb60c); + re_mdio_write(sc, 0x15, 0x00af); + re_mdio_write(sc, 0x19, 0x000a); + re_mdio_write(sc, 0x15, 0x00b2); + re_mdio_write(sc, 0x19, 0x30b9); + re_mdio_write(sc, 0x15, 0x00b9); + re_mdio_write(sc, 0x19, 0x4408); + re_mdio_write(sc, 0x15, 0x00ba); + re_mdio_write(sc, 0x19, 0x480b); + re_mdio_write(sc, 0x15, 0x00bb); + re_mdio_write(sc, 0x19, 0x5e00); + re_mdio_write(sc, 0x15, 0x00bc); + re_mdio_write(sc, 0x19, 0x405f); + re_mdio_write(sc, 0x15, 0x00bd); + re_mdio_write(sc, 0x19, 0x4448); + re_mdio_write(sc, 0x15, 0x00be); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x00bf); + re_mdio_write(sc, 0x19, 0x4468); + re_mdio_write(sc, 0x15, 0x00c0); + re_mdio_write(sc, 0x19, 0x9c02); + re_mdio_write(sc, 0x15, 0x00c1); + re_mdio_write(sc, 0x19, 0x58a0); + re_mdio_write(sc, 0x15, 0x00c2); + re_mdio_write(sc, 0x19, 0xb605); + re_mdio_write(sc, 0x15, 0x00c3); + re_mdio_write(sc, 0x19, 0xc0d3); + re_mdio_write(sc, 0x15, 0x00c4); + re_mdio_write(sc, 0x19, 0x00e6); + re_mdio_write(sc, 0x15, 0x00c5); + re_mdio_write(sc, 0x19, 0xdaec); + re_mdio_write(sc, 0x15, 0x00c6); + re_mdio_write(sc, 0x19, 0x00fa); + re_mdio_write(sc, 0x15, 0x00c7); + re_mdio_write(sc, 0x19, 0x9df9); + re_mdio_write(sc, 0x15, 0x00c8); + re_mdio_write(sc, 0x19, 0x307a); + re_mdio_write(sc, 0x15, 0x0112); + re_mdio_write(sc, 0x19, 0x6421); + re_mdio_write(sc, 0x15, 0x0113); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0114); + re_mdio_write(sc, 0x19, 0x63f0); + re_mdio_write(sc, 0x15, 0x0115); + re_mdio_write(sc, 0x19, 0x4003); + re_mdio_write(sc, 0x15, 0x0116); + re_mdio_write(sc, 0x19, 0x4418); + re_mdio_write(sc, 0x15, 0x0117); + re_mdio_write(sc, 0x19, 0x9b00); + re_mdio_write(sc, 0x15, 0x0118); + re_mdio_write(sc, 0x19, 0x6461); + re_mdio_write(sc, 0x15, 0x0119); + re_mdio_write(sc, 0x19, 0x64e1); + re_mdio_write(sc, 0x15, 0x011a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0150); + re_mdio_write(sc, 0x19, 0x7c80); + re_mdio_write(sc, 0x15, 0x0151); + re_mdio_write(sc, 0x19, 0x6461); + re_mdio_write(sc, 0x15, 0x0152); + re_mdio_write(sc, 0x19, 0x4003); + re_mdio_write(sc, 0x15, 0x0153); + re_mdio_write(sc, 0x19, 0x4540); + re_mdio_write(sc, 0x15, 0x0154); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0155); + re_mdio_write(sc, 0x19, 0x9d00); + re_mdio_write(sc, 0x15, 0x0156); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0157); + re_mdio_write(sc, 0x19, 0x6421); + re_mdio_write(sc, 0x15, 0x0158); + re_mdio_write(sc, 0x19, 0x7c80); + re_mdio_write(sc, 0x15, 0x0159); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x015a); + re_mdio_write(sc, 0x19, 0x30fe); + re_mdio_write(sc, 0x15, 0x021e); + re_mdio_write(sc, 0x19, 0x5410); + re_mdio_write(sc, 0x15, 0x0225); + re_mdio_write(sc, 0x19, 0x5400); + re_mdio_write(sc, 0x15, 0x023D); + re_mdio_write(sc, 0x19, 0x4050); + re_mdio_write(sc, 0x15, 0x0295); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x02bd); + re_mdio_write(sc, 0x19, 0xa523); + re_mdio_write(sc, 0x15, 0x02be); + re_mdio_write(sc, 0x19, 0x32ca); + re_mdio_write(sc, 0x15, 0x02ca); + re_mdio_write(sc, 0x19, 0x48b3); + re_mdio_write(sc, 0x15, 0x02cb); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x02cc); + re_mdio_write(sc, 0x19, 0x4823); + re_mdio_write(sc, 0x15, 0x02cd); + re_mdio_write(sc, 0x19, 0x4510); + re_mdio_write(sc, 0x15, 0x02ce); + re_mdio_write(sc, 0x19, 0xb63a); + re_mdio_write(sc, 0x15, 0x02cf); + re_mdio_write(sc, 0x19, 0x7dc8); + re_mdio_write(sc, 0x15, 0x02d6); + re_mdio_write(sc, 0x19, 0x9bf8); + re_mdio_write(sc, 0x15, 0x02d8); + re_mdio_write(sc, 0x19, 0x85f6); + re_mdio_write(sc, 0x15, 0x02d9); + re_mdio_write(sc, 0x19, 0x32e0); + re_mdio_write(sc, 0x15, 0x02e0); + re_mdio_write(sc, 0x19, 0x4834); + re_mdio_write(sc, 0x15, 0x02e1); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x02e2); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x02e3); + re_mdio_write(sc, 0x19, 0x4824); + re_mdio_write(sc, 0x15, 0x02e4); + re_mdio_write(sc, 0x19, 0x4520); + re_mdio_write(sc, 0x15, 0x02e5); + re_mdio_write(sc, 0x19, 0x4008); + re_mdio_write(sc, 0x15, 0x02e6); + re_mdio_write(sc, 0x19, 0x4560); + re_mdio_write(sc, 0x15, 0x02e7); + re_mdio_write(sc, 0x19, 0x9d04); + re_mdio_write(sc, 0x15, 0x02e8); + re_mdio_write(sc, 0x19, 0x48c4); + re_mdio_write(sc, 0x15, 0x02e9); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02ea); + re_mdio_write(sc, 0x19, 0x4844); + re_mdio_write(sc, 0x15, 0x02eb); + re_mdio_write(sc, 0x19, 0x7dc8); + re_mdio_write(sc, 0x15, 0x02f0); + re_mdio_write(sc, 0x19, 0x9cf7); + re_mdio_write(sc, 0x15, 0x02f1); + re_mdio_write(sc, 0x19, 0xdf94); + re_mdio_write(sc, 0x15, 0x02f2); + re_mdio_write(sc, 0x19, 0x0002); + re_mdio_write(sc, 0x15, 0x02f3); + re_mdio_write(sc, 0x19, 0x6810); + re_mdio_write(sc, 0x15, 0x02f4); + re_mdio_write(sc, 0x19, 0xb614); + re_mdio_write(sc, 0x15, 0x02f5); + re_mdio_write(sc, 0x19, 0xc42b); + re_mdio_write(sc, 0x15, 0x02f6); + re_mdio_write(sc, 0x19, 0x00d4); + re_mdio_write(sc, 0x15, 0x02f7); + re_mdio_write(sc, 0x19, 0xc455); + re_mdio_write(sc, 0x15, 0x02f8); + re_mdio_write(sc, 0x19, 0x0093); + re_mdio_write(sc, 0x15, 0x02f9); + re_mdio_write(sc, 0x19, 0x92ee); + re_mdio_write(sc, 0x15, 0x02fa); + re_mdio_write(sc, 0x19, 0xefed); + re_mdio_write(sc, 0x15, 0x02fb); + re_mdio_write(sc, 0x19, 0x3312); + re_mdio_write(sc, 0x15, 0x0312); + re_mdio_write(sc, 0x19, 0x49b5); + re_mdio_write(sc, 0x15, 0x0313); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x0314); + re_mdio_write(sc, 0x19, 0x4d00); + re_mdio_write(sc, 0x15, 0x0315); + re_mdio_write(sc, 0x19, 0x6810); + re_mdio_write(sc, 0x15, 0x031e); + re_mdio_write(sc, 0x19, 0x404f); + re_mdio_write(sc, 0x15, 0x031f); + re_mdio_write(sc, 0x19, 0x44c8); + re_mdio_write(sc, 0x15, 0x0320); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x0321); + re_mdio_write(sc, 0x19, 0x00e7); + re_mdio_write(sc, 0x15, 0x0322); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0323); + re_mdio_write(sc, 0x19, 0x8203); + re_mdio_write(sc, 0x15, 0x0324); + re_mdio_write(sc, 0x19, 0x4d48); + re_mdio_write(sc, 0x15, 0x0325); + re_mdio_write(sc, 0x19, 0x3327); + re_mdio_write(sc, 0x15, 0x0326); + re_mdio_write(sc, 0x19, 0x4d40); + re_mdio_write(sc, 0x15, 0x0327); + re_mdio_write(sc, 0x19, 0xc8d7); + re_mdio_write(sc, 0x15, 0x0328); + re_mdio_write(sc, 0x19, 0x0003); + re_mdio_write(sc, 0x15, 0x0329); + re_mdio_write(sc, 0x19, 0x7c20); + re_mdio_write(sc, 0x15, 0x032a); + re_mdio_write(sc, 0x19, 0x4c20); + re_mdio_write(sc, 0x15, 0x032b); + re_mdio_write(sc, 0x19, 0xc8ed); + re_mdio_write(sc, 0x15, 0x032c); + re_mdio_write(sc, 0x19, 0x00f4); + re_mdio_write(sc, 0x15, 0x032d); + re_mdio_write(sc, 0x19, 0x82b3); + re_mdio_write(sc, 0x15, 0x032e); + re_mdio_write(sc, 0x19, 0xd11d); + re_mdio_write(sc, 0x15, 0x032f); + re_mdio_write(sc, 0x19, 0x00b1); + re_mdio_write(sc, 0x15, 0x0330); + re_mdio_write(sc, 0x19, 0xde18); + re_mdio_write(sc, 0x15, 0x0331); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x0332); + re_mdio_write(sc, 0x19, 0x91ee); + re_mdio_write(sc, 0x15, 0x0333); + re_mdio_write(sc, 0x19, 0x3339); + re_mdio_write(sc, 0x15, 0x033a); + re_mdio_write(sc, 0x19, 0x4064); + re_mdio_write(sc, 0x15, 0x0340); + re_mdio_write(sc, 0x19, 0x9e06); + re_mdio_write(sc, 0x15, 0x0341); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0342); + re_mdio_write(sc, 0x19, 0x8203); + re_mdio_write(sc, 0x15, 0x0343); + re_mdio_write(sc, 0x19, 0x4d48); + re_mdio_write(sc, 0x15, 0x0344); + re_mdio_write(sc, 0x19, 0x3346); + re_mdio_write(sc, 0x15, 0x0345); + re_mdio_write(sc, 0x19, 0x4d40); + re_mdio_write(sc, 0x15, 0x0346); + re_mdio_write(sc, 0x19, 0xd11d); + re_mdio_write(sc, 0x15, 0x0347); + re_mdio_write(sc, 0x19, 0x0099); + re_mdio_write(sc, 0x15, 0x0348); + re_mdio_write(sc, 0x19, 0xbb17); + re_mdio_write(sc, 0x15, 0x0349); + re_mdio_write(sc, 0x19, 0x8102); + re_mdio_write(sc, 0x15, 0x034a); + re_mdio_write(sc, 0x19, 0x334d); + re_mdio_write(sc, 0x15, 0x034b); + re_mdio_write(sc, 0x19, 0xa22c); + re_mdio_write(sc, 0x15, 0x034c); + re_mdio_write(sc, 0x19, 0x3397); + re_mdio_write(sc, 0x15, 0x034d); + re_mdio_write(sc, 0x19, 0x91f2); + re_mdio_write(sc, 0x15, 0x034e); + re_mdio_write(sc, 0x19, 0xc218); + re_mdio_write(sc, 0x15, 0x034f); + re_mdio_write(sc, 0x19, 0x00f0); + re_mdio_write(sc, 0x15, 0x0350); + re_mdio_write(sc, 0x19, 0x3397); + re_mdio_write(sc, 0x15, 0x0351); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0364); + re_mdio_write(sc, 0x19, 0xbc05); + re_mdio_write(sc, 0x15, 0x0367); + re_mdio_write(sc, 0x19, 0xa1fc); + re_mdio_write(sc, 0x15, 0x0368); + re_mdio_write(sc, 0x19, 0x3377); + re_mdio_write(sc, 0x15, 0x0369); + re_mdio_write(sc, 0x19, 0x328b); + re_mdio_write(sc, 0x15, 0x036a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0377); + re_mdio_write(sc, 0x19, 0x4b97); + re_mdio_write(sc, 0x15, 0x0378); + re_mdio_write(sc, 0x19, 0x6818); + re_mdio_write(sc, 0x15, 0x0379); + re_mdio_write(sc, 0x19, 0x4b07); + re_mdio_write(sc, 0x15, 0x037a); + re_mdio_write(sc, 0x19, 0x40ac); + re_mdio_write(sc, 0x15, 0x037b); + re_mdio_write(sc, 0x19, 0x4445); + re_mdio_write(sc, 0x15, 0x037c); + re_mdio_write(sc, 0x19, 0x404e); + re_mdio_write(sc, 0x15, 0x037d); + re_mdio_write(sc, 0x19, 0x4461); + re_mdio_write(sc, 0x15, 0x037e); + re_mdio_write(sc, 0x19, 0x9c09); + re_mdio_write(sc, 0x15, 0x037f); + re_mdio_write(sc, 0x19, 0x63da); + re_mdio_write(sc, 0x15, 0x0380); + re_mdio_write(sc, 0x19, 0x5440); + re_mdio_write(sc, 0x15, 0x0381); + re_mdio_write(sc, 0x19, 0x4b98); + re_mdio_write(sc, 0x15, 0x0382); + re_mdio_write(sc, 0x19, 0x7c60); + re_mdio_write(sc, 0x15, 0x0383); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x0384); + re_mdio_write(sc, 0x19, 0x4b08); + re_mdio_write(sc, 0x15, 0x0385); + re_mdio_write(sc, 0x19, 0x63d8); + re_mdio_write(sc, 0x15, 0x0386); + re_mdio_write(sc, 0x19, 0x338d); + re_mdio_write(sc, 0x15, 0x0387); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x0388); + re_mdio_write(sc, 0x19, 0x0080); + re_mdio_write(sc, 0x15, 0x0389); + re_mdio_write(sc, 0x19, 0x820c); + re_mdio_write(sc, 0x15, 0x038a); + re_mdio_write(sc, 0x19, 0xa10b); + re_mdio_write(sc, 0x15, 0x038b); + re_mdio_write(sc, 0x19, 0x9df3); + re_mdio_write(sc, 0x15, 0x038c); + re_mdio_write(sc, 0x19, 0x3395); + re_mdio_write(sc, 0x15, 0x038d); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x038e); + re_mdio_write(sc, 0x19, 0x00f9); + re_mdio_write(sc, 0x15, 0x038f); + re_mdio_write(sc, 0x19, 0xc017); + re_mdio_write(sc, 0x15, 0x0390); + re_mdio_write(sc, 0x19, 0x0005); + re_mdio_write(sc, 0x15, 0x0391); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x0392); + re_mdio_write(sc, 0x19, 0xa103); + re_mdio_write(sc, 0x15, 0x0393); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x0394); + re_mdio_write(sc, 0x19, 0x9df9); + re_mdio_write(sc, 0x15, 0x0395); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x0396); + re_mdio_write(sc, 0x19, 0x3397); + re_mdio_write(sc, 0x15, 0x0399); + re_mdio_write(sc, 0x19, 0x6810); + re_mdio_write(sc, 0x15, 0x03a4); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x03a5); + re_mdio_write(sc, 0x19, 0x8203); + re_mdio_write(sc, 0x15, 0x03a6); + re_mdio_write(sc, 0x19, 0x4d08); + re_mdio_write(sc, 0x15, 0x03a7); + re_mdio_write(sc, 0x19, 0x33a9); + re_mdio_write(sc, 0x15, 0x03a8); + re_mdio_write(sc, 0x19, 0x4d00); + re_mdio_write(sc, 0x15, 0x03a9); + re_mdio_write(sc, 0x19, 0x9bfa); + re_mdio_write(sc, 0x15, 0x03aa); + re_mdio_write(sc, 0x19, 0x33b6); + re_mdio_write(sc, 0x15, 0x03bb); + re_mdio_write(sc, 0x19, 0x4056); + re_mdio_write(sc, 0x15, 0x03bc); + re_mdio_write(sc, 0x19, 0x44e9); + re_mdio_write(sc, 0x15, 0x03bd); + re_mdio_write(sc, 0x19, 0x405e); + re_mdio_write(sc, 0x15, 0x03be); + re_mdio_write(sc, 0x19, 0x44f8); + re_mdio_write(sc, 0x15, 0x03bf); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x03c0); + re_mdio_write(sc, 0x19, 0x0037); + re_mdio_write(sc, 0x15, 0x03c1); + re_mdio_write(sc, 0x19, 0xbd37); + re_mdio_write(sc, 0x15, 0x03c2); + re_mdio_write(sc, 0x19, 0x9cfd); + re_mdio_write(sc, 0x15, 0x03c3); + re_mdio_write(sc, 0x19, 0xc639); + re_mdio_write(sc, 0x15, 0x03c4); + re_mdio_write(sc, 0x19, 0x0011); + re_mdio_write(sc, 0x15, 0x03c5); + re_mdio_write(sc, 0x19, 0x9b03); + re_mdio_write(sc, 0x15, 0x03c6); + re_mdio_write(sc, 0x19, 0x7c01); + re_mdio_write(sc, 0x15, 0x03c7); + re_mdio_write(sc, 0x19, 0x4c01); + re_mdio_write(sc, 0x15, 0x03c8); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x03c9); + re_mdio_write(sc, 0x19, 0x7c20); + re_mdio_write(sc, 0x15, 0x03ca); + re_mdio_write(sc, 0x19, 0x4c20); + re_mdio_write(sc, 0x15, 0x03cb); + re_mdio_write(sc, 0x19, 0x9af4); + re_mdio_write(sc, 0x15, 0x03cc); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03cd); + re_mdio_write(sc, 0x19, 0x4c52); + re_mdio_write(sc, 0x15, 0x03ce); + re_mdio_write(sc, 0x19, 0x4470); + re_mdio_write(sc, 0x15, 0x03cf); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03d0); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03d1); + re_mdio_write(sc, 0x19, 0x33bf); + re_mdio_write(sc, 0x15, 0x03d6); + re_mdio_write(sc, 0x19, 0x4047); + re_mdio_write(sc, 0x15, 0x03d7); + re_mdio_write(sc, 0x19, 0x4469); + re_mdio_write(sc, 0x15, 0x03d8); + re_mdio_write(sc, 0x19, 0x492b); + re_mdio_write(sc, 0x15, 0x03d9); + re_mdio_write(sc, 0x19, 0x4479); + re_mdio_write(sc, 0x15, 0x03da); + re_mdio_write(sc, 0x19, 0x7c09); + re_mdio_write(sc, 0x15, 0x03db); + re_mdio_write(sc, 0x19, 0x8203); + re_mdio_write(sc, 0x15, 0x03dc); + re_mdio_write(sc, 0x19, 0x4d48); + re_mdio_write(sc, 0x15, 0x03dd); + re_mdio_write(sc, 0x19, 0x33df); + re_mdio_write(sc, 0x15, 0x03de); + re_mdio_write(sc, 0x19, 0x4d40); + re_mdio_write(sc, 0x15, 0x03df); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x03e0); + re_mdio_write(sc, 0x19, 0x0017); + re_mdio_write(sc, 0x15, 0x03e1); + re_mdio_write(sc, 0x19, 0xbd17); + re_mdio_write(sc, 0x15, 0x03e2); + re_mdio_write(sc, 0x19, 0x9b03); + re_mdio_write(sc, 0x15, 0x03e3); + re_mdio_write(sc, 0x19, 0x7c20); + re_mdio_write(sc, 0x15, 0x03e4); + re_mdio_write(sc, 0x19, 0x4c20); + re_mdio_write(sc, 0x15, 0x03e5); + re_mdio_write(sc, 0x19, 0x88f5); + re_mdio_write(sc, 0x15, 0x03e6); + re_mdio_write(sc, 0x19, 0xc428); + re_mdio_write(sc, 0x15, 0x03e7); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x03e8); + re_mdio_write(sc, 0x19, 0x9af2); + re_mdio_write(sc, 0x15, 0x03e9); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03ea); + re_mdio_write(sc, 0x19, 0x4c52); + re_mdio_write(sc, 0x15, 0x03eb); + re_mdio_write(sc, 0x19, 0x4470); + re_mdio_write(sc, 0x15, 0x03ec); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03ed); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03ee); + re_mdio_write(sc, 0x19, 0x33da); + re_mdio_write(sc, 0x15, 0x03ef); + re_mdio_write(sc, 0x19, 0x3312); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0300); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x17, 0x2179); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0040); + re_mdio_write(sc, 0x18, 0x0645); + re_mdio_write(sc, 0x19, 0xe200); + re_mdio_write(sc, 0x18, 0x0655); + re_mdio_write(sc, 0x19, 0x9000); + re_mdio_write(sc, 0x18, 0x0d05); + re_mdio_write(sc, 0x19, 0xbe00); + re_mdio_write(sc, 0x18, 0x0d15); + re_mdio_write(sc, 0x19, 0xd300); + re_mdio_write(sc, 0x18, 0x0d25); + re_mdio_write(sc, 0x19, 0xfe00); + re_mdio_write(sc, 0x18, 0x0d35); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x0d45); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x18, 0x0d55); + re_mdio_write(sc, 0x19, 0x1000); + re_mdio_write(sc, 0x18, 0x0d65); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x0d75); + re_mdio_write(sc, 0x19, 0x8200); + re_mdio_write(sc, 0x18, 0x0d85); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x0d95); + re_mdio_write(sc, 0x19, 0x7000); + re_mdio_write(sc, 0x18, 0x0da5); + re_mdio_write(sc, 0x19, 0x0f00); + re_mdio_write(sc, 0x18, 0x0db5); + re_mdio_write(sc, 0x19, 0x0100); + re_mdio_write(sc, 0x18, 0x0dc5); + re_mdio_write(sc, 0x19, 0x9b00); + re_mdio_write(sc, 0x18, 0x0dd5); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x18, 0x0de5); + re_mdio_write(sc, 0x19, 0xe000); + re_mdio_write(sc, 0x18, 0x0df5); + re_mdio_write(sc, 0x19, 0xef00); + re_mdio_write(sc, 0x18, 0x16d5); + re_mdio_write(sc, 0x19, 0xe200); + re_mdio_write(sc, 0x18, 0x16e5); + re_mdio_write(sc, 0x19, 0xab00); + re_mdio_write(sc, 0x18, 0x2904); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x2914); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x18, 0x2924); + re_mdio_write(sc, 0x19, 0x0100); + re_mdio_write(sc, 0x18, 0x2934); + re_mdio_write(sc, 0x19, 0x2000); + re_mdio_write(sc, 0x18, 0x2944); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2954); + re_mdio_write(sc, 0x19, 0x4600); + re_mdio_write(sc, 0x18, 0x2964); + re_mdio_write(sc, 0x19, 0xfc00); + re_mdio_write(sc, 0x18, 0x2974); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2984); + re_mdio_write(sc, 0x19, 0x5000); + re_mdio_write(sc, 0x18, 0x2994); + re_mdio_write(sc, 0x19, 0x9d00); + re_mdio_write(sc, 0x18, 0x29a4); + re_mdio_write(sc, 0x19, 0xff00); + re_mdio_write(sc, 0x18, 0x29b4); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x29c4); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x18, 0x29d4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x29e4); + re_mdio_write(sc, 0x19, 0x2000); + re_mdio_write(sc, 0x18, 0x29f4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2a04); + re_mdio_write(sc, 0x19, 0xe600); + re_mdio_write(sc, 0x18, 0x2a14); + re_mdio_write(sc, 0x19, 0xff00); + re_mdio_write(sc, 0x18, 0x2a24); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2a34); + re_mdio_write(sc, 0x19, 0x5000); + re_mdio_write(sc, 0x18, 0x2a44); + re_mdio_write(sc, 0x19, 0x8500); + re_mdio_write(sc, 0x18, 0x2a54); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x18, 0x2a64); + re_mdio_write(sc, 0x19, 0xac00); + re_mdio_write(sc, 0x18, 0x2a74); + re_mdio_write(sc, 0x19, 0x0800); + re_mdio_write(sc, 0x18, 0x2a84); + re_mdio_write(sc, 0x19, 0xfc00); + re_mdio_write(sc, 0x18, 0x2a94); + re_mdio_write(sc, 0x19, 0xe000); + re_mdio_write(sc, 0x18, 0x2aa4); + re_mdio_write(sc, 0x19, 0x7400); + re_mdio_write(sc, 0x18, 0x2ab4); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x2ac4); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x18, 0x2ad4); + re_mdio_write(sc, 0x19, 0x0100); + re_mdio_write(sc, 0x18, 0x2ae4); + re_mdio_write(sc, 0x19, 0xff00); + re_mdio_write(sc, 0x18, 0x2af4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2b04); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x18, 0x2b14); + re_mdio_write(sc, 0x19, 0xfc00); + re_mdio_write(sc, 0x18, 0x2b24); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2b34); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x2b44); + re_mdio_write(sc, 0x19, 0x9d00); + re_mdio_write(sc, 0x18, 0x2b54); + re_mdio_write(sc, 0x19, 0xff00); + re_mdio_write(sc, 0x18, 0x2b64); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x2b74); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x18, 0x2b84); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2b94); + re_mdio_write(sc, 0x19, 0xff00); + re_mdio_write(sc, 0x18, 0x2ba4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2bb4); + re_mdio_write(sc, 0x19, 0xfc00); + re_mdio_write(sc, 0x18, 0x2bc4); + re_mdio_write(sc, 0x19, 0xff00); + re_mdio_write(sc, 0x18, 0x2bd4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2be4); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x2bf4); + re_mdio_write(sc, 0x19, 0x8900); + re_mdio_write(sc, 0x18, 0x2c04); + re_mdio_write(sc, 0x19, 0x8300); + re_mdio_write(sc, 0x18, 0x2c14); + re_mdio_write(sc, 0x19, 0xe000); + re_mdio_write(sc, 0x18, 0x2c24); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2c34); + re_mdio_write(sc, 0x19, 0xac00); + re_mdio_write(sc, 0x18, 0x2c44); + re_mdio_write(sc, 0x19, 0x0800); + re_mdio_write(sc, 0x18, 0x2c54); + re_mdio_write(sc, 0x19, 0xfa00); + re_mdio_write(sc, 0x18, 0x2c64); + re_mdio_write(sc, 0x19, 0xe100); + re_mdio_write(sc, 0x18, 0x2c74); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x18, 0x0001); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x17, 0x2100); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8b88); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0xd480); + re_mdio_write(sc, 0x06, 0xc1e4); + re_mdio_write(sc, 0x06, 0x8b9a); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x9bee); + re_mdio_write(sc, 0x06, 0x8b83); + re_mdio_write(sc, 0x06, 0x41bf); + re_mdio_write(sc, 0x06, 0x8b88); + re_mdio_write(sc, 0x06, 0xec00); + re_mdio_write(sc, 0x06, 0x19a9); + re_mdio_write(sc, 0x06, 0x8b90); + re_mdio_write(sc, 0x06, 0xf9ee); + re_mdio_write(sc, 0x06, 0xfff6); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xffe0); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0xe1e1); + re_mdio_write(sc, 0x06, 0x41f7); + re_mdio_write(sc, 0x06, 0x2ff6); + re_mdio_write(sc, 0x06, 0x28e4); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0xe5e1); + re_mdio_write(sc, 0x06, 0x41f7); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x020c); + re_mdio_write(sc, 0x06, 0x0202); + re_mdio_write(sc, 0x06, 0x1d02); + re_mdio_write(sc, 0x06, 0x0230); + re_mdio_write(sc, 0x06, 0x0202); + re_mdio_write(sc, 0x06, 0x4002); + re_mdio_write(sc, 0x06, 0x028b); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x6c02); + re_mdio_write(sc, 0x06, 0x8085); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x88e1); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8a1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8b); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8c1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8e1e); + re_mdio_write(sc, 0x06, 0x01a0); + re_mdio_write(sc, 0x06, 0x00c7); + re_mdio_write(sc, 0x06, 0xaec3); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x10ee); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x1310); + re_mdio_write(sc, 0x06, 0x021f); + re_mdio_write(sc, 0x06, 0x9d02); + re_mdio_write(sc, 0x06, 0x1f0c); + re_mdio_write(sc, 0x06, 0x0227); + re_mdio_write(sc, 0x06, 0x49fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x200b); + re_mdio_write(sc, 0x06, 0xf620); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x830e); + re_mdio_write(sc, 0x06, 0x021b); + re_mdio_write(sc, 0x06, 0x67ad); + re_mdio_write(sc, 0x06, 0x2211); + re_mdio_write(sc, 0x06, 0xf622); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x2ba5); + re_mdio_write(sc, 0x06, 0x022a); + re_mdio_write(sc, 0x06, 0x2402); + re_mdio_write(sc, 0x06, 0x80c6); + re_mdio_write(sc, 0x06, 0x022a); + re_mdio_write(sc, 0x06, 0xf0ad); + re_mdio_write(sc, 0x06, 0x2511); + re_mdio_write(sc, 0x06, 0xf625); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x8226); + re_mdio_write(sc, 0x06, 0x0204); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x19cc); + re_mdio_write(sc, 0x06, 0x022b); + re_mdio_write(sc, 0x06, 0x5bfc); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x0105); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b83); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x44e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x23ad); + re_mdio_write(sc, 0x06, 0x223b); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xbea0); + re_mdio_write(sc, 0x06, 0x0005); + re_mdio_write(sc, 0x06, 0x0228); + re_mdio_write(sc, 0x06, 0xdeae); + re_mdio_write(sc, 0x06, 0x42a0); + re_mdio_write(sc, 0x06, 0x0105); + re_mdio_write(sc, 0x06, 0x0228); + re_mdio_write(sc, 0x06, 0xf1ae); + re_mdio_write(sc, 0x06, 0x3aa0); + re_mdio_write(sc, 0x06, 0x0205); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x25ae); + re_mdio_write(sc, 0x06, 0x32a0); + re_mdio_write(sc, 0x06, 0x0305); + re_mdio_write(sc, 0x06, 0x0229); + re_mdio_write(sc, 0x06, 0x9aae); + re_mdio_write(sc, 0x06, 0x2aa0); + re_mdio_write(sc, 0x06, 0x0405); + re_mdio_write(sc, 0x06, 0x0229); + re_mdio_write(sc, 0x06, 0xaeae); + re_mdio_write(sc, 0x06, 0x22a0); + re_mdio_write(sc, 0x06, 0x0505); + re_mdio_write(sc, 0x06, 0x0229); + re_mdio_write(sc, 0x06, 0xd7ae); + re_mdio_write(sc, 0x06, 0x1aa0); + re_mdio_write(sc, 0x06, 0x0605); + re_mdio_write(sc, 0x06, 0x0229); + re_mdio_write(sc, 0x06, 0xfeae); + re_mdio_write(sc, 0x06, 0x12ee); + re_mdio_write(sc, 0x06, 0x8ac0); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8ac1); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8ac6); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8abe); + re_mdio_write(sc, 0x06, 0x00ae); + re_mdio_write(sc, 0x06, 0x00fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0x022a); + re_mdio_write(sc, 0x06, 0x67e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x230d); + re_mdio_write(sc, 0x06, 0x0658); + re_mdio_write(sc, 0x06, 0x03a0); + re_mdio_write(sc, 0x06, 0x0202); + re_mdio_write(sc, 0x06, 0xae2d); + re_mdio_write(sc, 0x06, 0xa001); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x2da0); + re_mdio_write(sc, 0x06, 0x004d); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0xe201); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x44e0); + re_mdio_write(sc, 0x06, 0x8ac2); + re_mdio_write(sc, 0x06, 0xe48a); + re_mdio_write(sc, 0x06, 0xc4e0); + re_mdio_write(sc, 0x06, 0x8ac3); + re_mdio_write(sc, 0x06, 0xe48a); + re_mdio_write(sc, 0x06, 0xc5ee); + re_mdio_write(sc, 0x06, 0x8abe); + re_mdio_write(sc, 0x06, 0x03e0); + re_mdio_write(sc, 0x06, 0x8b83); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x3aee); + re_mdio_write(sc, 0x06, 0x8abe); + re_mdio_write(sc, 0x06, 0x05ae); + re_mdio_write(sc, 0x06, 0x34e0); + re_mdio_write(sc, 0x06, 0x8ace); + re_mdio_write(sc, 0x06, 0xae03); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xcfe1); + re_mdio_write(sc, 0x06, 0x8ac2); + re_mdio_write(sc, 0x06, 0x4905); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0xc4e1); + re_mdio_write(sc, 0x06, 0x8ac3); + re_mdio_write(sc, 0x06, 0x4905); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0xc5ee); + re_mdio_write(sc, 0x06, 0x8abe); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x2ab6); + re_mdio_write(sc, 0x06, 0xac20); + re_mdio_write(sc, 0x06, 0x1202); + re_mdio_write(sc, 0x06, 0x819b); + re_mdio_write(sc, 0x06, 0xac20); + re_mdio_write(sc, 0x06, 0x0cee); + re_mdio_write(sc, 0x06, 0x8ac1); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8ac6); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8abe); + re_mdio_write(sc, 0x06, 0x02fc); + re_mdio_write(sc, 0x06, 0x04d0); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x590f); + re_mdio_write(sc, 0x06, 0x3902); + re_mdio_write(sc, 0x06, 0xaa04); + re_mdio_write(sc, 0x06, 0xd001); + re_mdio_write(sc, 0x06, 0xae02); + re_mdio_write(sc, 0x06, 0xd000); + re_mdio_write(sc, 0x06, 0x04f9); + re_mdio_write(sc, 0x06, 0xfae2); + re_mdio_write(sc, 0x06, 0xe2d2); + re_mdio_write(sc, 0x06, 0xe3e2); + re_mdio_write(sc, 0x06, 0xd3f9); + re_mdio_write(sc, 0x06, 0x5af7); + re_mdio_write(sc, 0x06, 0xe6e2); + re_mdio_write(sc, 0x06, 0xd2e7); + re_mdio_write(sc, 0x06, 0xe2d3); + re_mdio_write(sc, 0x06, 0xe2e0); + re_mdio_write(sc, 0x06, 0x2ce3); + re_mdio_write(sc, 0x06, 0xe02d); + re_mdio_write(sc, 0x06, 0xf95b); + re_mdio_write(sc, 0x06, 0xe01e); + re_mdio_write(sc, 0x06, 0x30e6); + re_mdio_write(sc, 0x06, 0xe02c); + re_mdio_write(sc, 0x06, 0xe7e0); + re_mdio_write(sc, 0x06, 0x2de2); + re_mdio_write(sc, 0x06, 0xe2cc); + re_mdio_write(sc, 0x06, 0xe3e2); + re_mdio_write(sc, 0x06, 0xcdf9); + re_mdio_write(sc, 0x06, 0x5a0f); + re_mdio_write(sc, 0x06, 0x6a50); + re_mdio_write(sc, 0x06, 0xe6e2); + re_mdio_write(sc, 0x06, 0xcce7); + re_mdio_write(sc, 0x06, 0xe2cd); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x3ce1); + re_mdio_write(sc, 0x06, 0xe03d); + re_mdio_write(sc, 0x06, 0xef64); + re_mdio_write(sc, 0x06, 0xfde0); + re_mdio_write(sc, 0x06, 0xe2cc); + re_mdio_write(sc, 0x06, 0xe1e2); + re_mdio_write(sc, 0x06, 0xcd58); + re_mdio_write(sc, 0x06, 0x0f5a); + re_mdio_write(sc, 0x06, 0xf01e); + re_mdio_write(sc, 0x06, 0x02e4); + re_mdio_write(sc, 0x06, 0xe2cc); + re_mdio_write(sc, 0x06, 0xe5e2); + re_mdio_write(sc, 0x06, 0xcdfd); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x2ce1); + re_mdio_write(sc, 0x06, 0xe02d); + re_mdio_write(sc, 0x06, 0x59e0); + re_mdio_write(sc, 0x06, 0x5b1f); + re_mdio_write(sc, 0x06, 0x1e13); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0x2ce5); + re_mdio_write(sc, 0x06, 0xe02d); + re_mdio_write(sc, 0x06, 0xfde0); + re_mdio_write(sc, 0x06, 0xe2d2); + re_mdio_write(sc, 0x06, 0xe1e2); + re_mdio_write(sc, 0x06, 0xd358); + re_mdio_write(sc, 0x06, 0xf75a); + re_mdio_write(sc, 0x06, 0x081e); + re_mdio_write(sc, 0x06, 0x02e4); + re_mdio_write(sc, 0x06, 0xe2d2); + re_mdio_write(sc, 0x06, 0xe5e2); + re_mdio_write(sc, 0x06, 0xd3ef); + re_mdio_write(sc, 0x06, 0x46fe); + re_mdio_write(sc, 0x06, 0xfd04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x2358); + re_mdio_write(sc, 0x06, 0xc4e1); + re_mdio_write(sc, 0x06, 0x8b6e); + re_mdio_write(sc, 0x06, 0x1f10); + re_mdio_write(sc, 0x06, 0x9e58); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x6ead); + re_mdio_write(sc, 0x06, 0x2222); + re_mdio_write(sc, 0x06, 0xac27); + re_mdio_write(sc, 0x06, 0x55ac); + re_mdio_write(sc, 0x06, 0x2602); + re_mdio_write(sc, 0x06, 0xae1a); + re_mdio_write(sc, 0x06, 0xd106); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xba02); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xd107); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xbd02); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xd107); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xc002); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xae30); + re_mdio_write(sc, 0x06, 0xd103); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xc302); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xc602); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xca02); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xd10f); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xba02); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xbd02); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xc002); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xc302); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xd011); + re_mdio_write(sc, 0x06, 0x022b); + re_mdio_write(sc, 0x06, 0xfb59); + re_mdio_write(sc, 0x06, 0x03ef); + re_mdio_write(sc, 0x06, 0x01d1); + re_mdio_write(sc, 0x06, 0x00a0); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xc602); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xd111); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x020c); + re_mdio_write(sc, 0x06, 0x11ad); + re_mdio_write(sc, 0x06, 0x2102); + re_mdio_write(sc, 0x06, 0x0c12); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xca02); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xaec8); + re_mdio_write(sc, 0x06, 0x70e4); + re_mdio_write(sc, 0x06, 0x2602); + re_mdio_write(sc, 0x06, 0x82d1); + re_mdio_write(sc, 0x06, 0x05f8); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69e0); + re_mdio_write(sc, 0x06, 0xe2fe); + re_mdio_write(sc, 0x06, 0xe1e2); + re_mdio_write(sc, 0x06, 0xffad); + re_mdio_write(sc, 0x06, 0x2d1a); + re_mdio_write(sc, 0x06, 0xe0e1); + re_mdio_write(sc, 0x06, 0x4ee1); + re_mdio_write(sc, 0x06, 0xe14f); + re_mdio_write(sc, 0x06, 0xac2d); + re_mdio_write(sc, 0x06, 0x22f6); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x033b); + re_mdio_write(sc, 0x06, 0xf703); + re_mdio_write(sc, 0x06, 0xf706); + re_mdio_write(sc, 0x06, 0xbf84); + re_mdio_write(sc, 0x06, 0x4402); + re_mdio_write(sc, 0x06, 0x2d21); + re_mdio_write(sc, 0x06, 0xae11); + re_mdio_write(sc, 0x06, 0xe0e1); + re_mdio_write(sc, 0x06, 0x4ee1); + re_mdio_write(sc, 0x06, 0xe14f); + re_mdio_write(sc, 0x06, 0xad2d); + re_mdio_write(sc, 0x06, 0x08bf); + re_mdio_write(sc, 0x06, 0x844f); + re_mdio_write(sc, 0x06, 0x022d); + re_mdio_write(sc, 0x06, 0x21f6); + re_mdio_write(sc, 0x06, 0x06ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0x0283); + re_mdio_write(sc, 0x06, 0x4502); + re_mdio_write(sc, 0x06, 0x83a2); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0xe001); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x1fd1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x843b); + re_mdio_write(sc, 0x06, 0x022d); + re_mdio_write(sc, 0x06, 0xc1e0); + re_mdio_write(sc, 0x06, 0xe020); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x21ad); + re_mdio_write(sc, 0x06, 0x200e); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf84); + re_mdio_write(sc, 0x06, 0x3b02); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0x9602); + re_mdio_write(sc, 0x06, 0x2d21); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x204c); + re_mdio_write(sc, 0x06, 0xd200); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0x0058); + re_mdio_write(sc, 0x06, 0x010c); + re_mdio_write(sc, 0x06, 0x021e); + re_mdio_write(sc, 0x06, 0x20e0); + re_mdio_write(sc, 0x06, 0xe000); + re_mdio_write(sc, 0x06, 0x5810); + re_mdio_write(sc, 0x06, 0x1e20); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x3658); + re_mdio_write(sc, 0x06, 0x031e); + re_mdio_write(sc, 0x06, 0x20e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x2358); + re_mdio_write(sc, 0x06, 0xe01e); + re_mdio_write(sc, 0x06, 0x20e0); + re_mdio_write(sc, 0x06, 0x8b64); + re_mdio_write(sc, 0x06, 0x1f02); + re_mdio_write(sc, 0x06, 0x9e22); + re_mdio_write(sc, 0x06, 0xe68b); + re_mdio_write(sc, 0x06, 0x64ad); + re_mdio_write(sc, 0x06, 0x3214); + re_mdio_write(sc, 0x06, 0xad34); + re_mdio_write(sc, 0x06, 0x11ef); + re_mdio_write(sc, 0x06, 0x0258); + re_mdio_write(sc, 0x06, 0x039e); + re_mdio_write(sc, 0x06, 0x07ad); + re_mdio_write(sc, 0x06, 0x3508); + re_mdio_write(sc, 0x06, 0x5ac0); + re_mdio_write(sc, 0x06, 0x9f04); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xae02); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf84); + re_mdio_write(sc, 0x06, 0x3e02); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfbe0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x22e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x23e2); + re_mdio_write(sc, 0x06, 0xe036); + re_mdio_write(sc, 0x06, 0xe3e0); + re_mdio_write(sc, 0x06, 0x375a); + re_mdio_write(sc, 0x06, 0xc40d); + re_mdio_write(sc, 0x06, 0x0158); + re_mdio_write(sc, 0x06, 0x021e); + re_mdio_write(sc, 0x06, 0x20e3); + re_mdio_write(sc, 0x06, 0x8ae7); + re_mdio_write(sc, 0x06, 0xac31); + re_mdio_write(sc, 0x06, 0x60ac); + re_mdio_write(sc, 0x06, 0x3a08); + re_mdio_write(sc, 0x06, 0xac3e); + re_mdio_write(sc, 0x06, 0x26ae); + re_mdio_write(sc, 0x06, 0x67af); + re_mdio_write(sc, 0x06, 0x8437); + re_mdio_write(sc, 0x06, 0xad37); + re_mdio_write(sc, 0x06, 0x61e0); + re_mdio_write(sc, 0x06, 0x8ae8); + re_mdio_write(sc, 0x06, 0x10e4); + re_mdio_write(sc, 0x06, 0x8ae8); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0xe91b); + re_mdio_write(sc, 0x06, 0x109e); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x51d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x8441); + re_mdio_write(sc, 0x06, 0x022d); + re_mdio_write(sc, 0x06, 0xc1ee); + re_mdio_write(sc, 0x06, 0x8ae8); + re_mdio_write(sc, 0x06, 0x00ae); + re_mdio_write(sc, 0x06, 0x43ad); + re_mdio_write(sc, 0x06, 0x3627); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xeee1); + re_mdio_write(sc, 0x06, 0x8aef); + re_mdio_write(sc, 0x06, 0xef74); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xeae1); + re_mdio_write(sc, 0x06, 0x8aeb); + re_mdio_write(sc, 0x06, 0x1b74); + re_mdio_write(sc, 0x06, 0x9e2e); + re_mdio_write(sc, 0x06, 0x14e4); + re_mdio_write(sc, 0x06, 0x8aea); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0xebef); + re_mdio_write(sc, 0x06, 0x74e0); + re_mdio_write(sc, 0x06, 0x8aee); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0xef1b); + re_mdio_write(sc, 0x06, 0x479e); + re_mdio_write(sc, 0x06, 0x0fae); + re_mdio_write(sc, 0x06, 0x19ee); + re_mdio_write(sc, 0x06, 0x8aea); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8aeb); + re_mdio_write(sc, 0x06, 0x00ae); + re_mdio_write(sc, 0x06, 0x0fac); + re_mdio_write(sc, 0x06, 0x390c); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf84); + re_mdio_write(sc, 0x06, 0x4102); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xe800); + re_mdio_write(sc, 0x06, 0xe68a); + re_mdio_write(sc, 0x06, 0xe7ff); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x0400); + re_mdio_write(sc, 0x06, 0xe234); + re_mdio_write(sc, 0x06, 0xcce2); + re_mdio_write(sc, 0x06, 0x0088); + re_mdio_write(sc, 0x06, 0xe200); + re_mdio_write(sc, 0x06, 0xa725); + re_mdio_write(sc, 0x06, 0xe50a); + re_mdio_write(sc, 0x06, 0x1de5); + re_mdio_write(sc, 0x06, 0x0a2c); + re_mdio_write(sc, 0x06, 0xe50a); + re_mdio_write(sc, 0x06, 0x6de5); + re_mdio_write(sc, 0x06, 0x0a1d); + re_mdio_write(sc, 0x06, 0xe50a); + re_mdio_write(sc, 0x06, 0x1ce5); + re_mdio_write(sc, 0x06, 0x0a2d); + re_mdio_write(sc, 0x06, 0xa755); + re_mdio_write(sc, 0x05, 0x8b64); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x05, 0x8b94); + re_mdio_write(sc, 0x06, 0x82cd); + re_mdio_write(sc, 0x05, 0x8b85); + re_mdio_write(sc, 0x06, 0x2000); + re_mdio_write(sc, 0x05, 0x8aee); + re_mdio_write(sc, 0x06, 0x03b8); + re_mdio_write(sc, 0x05, 0x8ae8); + re_mdio_write(sc, 0x06, 0x0002); + PhyRegValue = re_mdio_read(sc, 0x01); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x01, PhyRegValue); + PhyRegValue = re_mdio_read(sc, 0x00); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x00, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0); + re_mdio_write(sc, 0x1f, 0x0005); + for (i=0; i<200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x00); + if (PhyRegValue&0x0080) + break; + } + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + if (sc->RequiredSecLanDonglePatch) + PhyRegValue &= ~(BIT_2); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0028); + re_mdio_write(sc, 0x15, 0x0010); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0041); + re_mdio_write(sc, 0x15, 0x0802); + re_mdio_write(sc, 0x16, 0x2185); + re_mdio_write(sc, 0x1f, 0x0000); +} + +static void re_set_phy_mcu_8168e_2(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + int i; + + if (re_efuse_read(sc, 0x22) == 0x0c) { + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x17, 0x0117); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1E, 0x002C); + re_mdio_write(sc, 0x1B, 0x5000); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x16, 0x4104); + for (i=0; i<200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x1E); + PhyRegValue &= 0x03FF; + if (PhyRegValue== 0x000C) + break; + } + re_mdio_write(sc, 0x1f, 0x0005); + for (i=0; i<200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x07); + if ((PhyRegValue&0x0020)==0) + break; + } + PhyRegValue = re_mdio_read(sc, 0x07); + if (PhyRegValue & 0x0020) { + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x00a1); + re_mdio_write(sc, 0x17, 0x1000); + re_mdio_write(sc, 0x17, 0x0000); + re_mdio_write(sc, 0x17, 0x2000); + re_mdio_write(sc, 0x1e, 0x002f); + re_mdio_write(sc, 0x18, 0x9bfb); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x07, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + } + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + PhyRegValue = re_mdio_read(sc, 0x00); + PhyRegValue &= ~(BIT_7); + re_mdio_write(sc, 0x00, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0002); + PhyRegValue = re_mdio_read(sc, 0x08); + PhyRegValue &= ~(BIT_7); + re_mdio_write(sc, 0x08, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0307); + re_mdio_write(sc, 0x15, 0x000e); + re_mdio_write(sc, 0x19, 0x000a); + re_mdio_write(sc, 0x15, 0x0010); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x0018); + re_mdio_write(sc, 0x19, 0x4801); + re_mdio_write(sc, 0x15, 0x0019); + re_mdio_write(sc, 0x19, 0x6801); + re_mdio_write(sc, 0x15, 0x001a); + re_mdio_write(sc, 0x19, 0x66a1); + re_mdio_write(sc, 0x15, 0x001f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0020); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0021); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0022); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0023); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0024); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0025); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x0026); + re_mdio_write(sc, 0x19, 0x40ea); + re_mdio_write(sc, 0x15, 0x0027); + re_mdio_write(sc, 0x19, 0x4503); + re_mdio_write(sc, 0x15, 0x0028); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0029); + re_mdio_write(sc, 0x19, 0xa631); + re_mdio_write(sc, 0x15, 0x002a); + re_mdio_write(sc, 0x19, 0x9717); + re_mdio_write(sc, 0x15, 0x002b); + re_mdio_write(sc, 0x19, 0x302c); + re_mdio_write(sc, 0x15, 0x002c); + re_mdio_write(sc, 0x19, 0x4802); + re_mdio_write(sc, 0x15, 0x002d); + re_mdio_write(sc, 0x19, 0x58da); + re_mdio_write(sc, 0x15, 0x002e); + re_mdio_write(sc, 0x19, 0x400d); + re_mdio_write(sc, 0x15, 0x002f); + re_mdio_write(sc, 0x19, 0x4488); + re_mdio_write(sc, 0x15, 0x0030); + re_mdio_write(sc, 0x19, 0x9e00); + re_mdio_write(sc, 0x15, 0x0031); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x0032); + re_mdio_write(sc, 0x19, 0x6481); + re_mdio_write(sc, 0x15, 0x0033); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0034); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0035); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0036); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0037); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0038); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0039); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x003a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x003b); + re_mdio_write(sc, 0x19, 0x63e8); + re_mdio_write(sc, 0x15, 0x003c); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x003d); + re_mdio_write(sc, 0x19, 0x59d4); + re_mdio_write(sc, 0x15, 0x003e); + re_mdio_write(sc, 0x19, 0x63f8); + re_mdio_write(sc, 0x15, 0x0040); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x0041); + re_mdio_write(sc, 0x19, 0x30de); + re_mdio_write(sc, 0x15, 0x0044); + re_mdio_write(sc, 0x19, 0x480f); + re_mdio_write(sc, 0x15, 0x0045); + re_mdio_write(sc, 0x19, 0x6800); + re_mdio_write(sc, 0x15, 0x0046); + re_mdio_write(sc, 0x19, 0x6680); + re_mdio_write(sc, 0x15, 0x0047); + re_mdio_write(sc, 0x19, 0x7c10); + re_mdio_write(sc, 0x15, 0x0048); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x0049); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004b); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004f); + re_mdio_write(sc, 0x19, 0x40ea); + re_mdio_write(sc, 0x15, 0x0050); + re_mdio_write(sc, 0x19, 0x4503); + re_mdio_write(sc, 0x15, 0x0051); + re_mdio_write(sc, 0x19, 0x58ca); + re_mdio_write(sc, 0x15, 0x0052); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x0053); + re_mdio_write(sc, 0x19, 0x63d8); + re_mdio_write(sc, 0x15, 0x0054); + re_mdio_write(sc, 0x19, 0x66a0); + re_mdio_write(sc, 0x15, 0x0055); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0056); + re_mdio_write(sc, 0x19, 0x3000); + re_mdio_write(sc, 0x15, 0x00a1); + re_mdio_write(sc, 0x19, 0x3044); + re_mdio_write(sc, 0x15, 0x00ab); + re_mdio_write(sc, 0x19, 0x5820); + re_mdio_write(sc, 0x15, 0x00ac); + re_mdio_write(sc, 0x19, 0x5e04); + re_mdio_write(sc, 0x15, 0x00ad); + re_mdio_write(sc, 0x19, 0xb60c); + re_mdio_write(sc, 0x15, 0x00af); + re_mdio_write(sc, 0x19, 0x000a); + re_mdio_write(sc, 0x15, 0x00b2); + re_mdio_write(sc, 0x19, 0x30b9); + re_mdio_write(sc, 0x15, 0x00b9); + re_mdio_write(sc, 0x19, 0x4408); + re_mdio_write(sc, 0x15, 0x00ba); + re_mdio_write(sc, 0x19, 0x480b); + re_mdio_write(sc, 0x15, 0x00bb); + re_mdio_write(sc, 0x19, 0x5e00); + re_mdio_write(sc, 0x15, 0x00bc); + re_mdio_write(sc, 0x19, 0x405f); + re_mdio_write(sc, 0x15, 0x00bd); + re_mdio_write(sc, 0x19, 0x4448); + re_mdio_write(sc, 0x15, 0x00be); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x00bf); + re_mdio_write(sc, 0x19, 0x4468); + re_mdio_write(sc, 0x15, 0x00c0); + re_mdio_write(sc, 0x19, 0x9c02); + re_mdio_write(sc, 0x15, 0x00c1); + re_mdio_write(sc, 0x19, 0x58a0); + re_mdio_write(sc, 0x15, 0x00c2); + re_mdio_write(sc, 0x19, 0xb605); + re_mdio_write(sc, 0x15, 0x00c3); + re_mdio_write(sc, 0x19, 0xc0d3); + re_mdio_write(sc, 0x15, 0x00c4); + re_mdio_write(sc, 0x19, 0x00e6); + re_mdio_write(sc, 0x15, 0x00c5); + re_mdio_write(sc, 0x19, 0xdaec); + re_mdio_write(sc, 0x15, 0x00c6); + re_mdio_write(sc, 0x19, 0x00fa); + re_mdio_write(sc, 0x15, 0x00c7); + re_mdio_write(sc, 0x19, 0x9df9); + re_mdio_write(sc, 0x15, 0x0112); + re_mdio_write(sc, 0x19, 0x6421); + re_mdio_write(sc, 0x15, 0x0113); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0114); + re_mdio_write(sc, 0x19, 0x63f0); + re_mdio_write(sc, 0x15, 0x0115); + re_mdio_write(sc, 0x19, 0x4003); + re_mdio_write(sc, 0x15, 0x0116); + re_mdio_write(sc, 0x19, 0x4418); + re_mdio_write(sc, 0x15, 0x0117); + re_mdio_write(sc, 0x19, 0x9b00); + re_mdio_write(sc, 0x15, 0x0118); + re_mdio_write(sc, 0x19, 0x6461); + re_mdio_write(sc, 0x15, 0x0119); + re_mdio_write(sc, 0x19, 0x64e1); + re_mdio_write(sc, 0x15, 0x011a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0150); + re_mdio_write(sc, 0x19, 0x7c80); + re_mdio_write(sc, 0x15, 0x0151); + re_mdio_write(sc, 0x19, 0x6461); + re_mdio_write(sc, 0x15, 0x0152); + re_mdio_write(sc, 0x19, 0x4003); + re_mdio_write(sc, 0x15, 0x0153); + re_mdio_write(sc, 0x19, 0x4540); + re_mdio_write(sc, 0x15, 0x0154); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0155); + re_mdio_write(sc, 0x19, 0x9d00); + re_mdio_write(sc, 0x15, 0x0156); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0157); + re_mdio_write(sc, 0x19, 0x6421); + re_mdio_write(sc, 0x15, 0x0158); + re_mdio_write(sc, 0x19, 0x7c80); + re_mdio_write(sc, 0x15, 0x0159); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x015a); + re_mdio_write(sc, 0x19, 0x30fe); + re_mdio_write(sc, 0x15, 0x029c); + re_mdio_write(sc, 0x19, 0x0070); + re_mdio_write(sc, 0x15, 0x02b2); + re_mdio_write(sc, 0x19, 0x005a); + re_mdio_write(sc, 0x15, 0x02bd); + re_mdio_write(sc, 0x19, 0xa522); + re_mdio_write(sc, 0x15, 0x02ce); + re_mdio_write(sc, 0x19, 0xb63e); + re_mdio_write(sc, 0x15, 0x02d9); + re_mdio_write(sc, 0x19, 0x32df); + re_mdio_write(sc, 0x15, 0x02df); + re_mdio_write(sc, 0x19, 0x4500); + re_mdio_write(sc, 0x15, 0x02e7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02f4); + re_mdio_write(sc, 0x19, 0xb618); + re_mdio_write(sc, 0x15, 0x02fb); + re_mdio_write(sc, 0x19, 0xb900); + re_mdio_write(sc, 0x15, 0x02fc); + re_mdio_write(sc, 0x19, 0x49b5); + re_mdio_write(sc, 0x15, 0x02fd); + re_mdio_write(sc, 0x19, 0x6812); + re_mdio_write(sc, 0x15, 0x02fe); + re_mdio_write(sc, 0x19, 0x66a0); + re_mdio_write(sc, 0x15, 0x02ff); + re_mdio_write(sc, 0x19, 0x9900); + re_mdio_write(sc, 0x15, 0x0300); + re_mdio_write(sc, 0x19, 0x64a0); + re_mdio_write(sc, 0x15, 0x0301); + re_mdio_write(sc, 0x19, 0x3316); + re_mdio_write(sc, 0x15, 0x0308); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x030c); + re_mdio_write(sc, 0x19, 0x3000); + re_mdio_write(sc, 0x15, 0x0312); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0313); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0314); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0315); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0316); + re_mdio_write(sc, 0x19, 0x49b5); + re_mdio_write(sc, 0x15, 0x0317); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x0318); + re_mdio_write(sc, 0x19, 0x4d00); + re_mdio_write(sc, 0x15, 0x0319); + re_mdio_write(sc, 0x19, 0x6810); + re_mdio_write(sc, 0x15, 0x031a); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x031b); + re_mdio_write(sc, 0x19, 0x4925); + re_mdio_write(sc, 0x15, 0x031c); + re_mdio_write(sc, 0x19, 0x403b); + re_mdio_write(sc, 0x15, 0x031d); + re_mdio_write(sc, 0x19, 0xa602); + re_mdio_write(sc, 0x15, 0x031e); + re_mdio_write(sc, 0x19, 0x402f); + re_mdio_write(sc, 0x15, 0x031f); + re_mdio_write(sc, 0x19, 0x4484); + re_mdio_write(sc, 0x15, 0x0320); + re_mdio_write(sc, 0x19, 0x40c8); + re_mdio_write(sc, 0x15, 0x0321); + re_mdio_write(sc, 0x19, 0x44c4); + re_mdio_write(sc, 0x15, 0x0322); + re_mdio_write(sc, 0x19, 0x404f); + re_mdio_write(sc, 0x15, 0x0323); + re_mdio_write(sc, 0x19, 0x44c8); + re_mdio_write(sc, 0x15, 0x0324); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x0325); + re_mdio_write(sc, 0x19, 0x00e7); + re_mdio_write(sc, 0x15, 0x0326); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0327); + re_mdio_write(sc, 0x19, 0x8203); + re_mdio_write(sc, 0x15, 0x0328); + re_mdio_write(sc, 0x19, 0x4d48); + re_mdio_write(sc, 0x15, 0x0329); + re_mdio_write(sc, 0x19, 0x332b); + re_mdio_write(sc, 0x15, 0x032a); + re_mdio_write(sc, 0x19, 0x4d40); + re_mdio_write(sc, 0x15, 0x032c); + re_mdio_write(sc, 0x19, 0x00f8); + re_mdio_write(sc, 0x15, 0x032d); + re_mdio_write(sc, 0x19, 0x82b2); + re_mdio_write(sc, 0x15, 0x032f); + re_mdio_write(sc, 0x19, 0x00b0); + re_mdio_write(sc, 0x15, 0x0332); + re_mdio_write(sc, 0x19, 0x91f2); + re_mdio_write(sc, 0x15, 0x033f); + re_mdio_write(sc, 0x19, 0xb6cd); + re_mdio_write(sc, 0x15, 0x0340); + re_mdio_write(sc, 0x19, 0x9e01); + re_mdio_write(sc, 0x15, 0x0341); + re_mdio_write(sc, 0x19, 0xd11d); + re_mdio_write(sc, 0x15, 0x0342); + re_mdio_write(sc, 0x19, 0x009d); + re_mdio_write(sc, 0x15, 0x0343); + re_mdio_write(sc, 0x19, 0xbb1c); + re_mdio_write(sc, 0x15, 0x0344); + re_mdio_write(sc, 0x19, 0x8102); + re_mdio_write(sc, 0x15, 0x0345); + re_mdio_write(sc, 0x19, 0x3348); + re_mdio_write(sc, 0x15, 0x0346); + re_mdio_write(sc, 0x19, 0xa231); + re_mdio_write(sc, 0x15, 0x0347); + re_mdio_write(sc, 0x19, 0x335b); + re_mdio_write(sc, 0x15, 0x0348); + re_mdio_write(sc, 0x19, 0x91f7); + re_mdio_write(sc, 0x15, 0x0349); + re_mdio_write(sc, 0x19, 0xc218); + re_mdio_write(sc, 0x15, 0x034a); + re_mdio_write(sc, 0x19, 0x00f5); + re_mdio_write(sc, 0x15, 0x034b); + re_mdio_write(sc, 0x19, 0x335b); + re_mdio_write(sc, 0x15, 0x034c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x034d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x034e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x034f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0350); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x035b); + re_mdio_write(sc, 0x19, 0xa23c); + re_mdio_write(sc, 0x15, 0x035c); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x035d); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x035e); + re_mdio_write(sc, 0x19, 0x3397); + re_mdio_write(sc, 0x15, 0x0363); + re_mdio_write(sc, 0x19, 0xb6a9); + re_mdio_write(sc, 0x15, 0x0366); + re_mdio_write(sc, 0x19, 0x00f5); + re_mdio_write(sc, 0x15, 0x0382); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0388); + re_mdio_write(sc, 0x19, 0x0084); + re_mdio_write(sc, 0x15, 0x0389); + re_mdio_write(sc, 0x19, 0xdd17); + re_mdio_write(sc, 0x15, 0x038a); + re_mdio_write(sc, 0x19, 0x000b); + re_mdio_write(sc, 0x15, 0x038b); + re_mdio_write(sc, 0x19, 0xa10a); + re_mdio_write(sc, 0x15, 0x038c); + re_mdio_write(sc, 0x19, 0x337e); + re_mdio_write(sc, 0x15, 0x038d); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x038e); + re_mdio_write(sc, 0x19, 0xa107); + re_mdio_write(sc, 0x15, 0x038f); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x0390); + re_mdio_write(sc, 0x19, 0xc017); + re_mdio_write(sc, 0x15, 0x0391); + re_mdio_write(sc, 0x19, 0x0004); + re_mdio_write(sc, 0x15, 0x0392); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x0393); + re_mdio_write(sc, 0x19, 0x00f4); + re_mdio_write(sc, 0x15, 0x0397); + re_mdio_write(sc, 0x19, 0x4098); + re_mdio_write(sc, 0x15, 0x0398); + re_mdio_write(sc, 0x19, 0x4408); + re_mdio_write(sc, 0x15, 0x0399); + re_mdio_write(sc, 0x19, 0x55bf); + re_mdio_write(sc, 0x15, 0x039a); + re_mdio_write(sc, 0x19, 0x4bb9); + re_mdio_write(sc, 0x15, 0x039b); + re_mdio_write(sc, 0x19, 0x6810); + re_mdio_write(sc, 0x15, 0x039c); + re_mdio_write(sc, 0x19, 0x4b29); + re_mdio_write(sc, 0x15, 0x039d); + re_mdio_write(sc, 0x19, 0x4041); + re_mdio_write(sc, 0x15, 0x039e); + re_mdio_write(sc, 0x19, 0x442a); + re_mdio_write(sc, 0x15, 0x039f); + re_mdio_write(sc, 0x19, 0x4029); + re_mdio_write(sc, 0x15, 0x03aa); + re_mdio_write(sc, 0x19, 0x33b8); + re_mdio_write(sc, 0x15, 0x03b6); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03b7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03b8); + re_mdio_write(sc, 0x19, 0x543f); + re_mdio_write(sc, 0x15, 0x03b9); + re_mdio_write(sc, 0x19, 0x499a); + re_mdio_write(sc, 0x15, 0x03ba); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x03bb); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03bc); + re_mdio_write(sc, 0x19, 0x490a); + re_mdio_write(sc, 0x15, 0x03bd); + re_mdio_write(sc, 0x19, 0x405e); + re_mdio_write(sc, 0x15, 0x03c2); + re_mdio_write(sc, 0x19, 0x9a03); + re_mdio_write(sc, 0x15, 0x03c4); + re_mdio_write(sc, 0x19, 0x0015); + re_mdio_write(sc, 0x15, 0x03c5); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x03c8); + re_mdio_write(sc, 0x19, 0x9cf7); + re_mdio_write(sc, 0x15, 0x03c9); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03ca); + re_mdio_write(sc, 0x19, 0x4c52); + re_mdio_write(sc, 0x15, 0x03cb); + re_mdio_write(sc, 0x19, 0x4458); + re_mdio_write(sc, 0x15, 0x03cd); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03ce); + re_mdio_write(sc, 0x19, 0x33bf); + re_mdio_write(sc, 0x15, 0x03cf); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d0); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d1); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d6); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d8); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d9); + re_mdio_write(sc, 0x19, 0x49bb); + re_mdio_write(sc, 0x15, 0x03da); + re_mdio_write(sc, 0x19, 0x4478); + re_mdio_write(sc, 0x15, 0x03db); + re_mdio_write(sc, 0x19, 0x492b); + re_mdio_write(sc, 0x15, 0x03dc); + re_mdio_write(sc, 0x19, 0x7c01); + re_mdio_write(sc, 0x15, 0x03dd); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x03de); + re_mdio_write(sc, 0x19, 0xbd1a); + re_mdio_write(sc, 0x15, 0x03df); + re_mdio_write(sc, 0x19, 0xc428); + re_mdio_write(sc, 0x15, 0x03e0); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x03e1); + re_mdio_write(sc, 0x19, 0x9cfd); + re_mdio_write(sc, 0x15, 0x03e2); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03e3); + re_mdio_write(sc, 0x19, 0x4c52); + re_mdio_write(sc, 0x15, 0x03e4); + re_mdio_write(sc, 0x19, 0x4458); + re_mdio_write(sc, 0x15, 0x03e5); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03e6); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03e7); + re_mdio_write(sc, 0x19, 0x33de); + re_mdio_write(sc, 0x15, 0x03e8); + re_mdio_write(sc, 0x19, 0xc218); + re_mdio_write(sc, 0x15, 0x03e9); + re_mdio_write(sc, 0x19, 0x0002); + re_mdio_write(sc, 0x15, 0x03ea); + re_mdio_write(sc, 0x19, 0x32df); + re_mdio_write(sc, 0x15, 0x03eb); + re_mdio_write(sc, 0x19, 0x3316); + re_mdio_write(sc, 0x15, 0x03ec); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03ed); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03ee); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03ef); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03f7); + re_mdio_write(sc, 0x19, 0x330c); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0300); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x48f7); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xa080); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0xf602); + re_mdio_write(sc, 0x06, 0x0200); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x9002); + re_mdio_write(sc, 0x06, 0x0224); + re_mdio_write(sc, 0x06, 0x0202); + re_mdio_write(sc, 0x06, 0x3402); + re_mdio_write(sc, 0x06, 0x027f); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0xa602); + re_mdio_write(sc, 0x06, 0x80bf); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x88e1); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8a1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8b); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8c1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8e1e); + re_mdio_write(sc, 0x06, 0x01a0); + re_mdio_write(sc, 0x06, 0x00c7); + re_mdio_write(sc, 0x06, 0xaebb); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xe600); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xee03); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xefb8); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xe902); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8285); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8520); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8701); + re_mdio_write(sc, 0x06, 0xd481); + re_mdio_write(sc, 0x06, 0x35e4); + re_mdio_write(sc, 0x06, 0x8b94); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x95bf); + re_mdio_write(sc, 0x06, 0x8b88); + re_mdio_write(sc, 0x06, 0xec00); + re_mdio_write(sc, 0x06, 0x19a9); + re_mdio_write(sc, 0x06, 0x8b90); + re_mdio_write(sc, 0x06, 0xf9ee); + re_mdio_write(sc, 0x06, 0xfff6); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xffe0); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0xe1e1); + re_mdio_write(sc, 0x06, 0x41f7); + re_mdio_write(sc, 0x06, 0x2ff6); + re_mdio_write(sc, 0x06, 0x28e4); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0xe5e1); + re_mdio_write(sc, 0x06, 0x4104); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x0dee); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x82f4); + re_mdio_write(sc, 0x06, 0x021f); + re_mdio_write(sc, 0x06, 0x4102); + re_mdio_write(sc, 0x06, 0x2812); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x10ee); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x139d); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0xd602); + re_mdio_write(sc, 0x06, 0x1f99); + re_mdio_write(sc, 0x06, 0x0227); + re_mdio_write(sc, 0x06, 0xeafc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2014); + re_mdio_write(sc, 0x06, 0xf620); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x8104); + re_mdio_write(sc, 0x06, 0x021b); + re_mdio_write(sc, 0x06, 0xf402); + re_mdio_write(sc, 0x06, 0x2c9c); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x7902); + re_mdio_write(sc, 0x06, 0x8443); + re_mdio_write(sc, 0x06, 0xad22); + re_mdio_write(sc, 0x06, 0x11f6); + re_mdio_write(sc, 0x06, 0x22e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x022c); + re_mdio_write(sc, 0x06, 0x4602); + re_mdio_write(sc, 0x06, 0x2ac5); + re_mdio_write(sc, 0x06, 0x0229); + re_mdio_write(sc, 0x06, 0x2002); + re_mdio_write(sc, 0x06, 0x2b91); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x11f6); + re_mdio_write(sc, 0x06, 0x25e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0284); + re_mdio_write(sc, 0x06, 0xe202); + re_mdio_write(sc, 0x06, 0x043a); + re_mdio_write(sc, 0x06, 0x021a); + re_mdio_write(sc, 0x06, 0x5902); + re_mdio_write(sc, 0x06, 0x2bfc); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0xe001); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x1fd1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x8638); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50e0); + re_mdio_write(sc, 0x06, 0xe020); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x21ad); + re_mdio_write(sc, 0x06, 0x200e); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x3802); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xbf3d); + re_mdio_write(sc, 0x06, 0x3902); + re_mdio_write(sc, 0x06, 0x2eb0); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x0402); + re_mdio_write(sc, 0x06, 0x8591); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x3c05); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0xfee1); + re_mdio_write(sc, 0x06, 0xe2ff); + re_mdio_write(sc, 0x06, 0xad2d); + re_mdio_write(sc, 0x06, 0x1ae0); + re_mdio_write(sc, 0x06, 0xe14e); + re_mdio_write(sc, 0x06, 0xe1e1); + re_mdio_write(sc, 0x06, 0x4fac); + re_mdio_write(sc, 0x06, 0x2d22); + re_mdio_write(sc, 0x06, 0xf603); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x36f7); + re_mdio_write(sc, 0x06, 0x03f7); + re_mdio_write(sc, 0x06, 0x06bf); + re_mdio_write(sc, 0x06, 0x8622); + re_mdio_write(sc, 0x06, 0x022e); + re_mdio_write(sc, 0x06, 0xb0ae); + re_mdio_write(sc, 0x06, 0x11e0); + re_mdio_write(sc, 0x06, 0xe14e); + re_mdio_write(sc, 0x06, 0xe1e1); + re_mdio_write(sc, 0x06, 0x4fad); + re_mdio_write(sc, 0x06, 0x2d08); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x2d02); + re_mdio_write(sc, 0x06, 0x2eb0); + re_mdio_write(sc, 0x06, 0xf606); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x204c); + re_mdio_write(sc, 0x06, 0xd200); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0x0058); + re_mdio_write(sc, 0x06, 0x010c); + re_mdio_write(sc, 0x06, 0x021e); + re_mdio_write(sc, 0x06, 0x20e0); + re_mdio_write(sc, 0x06, 0xe000); + re_mdio_write(sc, 0x06, 0x5810); + re_mdio_write(sc, 0x06, 0x1e20); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x3658); + re_mdio_write(sc, 0x06, 0x031e); + re_mdio_write(sc, 0x06, 0x20e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x2358); + re_mdio_write(sc, 0x06, 0xe01e); + re_mdio_write(sc, 0x06, 0x20e0); + re_mdio_write(sc, 0x06, 0x8ae6); + re_mdio_write(sc, 0x06, 0x1f02); + re_mdio_write(sc, 0x06, 0x9e22); + re_mdio_write(sc, 0x06, 0xe68a); + re_mdio_write(sc, 0x06, 0xe6ad); + re_mdio_write(sc, 0x06, 0x3214); + re_mdio_write(sc, 0x06, 0xad34); + re_mdio_write(sc, 0x06, 0x11ef); + re_mdio_write(sc, 0x06, 0x0258); + re_mdio_write(sc, 0x06, 0x039e); + re_mdio_write(sc, 0x06, 0x07ad); + re_mdio_write(sc, 0x06, 0x3508); + re_mdio_write(sc, 0x06, 0x5ac0); + re_mdio_write(sc, 0x06, 0x9f04); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xae02); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x3e02); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfae0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac26); + re_mdio_write(sc, 0x06, 0x0ee0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x08e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xac24); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x6bee); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xe0eb); + re_mdio_write(sc, 0x06, 0x00e2); + re_mdio_write(sc, 0x06, 0xe07c); + re_mdio_write(sc, 0x06, 0xe3e0); + re_mdio_write(sc, 0x06, 0x7da5); + re_mdio_write(sc, 0x06, 0x1111); + re_mdio_write(sc, 0x06, 0x15d2); + re_mdio_write(sc, 0x06, 0x60d6); + re_mdio_write(sc, 0x06, 0x6666); + re_mdio_write(sc, 0x06, 0x0207); + re_mdio_write(sc, 0x06, 0xf9d2); + re_mdio_write(sc, 0x06, 0xa0d6); + re_mdio_write(sc, 0x06, 0xaaaa); + re_mdio_write(sc, 0x06, 0x0207); + re_mdio_write(sc, 0x06, 0xf902); + re_mdio_write(sc, 0x06, 0x825c); + re_mdio_write(sc, 0x06, 0xae44); + re_mdio_write(sc, 0x06, 0xa566); + re_mdio_write(sc, 0x06, 0x6602); + re_mdio_write(sc, 0x06, 0xae38); + re_mdio_write(sc, 0x06, 0xa5aa); + re_mdio_write(sc, 0x06, 0xaa02); + re_mdio_write(sc, 0x06, 0xae32); + re_mdio_write(sc, 0x06, 0xeee0); + re_mdio_write(sc, 0x06, 0xea04); + re_mdio_write(sc, 0x06, 0xeee0); + re_mdio_write(sc, 0x06, 0xeb06); + re_mdio_write(sc, 0x06, 0xe2e0); + re_mdio_write(sc, 0x06, 0x7ce3); + re_mdio_write(sc, 0x06, 0xe07d); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x38e1); + re_mdio_write(sc, 0x06, 0xe039); + re_mdio_write(sc, 0x06, 0xad2e); + re_mdio_write(sc, 0x06, 0x21ad); + re_mdio_write(sc, 0x06, 0x3f13); + re_mdio_write(sc, 0x06, 0xe0e4); + re_mdio_write(sc, 0x06, 0x14e1); + re_mdio_write(sc, 0x06, 0xe415); + re_mdio_write(sc, 0x06, 0x6880); + re_mdio_write(sc, 0x06, 0xe4e4); + re_mdio_write(sc, 0x06, 0x14e5); + re_mdio_write(sc, 0x06, 0xe415); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x5cae); + re_mdio_write(sc, 0x06, 0x0bac); + re_mdio_write(sc, 0x06, 0x3e02); + re_mdio_write(sc, 0x06, 0xae06); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x8602); + re_mdio_write(sc, 0x06, 0x82b0); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e1); + re_mdio_write(sc, 0x06, 0x8b2e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2605); + re_mdio_write(sc, 0x06, 0x0221); + re_mdio_write(sc, 0x06, 0xf3f7); + re_mdio_write(sc, 0x06, 0x28e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xad21); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x22f8); + re_mdio_write(sc, 0x06, 0xf729); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2405); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0xebf7); + re_mdio_write(sc, 0x06, 0x2ae5); + re_mdio_write(sc, 0x06, 0x8b2e); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x2134); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2109); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x2eac); + re_mdio_write(sc, 0x06, 0x2003); + re_mdio_write(sc, 0x06, 0x0283); + re_mdio_write(sc, 0x06, 0x52e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x09e0); + re_mdio_write(sc, 0x06, 0x8b2e); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x8337); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e1); + re_mdio_write(sc, 0x06, 0x8b2e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2608); + re_mdio_write(sc, 0x06, 0xe085); + re_mdio_write(sc, 0x06, 0xd2ad); + re_mdio_write(sc, 0x06, 0x2502); + re_mdio_write(sc, 0x06, 0xf628); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x210a); + re_mdio_write(sc, 0x06, 0xe086); + re_mdio_write(sc, 0x06, 0x0af6); + re_mdio_write(sc, 0x06, 0x27a0); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0xf629); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2408); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xedad); + re_mdio_write(sc, 0x06, 0x2002); + re_mdio_write(sc, 0x06, 0xf62a); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x2ea1); + re_mdio_write(sc, 0x06, 0x0003); + re_mdio_write(sc, 0x06, 0x0221); + re_mdio_write(sc, 0x06, 0x11fc); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0x8aed); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8aec); + re_mdio_write(sc, 0x06, 0x0004); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x3ae0); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0xeb58); + re_mdio_write(sc, 0x06, 0xf8d1); + re_mdio_write(sc, 0x06, 0x01e4); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe5e0); + re_mdio_write(sc, 0x06, 0xebe0); + re_mdio_write(sc, 0x06, 0xe07c); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x7d5c); + re_mdio_write(sc, 0x06, 0x00ff); + re_mdio_write(sc, 0x06, 0x3c00); + re_mdio_write(sc, 0x06, 0x1eab); + re_mdio_write(sc, 0x06, 0x1ce0); + re_mdio_write(sc, 0x06, 0xe04c); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x4d58); + re_mdio_write(sc, 0x06, 0xc1e4); + re_mdio_write(sc, 0x06, 0xe04c); + re_mdio_write(sc, 0x06, 0xe5e0); + re_mdio_write(sc, 0x06, 0x4de0); + re_mdio_write(sc, 0x06, 0xe0ee); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0x3ce4); + re_mdio_write(sc, 0x06, 0xe0ee); + re_mdio_write(sc, 0x06, 0xe5e0); + re_mdio_write(sc, 0x06, 0xeffc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2412); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0xeee1); + re_mdio_write(sc, 0x06, 0xe0ef); + re_mdio_write(sc, 0x06, 0x59c3); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0xeee5); + re_mdio_write(sc, 0x06, 0xe0ef); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xed01); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac25); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x8363); + re_mdio_write(sc, 0x06, 0xae03); + re_mdio_write(sc, 0x06, 0x0225); + re_mdio_write(sc, 0x06, 0x16fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xfae0); + re_mdio_write(sc, 0x06, 0x860a); + re_mdio_write(sc, 0x06, 0xa000); + re_mdio_write(sc, 0x06, 0x19e0); + re_mdio_write(sc, 0x06, 0x860b); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x331b); + re_mdio_write(sc, 0x06, 0x109e); + re_mdio_write(sc, 0x06, 0x04aa); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x06ee); + re_mdio_write(sc, 0x06, 0x860a); + re_mdio_write(sc, 0x06, 0x01ae); + re_mdio_write(sc, 0x06, 0xe602); + re_mdio_write(sc, 0x06, 0x241e); + re_mdio_write(sc, 0x06, 0xae14); + re_mdio_write(sc, 0x06, 0xa001); + re_mdio_write(sc, 0x06, 0x1402); + re_mdio_write(sc, 0x06, 0x2426); + re_mdio_write(sc, 0x06, 0xbf26); + re_mdio_write(sc, 0x06, 0x6d02); + re_mdio_write(sc, 0x06, 0x2eb0); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0b00); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0a02); + re_mdio_write(sc, 0x06, 0xaf84); + re_mdio_write(sc, 0x06, 0x3ca0); + re_mdio_write(sc, 0x06, 0x0252); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0400); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0500); + re_mdio_write(sc, 0x06, 0xe086); + re_mdio_write(sc, 0x06, 0x0be1); + re_mdio_write(sc, 0x06, 0x8b32); + re_mdio_write(sc, 0x06, 0x1b10); + re_mdio_write(sc, 0x06, 0x9e04); + re_mdio_write(sc, 0x06, 0xaa02); + re_mdio_write(sc, 0x06, 0xaecb); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0b00); + re_mdio_write(sc, 0x06, 0x0224); + re_mdio_write(sc, 0x06, 0x3ae2); + re_mdio_write(sc, 0x06, 0x8604); + re_mdio_write(sc, 0x06, 0xe386); + re_mdio_write(sc, 0x06, 0x05ef); + re_mdio_write(sc, 0x06, 0x65e2); + re_mdio_write(sc, 0x06, 0x8606); + re_mdio_write(sc, 0x06, 0xe386); + re_mdio_write(sc, 0x06, 0x071b); + re_mdio_write(sc, 0x06, 0x56aa); + re_mdio_write(sc, 0x06, 0x0eef); + re_mdio_write(sc, 0x06, 0x56e6); + re_mdio_write(sc, 0x06, 0x8606); + re_mdio_write(sc, 0x06, 0xe786); + re_mdio_write(sc, 0x06, 0x07e2); + re_mdio_write(sc, 0x06, 0x8609); + re_mdio_write(sc, 0x06, 0xe686); + re_mdio_write(sc, 0x06, 0x08e0); + re_mdio_write(sc, 0x06, 0x8609); + re_mdio_write(sc, 0x06, 0xa000); + re_mdio_write(sc, 0x06, 0x07ee); + re_mdio_write(sc, 0x06, 0x860a); + re_mdio_write(sc, 0x06, 0x03af); + re_mdio_write(sc, 0x06, 0x8369); + re_mdio_write(sc, 0x06, 0x0224); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x2426); + re_mdio_write(sc, 0x06, 0xae48); + re_mdio_write(sc, 0x06, 0xa003); + re_mdio_write(sc, 0x06, 0x21e0); + re_mdio_write(sc, 0x06, 0x8608); + re_mdio_write(sc, 0x06, 0xe186); + re_mdio_write(sc, 0x06, 0x091b); + re_mdio_write(sc, 0x06, 0x019e); + re_mdio_write(sc, 0x06, 0x0caa); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x249d); + re_mdio_write(sc, 0x06, 0xaee7); + re_mdio_write(sc, 0x06, 0x0224); + re_mdio_write(sc, 0x06, 0x8eae); + re_mdio_write(sc, 0x06, 0xe2ee); + re_mdio_write(sc, 0x06, 0x860a); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0x860b); + re_mdio_write(sc, 0x06, 0x00af); + re_mdio_write(sc, 0x06, 0x8369); + re_mdio_write(sc, 0x06, 0xa004); + re_mdio_write(sc, 0x06, 0x15e0); + re_mdio_write(sc, 0x06, 0x860b); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x341b); + re_mdio_write(sc, 0x06, 0x109e); + re_mdio_write(sc, 0x06, 0x05aa); + re_mdio_write(sc, 0x06, 0x03af); + re_mdio_write(sc, 0x06, 0x8383); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0a05); + re_mdio_write(sc, 0x06, 0xae0c); + re_mdio_write(sc, 0x06, 0xa005); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x0702); + re_mdio_write(sc, 0x06, 0x2309); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0a00); + re_mdio_write(sc, 0x06, 0xfeef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xfbe0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x22e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x23e2); + re_mdio_write(sc, 0x06, 0xe036); + re_mdio_write(sc, 0x06, 0xe3e0); + re_mdio_write(sc, 0x06, 0x375a); + re_mdio_write(sc, 0x06, 0xc40d); + re_mdio_write(sc, 0x06, 0x0158); + re_mdio_write(sc, 0x06, 0x021e); + re_mdio_write(sc, 0x06, 0x20e3); + re_mdio_write(sc, 0x06, 0x8ae7); + re_mdio_write(sc, 0x06, 0xac31); + re_mdio_write(sc, 0x06, 0x60ac); + re_mdio_write(sc, 0x06, 0x3a08); + re_mdio_write(sc, 0x06, 0xac3e); + re_mdio_write(sc, 0x06, 0x26ae); + re_mdio_write(sc, 0x06, 0x67af); + re_mdio_write(sc, 0x06, 0x84db); + re_mdio_write(sc, 0x06, 0xad37); + re_mdio_write(sc, 0x06, 0x61e0); + re_mdio_write(sc, 0x06, 0x8ae8); + re_mdio_write(sc, 0x06, 0x10e4); + re_mdio_write(sc, 0x06, 0x8ae8); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0xe91b); + re_mdio_write(sc, 0x06, 0x109e); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x51d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x863b); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50ee); + re_mdio_write(sc, 0x06, 0x8ae8); + re_mdio_write(sc, 0x06, 0x00ae); + re_mdio_write(sc, 0x06, 0x43ad); + re_mdio_write(sc, 0x06, 0x3627); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xeee1); + re_mdio_write(sc, 0x06, 0x8aef); + re_mdio_write(sc, 0x06, 0xef74); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xeae1); + re_mdio_write(sc, 0x06, 0x8aeb); + re_mdio_write(sc, 0x06, 0x1b74); + re_mdio_write(sc, 0x06, 0x9e2e); + re_mdio_write(sc, 0x06, 0x14e4); + re_mdio_write(sc, 0x06, 0x8aea); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0xebef); + re_mdio_write(sc, 0x06, 0x74e0); + re_mdio_write(sc, 0x06, 0x8aee); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0xef1b); + re_mdio_write(sc, 0x06, 0x479e); + re_mdio_write(sc, 0x06, 0x0fae); + re_mdio_write(sc, 0x06, 0x19ee); + re_mdio_write(sc, 0x06, 0x8aea); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8aeb); + re_mdio_write(sc, 0x06, 0x00ae); + re_mdio_write(sc, 0x06, 0x0fac); + re_mdio_write(sc, 0x06, 0x390c); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x3b02); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xe800); + re_mdio_write(sc, 0x06, 0xe68a); + re_mdio_write(sc, 0x06, 0xe7ff); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x2358); + re_mdio_write(sc, 0x06, 0xc4e1); + re_mdio_write(sc, 0x06, 0x8b6e); + re_mdio_write(sc, 0x06, 0x1f10); + re_mdio_write(sc, 0x06, 0x9e24); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x6ead); + re_mdio_write(sc, 0x06, 0x2218); + re_mdio_write(sc, 0x06, 0xac27); + re_mdio_write(sc, 0x06, 0x0dac); + re_mdio_write(sc, 0x06, 0x2605); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x8fae); + re_mdio_write(sc, 0x06, 0x1302); + re_mdio_write(sc, 0x06, 0x03c8); + re_mdio_write(sc, 0x06, 0xae0e); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0xe102); + re_mdio_write(sc, 0x06, 0x8520); + re_mdio_write(sc, 0x06, 0xae06); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x8f02); + re_mdio_write(sc, 0x06, 0x8566); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x82ad); + re_mdio_write(sc, 0x06, 0x2737); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x4402); + re_mdio_write(sc, 0x06, 0x2f23); + re_mdio_write(sc, 0x06, 0xac28); + re_mdio_write(sc, 0x06, 0x2ed1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x8647); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50bf); + re_mdio_write(sc, 0x06, 0x8641); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x23e5); + re_mdio_write(sc, 0x06, 0x8af0); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x22e1); + re_mdio_write(sc, 0x06, 0xe023); + re_mdio_write(sc, 0x06, 0xac2e); + re_mdio_write(sc, 0x06, 0x04d1); + re_mdio_write(sc, 0x06, 0x01ae); + re_mdio_write(sc, 0x06, 0x02d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x8641); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50d1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x8644); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x4702); + re_mdio_write(sc, 0x06, 0x2f23); + re_mdio_write(sc, 0x06, 0xad28); + re_mdio_write(sc, 0x06, 0x19d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x8644); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50e1); + re_mdio_write(sc, 0x06, 0x8af0); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x4102); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x4702); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0xfee1); + re_mdio_write(sc, 0x06, 0xe2ff); + re_mdio_write(sc, 0x06, 0xad2e); + re_mdio_write(sc, 0x06, 0x63e0); + re_mdio_write(sc, 0x06, 0xe038); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x39ad); + re_mdio_write(sc, 0x06, 0x2f10); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x34e1); + re_mdio_write(sc, 0x06, 0xe035); + re_mdio_write(sc, 0x06, 0xf726); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0x34e5); + re_mdio_write(sc, 0x06, 0xe035); + re_mdio_write(sc, 0x06, 0xae0e); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0xd6e1); + re_mdio_write(sc, 0x06, 0xe2d7); + re_mdio_write(sc, 0x06, 0xf728); + re_mdio_write(sc, 0x06, 0xe4e2); + re_mdio_write(sc, 0x06, 0xd6e5); + re_mdio_write(sc, 0x06, 0xe2d7); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0x34e1); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xf72b); + re_mdio_write(sc, 0x06, 0xe4e2); + re_mdio_write(sc, 0x06, 0x34e5); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xd07d); + re_mdio_write(sc, 0x06, 0xb0fe); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0x34e1); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xf62b); + re_mdio_write(sc, 0x06, 0xe4e2); + re_mdio_write(sc, 0x06, 0x34e5); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x34e1); + re_mdio_write(sc, 0x06, 0xe035); + re_mdio_write(sc, 0x06, 0xf626); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0x34e5); + re_mdio_write(sc, 0x06, 0xe035); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0xd6e1); + re_mdio_write(sc, 0x06, 0xe2d7); + re_mdio_write(sc, 0x06, 0xf628); + re_mdio_write(sc, 0x06, 0xe4e2); + re_mdio_write(sc, 0x06, 0xd6e5); + re_mdio_write(sc, 0x06, 0xe2d7); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xae20); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0xa725); + re_mdio_write(sc, 0x06, 0xe50a); + re_mdio_write(sc, 0x06, 0x1de5); + re_mdio_write(sc, 0x06, 0x0a2c); + re_mdio_write(sc, 0x06, 0xe50a); + re_mdio_write(sc, 0x06, 0x6de5); + re_mdio_write(sc, 0x06, 0x0a1d); + re_mdio_write(sc, 0x06, 0xe50a); + re_mdio_write(sc, 0x06, 0x1ce5); + re_mdio_write(sc, 0x06, 0x0a2d); + re_mdio_write(sc, 0x06, 0xa755); + re_mdio_write(sc, 0x06, 0x00e2); + re_mdio_write(sc, 0x06, 0x3488); + re_mdio_write(sc, 0x06, 0xe200); + re_mdio_write(sc, 0x06, 0xcce2); + re_mdio_write(sc, 0x06, 0x0055); + re_mdio_write(sc, 0x06, 0xe020); + re_mdio_write(sc, 0x06, 0x55e2); + re_mdio_write(sc, 0x06, 0xd600); + re_mdio_write(sc, 0x06, 0xe24a); + PhyRegValue = re_mdio_read(sc, 0x01); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x01, PhyRegValue); + PhyRegValue = re_mdio_read(sc, 0x00); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x00, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x17, 0x2179); + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x10, 0xf274); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0042); + re_mdio_write(sc, 0x15, 0x0f00); + re_mdio_write(sc, 0x15, 0x0f00); + re_mdio_write(sc, 0x16, 0x7408); + re_mdio_write(sc, 0x15, 0x0e00); + re_mdio_write(sc, 0x15, 0x0f00); + re_mdio_write(sc, 0x15, 0x0f01); + re_mdio_write(sc, 0x16, 0x4000); + re_mdio_write(sc, 0x15, 0x0e01); + re_mdio_write(sc, 0x15, 0x0f01); + re_mdio_write(sc, 0x15, 0x0f02); + re_mdio_write(sc, 0x16, 0x9400); + re_mdio_write(sc, 0x15, 0x0e02); + re_mdio_write(sc, 0x15, 0x0f02); + re_mdio_write(sc, 0x15, 0x0f03); + re_mdio_write(sc, 0x16, 0x7408); + re_mdio_write(sc, 0x15, 0x0e03); + re_mdio_write(sc, 0x15, 0x0f03); + re_mdio_write(sc, 0x15, 0x0f04); + re_mdio_write(sc, 0x16, 0x4008); + re_mdio_write(sc, 0x15, 0x0e04); + re_mdio_write(sc, 0x15, 0x0f04); + re_mdio_write(sc, 0x15, 0x0f05); + re_mdio_write(sc, 0x16, 0x9400); + re_mdio_write(sc, 0x15, 0x0e05); + re_mdio_write(sc, 0x15, 0x0f05); + re_mdio_write(sc, 0x15, 0x0f06); + re_mdio_write(sc, 0x16, 0x0803); + re_mdio_write(sc, 0x15, 0x0e06); + re_mdio_write(sc, 0x15, 0x0f06); + re_mdio_write(sc, 0x15, 0x0d00); + re_mdio_write(sc, 0x15, 0x0100); + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x10, 0xf074); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x17, 0x2149); + re_mdio_write(sc, 0x1f, 0x0005); + for (i=0; i<200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x00); + if (PhyRegValue&0x0080) + break; + } + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + if (sc->RequiredSecLanDonglePatch) + PhyRegValue &= ~(BIT_2); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue |= BIT_14; + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1e, 0x0020); + PhyRegValue = re_mdio_read(sc, 0x1b); + PhyRegValue |= BIT_7; + re_mdio_write(sc, 0x1b, PhyRegValue); + re_mdio_write(sc, 0x1e, 0x0041); + re_mdio_write(sc, 0x15, 0x0e02); + re_mdio_write(sc, 0x1e, 0x0028); + PhyRegValue = re_mdio_read(sc, 0x19); + PhyRegValue |= BIT_15; + re_mdio_write(sc, 0x19, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + } else { + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x17, 0x0117); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1E, 0x002C); + re_mdio_write(sc, 0x1B, 0x5000); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x16, 0x4104); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x1E); + PhyRegValue &= 0x03FF; + if (PhyRegValue==0x000C) + break; + } + re_mdio_write(sc, 0x1f, 0x0005); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x07); + if ((PhyRegValue & BIT_5) == 0) + break; + } + PhyRegValue = re_mdio_read(sc, 0x07); + if (PhyRegValue & BIT_5) { + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x00a1); + re_mdio_write(sc, 0x17, 0x1000); + re_mdio_write(sc, 0x17, 0x0000); + re_mdio_write(sc, 0x17, 0x2000); + re_mdio_write(sc, 0x1e, 0x002f); + re_mdio_write(sc, 0x18, 0x9bfb); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x07, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + } + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + PhyRegValue = re_mdio_read(sc, 0x00); + PhyRegValue &= ~(BIT_7); + re_mdio_write(sc, 0x00, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0002); + PhyRegValue = re_mdio_read(sc, 0x08); + PhyRegValue &= ~(BIT_7); + re_mdio_write(sc, 0x08, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0307); + re_mdio_write(sc, 0x15, 0x000e); + re_mdio_write(sc, 0x19, 0x000a); + re_mdio_write(sc, 0x15, 0x0010); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x0018); + re_mdio_write(sc, 0x19, 0x4801); + re_mdio_write(sc, 0x15, 0x0019); + re_mdio_write(sc, 0x19, 0x6801); + re_mdio_write(sc, 0x15, 0x001a); + re_mdio_write(sc, 0x19, 0x66a1); + re_mdio_write(sc, 0x15, 0x001f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0020); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0021); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0022); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0023); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0024); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0025); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x0026); + re_mdio_write(sc, 0x19, 0x40ea); + re_mdio_write(sc, 0x15, 0x0027); + re_mdio_write(sc, 0x19, 0x4503); + re_mdio_write(sc, 0x15, 0x0028); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0029); + re_mdio_write(sc, 0x19, 0xa631); + re_mdio_write(sc, 0x15, 0x002a); + re_mdio_write(sc, 0x19, 0x9717); + re_mdio_write(sc, 0x15, 0x002b); + re_mdio_write(sc, 0x19, 0x302c); + re_mdio_write(sc, 0x15, 0x002c); + re_mdio_write(sc, 0x19, 0x4802); + re_mdio_write(sc, 0x15, 0x002d); + re_mdio_write(sc, 0x19, 0x58da); + re_mdio_write(sc, 0x15, 0x002e); + re_mdio_write(sc, 0x19, 0x400d); + re_mdio_write(sc, 0x15, 0x002f); + re_mdio_write(sc, 0x19, 0x4488); + re_mdio_write(sc, 0x15, 0x0030); + re_mdio_write(sc, 0x19, 0x9e00); + re_mdio_write(sc, 0x15, 0x0031); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x0032); + re_mdio_write(sc, 0x19, 0x6481); + re_mdio_write(sc, 0x15, 0x0033); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0034); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0035); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0036); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0037); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0038); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0039); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x003a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x003b); + re_mdio_write(sc, 0x19, 0x63e8); + re_mdio_write(sc, 0x15, 0x003c); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x003d); + re_mdio_write(sc, 0x19, 0x59d4); + re_mdio_write(sc, 0x15, 0x003e); + re_mdio_write(sc, 0x19, 0x63f8); + re_mdio_write(sc, 0x15, 0x0040); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x0041); + re_mdio_write(sc, 0x19, 0x30de); + re_mdio_write(sc, 0x15, 0x0044); + re_mdio_write(sc, 0x19, 0x480f); + re_mdio_write(sc, 0x15, 0x0045); + re_mdio_write(sc, 0x19, 0x6800); + re_mdio_write(sc, 0x15, 0x0046); + re_mdio_write(sc, 0x19, 0x6680); + re_mdio_write(sc, 0x15, 0x0047); + re_mdio_write(sc, 0x19, 0x7c10); + re_mdio_write(sc, 0x15, 0x0048); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x0049); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004b); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004f); + re_mdio_write(sc, 0x19, 0x40ea); + re_mdio_write(sc, 0x15, 0x0050); + re_mdio_write(sc, 0x19, 0x4503); + re_mdio_write(sc, 0x15, 0x0051); + re_mdio_write(sc, 0x19, 0x58ca); + re_mdio_write(sc, 0x15, 0x0052); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x0053); + re_mdio_write(sc, 0x19, 0x63d8); + re_mdio_write(sc, 0x15, 0x0054); + re_mdio_write(sc, 0x19, 0x66a0); + re_mdio_write(sc, 0x15, 0x0055); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0056); + re_mdio_write(sc, 0x19, 0x3000); + re_mdio_write(sc, 0x15, 0x00a1); + re_mdio_write(sc, 0x19, 0x3044); + re_mdio_write(sc, 0x15, 0x00ab); + re_mdio_write(sc, 0x19, 0x5820); + re_mdio_write(sc, 0x15, 0x00ac); + re_mdio_write(sc, 0x19, 0x5e04); + re_mdio_write(sc, 0x15, 0x00ad); + re_mdio_write(sc, 0x19, 0xb60c); + re_mdio_write(sc, 0x15, 0x00af); + re_mdio_write(sc, 0x19, 0x000a); + re_mdio_write(sc, 0x15, 0x00b2); + re_mdio_write(sc, 0x19, 0x30b9); + re_mdio_write(sc, 0x15, 0x00b9); + re_mdio_write(sc, 0x19, 0x4408); + re_mdio_write(sc, 0x15, 0x00ba); + re_mdio_write(sc, 0x19, 0x480b); + re_mdio_write(sc, 0x15, 0x00bb); + re_mdio_write(sc, 0x19, 0x5e00); + re_mdio_write(sc, 0x15, 0x00bc); + re_mdio_write(sc, 0x19, 0x405f); + re_mdio_write(sc, 0x15, 0x00bd); + re_mdio_write(sc, 0x19, 0x4448); + re_mdio_write(sc, 0x15, 0x00be); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x00bf); + re_mdio_write(sc, 0x19, 0x4468); + re_mdio_write(sc, 0x15, 0x00c0); + re_mdio_write(sc, 0x19, 0x9c02); + re_mdio_write(sc, 0x15, 0x00c1); + re_mdio_write(sc, 0x19, 0x58a0); + re_mdio_write(sc, 0x15, 0x00c2); + re_mdio_write(sc, 0x19, 0xb605); + re_mdio_write(sc, 0x15, 0x00c3); + re_mdio_write(sc, 0x19, 0xc0d3); + re_mdio_write(sc, 0x15, 0x00c4); + re_mdio_write(sc, 0x19, 0x00e6); + re_mdio_write(sc, 0x15, 0x00c5); + re_mdio_write(sc, 0x19, 0xdaec); + re_mdio_write(sc, 0x15, 0x00c6); + re_mdio_write(sc, 0x19, 0x00fa); + re_mdio_write(sc, 0x15, 0x00c7); + re_mdio_write(sc, 0x19, 0x9df9); + re_mdio_write(sc, 0x15, 0x0112); + re_mdio_write(sc, 0x19, 0x6421); + re_mdio_write(sc, 0x15, 0x0113); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0114); + re_mdio_write(sc, 0x19, 0x63f0); + re_mdio_write(sc, 0x15, 0x0115); + re_mdio_write(sc, 0x19, 0x4003); + re_mdio_write(sc, 0x15, 0x0116); + re_mdio_write(sc, 0x19, 0x4418); + re_mdio_write(sc, 0x15, 0x0117); + re_mdio_write(sc, 0x19, 0x9b00); + re_mdio_write(sc, 0x15, 0x0118); + re_mdio_write(sc, 0x19, 0x6461); + re_mdio_write(sc, 0x15, 0x0119); + re_mdio_write(sc, 0x19, 0x64e1); + re_mdio_write(sc, 0x15, 0x011a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0150); + re_mdio_write(sc, 0x19, 0x7c80); + re_mdio_write(sc, 0x15, 0x0151); + re_mdio_write(sc, 0x19, 0x6461); + re_mdio_write(sc, 0x15, 0x0152); + re_mdio_write(sc, 0x19, 0x4003); + re_mdio_write(sc, 0x15, 0x0153); + re_mdio_write(sc, 0x19, 0x4540); + re_mdio_write(sc, 0x15, 0x0154); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0155); + re_mdio_write(sc, 0x19, 0x9d00); + re_mdio_write(sc, 0x15, 0x0156); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0157); + re_mdio_write(sc, 0x19, 0x6421); + re_mdio_write(sc, 0x15, 0x0158); + re_mdio_write(sc, 0x19, 0x7c80); + re_mdio_write(sc, 0x15, 0x0159); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x015a); + re_mdio_write(sc, 0x19, 0x30fe); + re_mdio_write(sc, 0x15, 0x029c); + re_mdio_write(sc, 0x19, 0x0070); + re_mdio_write(sc, 0x15, 0x02b2); + re_mdio_write(sc, 0x19, 0x005a); + re_mdio_write(sc, 0x15, 0x02bd); + re_mdio_write(sc, 0x19, 0xa522); + re_mdio_write(sc, 0x15, 0x02ce); + re_mdio_write(sc, 0x19, 0xb63e); + re_mdio_write(sc, 0x15, 0x02d9); + re_mdio_write(sc, 0x19, 0x32df); + re_mdio_write(sc, 0x15, 0x02df); + re_mdio_write(sc, 0x19, 0x4500); + re_mdio_write(sc, 0x15, 0x02f4); + re_mdio_write(sc, 0x19, 0xb618); + re_mdio_write(sc, 0x15, 0x02fb); + re_mdio_write(sc, 0x19, 0xb900); + re_mdio_write(sc, 0x15, 0x02fc); + re_mdio_write(sc, 0x19, 0x49b5); + re_mdio_write(sc, 0x15, 0x02fd); + re_mdio_write(sc, 0x19, 0x6812); + re_mdio_write(sc, 0x15, 0x02fe); + re_mdio_write(sc, 0x19, 0x66a0); + re_mdio_write(sc, 0x15, 0x02ff); + re_mdio_write(sc, 0x19, 0x9900); + re_mdio_write(sc, 0x15, 0x0300); + re_mdio_write(sc, 0x19, 0x64a0); + re_mdio_write(sc, 0x15, 0x0301); + re_mdio_write(sc, 0x19, 0x3316); + re_mdio_write(sc, 0x15, 0x0308); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x030c); + re_mdio_write(sc, 0x19, 0x3000); + re_mdio_write(sc, 0x15, 0x0312); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0313); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0314); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0315); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0316); + re_mdio_write(sc, 0x19, 0x49b5); + re_mdio_write(sc, 0x15, 0x0317); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x0318); + re_mdio_write(sc, 0x19, 0x4d00); + re_mdio_write(sc, 0x15, 0x0319); + re_mdio_write(sc, 0x19, 0x6810); + re_mdio_write(sc, 0x15, 0x031a); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x031b); + re_mdio_write(sc, 0x19, 0x4925); + re_mdio_write(sc, 0x15, 0x031c); + re_mdio_write(sc, 0x19, 0x403b); + re_mdio_write(sc, 0x15, 0x031d); + re_mdio_write(sc, 0x19, 0xa602); + re_mdio_write(sc, 0x15, 0x031e); + re_mdio_write(sc, 0x19, 0x402f); + re_mdio_write(sc, 0x15, 0x031f); + re_mdio_write(sc, 0x19, 0x4484); + re_mdio_write(sc, 0x15, 0x0320); + re_mdio_write(sc, 0x19, 0x40c8); + re_mdio_write(sc, 0x15, 0x0321); + re_mdio_write(sc, 0x19, 0x44c4); + re_mdio_write(sc, 0x15, 0x0322); + re_mdio_write(sc, 0x19, 0x404f); + re_mdio_write(sc, 0x15, 0x0323); + re_mdio_write(sc, 0x19, 0x44c8); + re_mdio_write(sc, 0x15, 0x0324); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x0325); + re_mdio_write(sc, 0x19, 0x00e7); + re_mdio_write(sc, 0x15, 0x0326); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0327); + re_mdio_write(sc, 0x19, 0x8203); + re_mdio_write(sc, 0x15, 0x0328); + re_mdio_write(sc, 0x19, 0x4d48); + re_mdio_write(sc, 0x15, 0x0329); + re_mdio_write(sc, 0x19, 0x332b); + re_mdio_write(sc, 0x15, 0x032a); + re_mdio_write(sc, 0x19, 0x4d40); + re_mdio_write(sc, 0x15, 0x032c); + re_mdio_write(sc, 0x19, 0x00f8); + re_mdio_write(sc, 0x15, 0x032d); + re_mdio_write(sc, 0x19, 0x82b2); + re_mdio_write(sc, 0x15, 0x032f); + re_mdio_write(sc, 0x19, 0x00b0); + re_mdio_write(sc, 0x15, 0x0332); + re_mdio_write(sc, 0x19, 0x91f2); + re_mdio_write(sc, 0x15, 0x033f); + re_mdio_write(sc, 0x19, 0xb6cd); + re_mdio_write(sc, 0x15, 0x0340); + re_mdio_write(sc, 0x19, 0x9e01); + re_mdio_write(sc, 0x15, 0x0341); + re_mdio_write(sc, 0x19, 0xd11d); + re_mdio_write(sc, 0x15, 0x0342); + re_mdio_write(sc, 0x19, 0x009d); + re_mdio_write(sc, 0x15, 0x0343); + re_mdio_write(sc, 0x19, 0xbb1c); + re_mdio_write(sc, 0x15, 0x0344); + re_mdio_write(sc, 0x19, 0x8102); + re_mdio_write(sc, 0x15, 0x0345); + re_mdio_write(sc, 0x19, 0x3348); + re_mdio_write(sc, 0x15, 0x0346); + re_mdio_write(sc, 0x19, 0xa231); + re_mdio_write(sc, 0x15, 0x0347); + re_mdio_write(sc, 0x19, 0x335b); + re_mdio_write(sc, 0x15, 0x0348); + re_mdio_write(sc, 0x19, 0x91f7); + re_mdio_write(sc, 0x15, 0x0349); + re_mdio_write(sc, 0x19, 0xc218); + re_mdio_write(sc, 0x15, 0x034a); + re_mdio_write(sc, 0x19, 0x00f5); + re_mdio_write(sc, 0x15, 0x034b); + re_mdio_write(sc, 0x19, 0x335b); + re_mdio_write(sc, 0x15, 0x034c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x034d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x034e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x034f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0350); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x035b); + re_mdio_write(sc, 0x19, 0xa23c); + re_mdio_write(sc, 0x15, 0x035c); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x035d); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x035e); + re_mdio_write(sc, 0x19, 0x3397); + re_mdio_write(sc, 0x15, 0x0363); + re_mdio_write(sc, 0x19, 0xb6a9); + re_mdio_write(sc, 0x15, 0x0366); + re_mdio_write(sc, 0x19, 0x00f5); + re_mdio_write(sc, 0x15, 0x0382); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0388); + re_mdio_write(sc, 0x19, 0x0084); + re_mdio_write(sc, 0x15, 0x0389); + re_mdio_write(sc, 0x19, 0xdd17); + re_mdio_write(sc, 0x15, 0x038a); + re_mdio_write(sc, 0x19, 0x000b); + re_mdio_write(sc, 0x15, 0x038b); + re_mdio_write(sc, 0x19, 0xa10a); + re_mdio_write(sc, 0x15, 0x038c); + re_mdio_write(sc, 0x19, 0x337e); + re_mdio_write(sc, 0x15, 0x038d); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x038e); + re_mdio_write(sc, 0x19, 0xa107); + re_mdio_write(sc, 0x15, 0x038f); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x0390); + re_mdio_write(sc, 0x19, 0xc017); + re_mdio_write(sc, 0x15, 0x0391); + re_mdio_write(sc, 0x19, 0x0004); + re_mdio_write(sc, 0x15, 0x0392); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x0393); + re_mdio_write(sc, 0x19, 0x00f4); + re_mdio_write(sc, 0x15, 0x0397); + re_mdio_write(sc, 0x19, 0x4098); + re_mdio_write(sc, 0x15, 0x0398); + re_mdio_write(sc, 0x19, 0x4408); + re_mdio_write(sc, 0x15, 0x0399); + re_mdio_write(sc, 0x19, 0x55bf); + re_mdio_write(sc, 0x15, 0x039a); + re_mdio_write(sc, 0x19, 0x4bb9); + re_mdio_write(sc, 0x15, 0x039b); + re_mdio_write(sc, 0x19, 0x6810); + re_mdio_write(sc, 0x15, 0x039c); + re_mdio_write(sc, 0x19, 0x4b29); + re_mdio_write(sc, 0x15, 0x039d); + re_mdio_write(sc, 0x19, 0x4041); + re_mdio_write(sc, 0x15, 0x039e); + re_mdio_write(sc, 0x19, 0x442a); + re_mdio_write(sc, 0x15, 0x039f); + re_mdio_write(sc, 0x19, 0x4029); + re_mdio_write(sc, 0x15, 0x03aa); + re_mdio_write(sc, 0x19, 0x33b8); + re_mdio_write(sc, 0x15, 0x03b6); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03b7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03b8); + re_mdio_write(sc, 0x19, 0x543f); + re_mdio_write(sc, 0x15, 0x03b9); + re_mdio_write(sc, 0x19, 0x499a); + re_mdio_write(sc, 0x15, 0x03ba); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x03bb); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03bc); + re_mdio_write(sc, 0x19, 0x490a); + re_mdio_write(sc, 0x15, 0x03bd); + re_mdio_write(sc, 0x19, 0x405e); + re_mdio_write(sc, 0x15, 0x03c2); + re_mdio_write(sc, 0x19, 0x9a03); + re_mdio_write(sc, 0x15, 0x03c4); + re_mdio_write(sc, 0x19, 0x0015); + re_mdio_write(sc, 0x15, 0x03c5); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x03c8); + re_mdio_write(sc, 0x19, 0x9cf7); + re_mdio_write(sc, 0x15, 0x03c9); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03ca); + re_mdio_write(sc, 0x19, 0x4c52); + re_mdio_write(sc, 0x15, 0x03cb); + re_mdio_write(sc, 0x19, 0x4458); + re_mdio_write(sc, 0x15, 0x03cd); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03ce); + re_mdio_write(sc, 0x19, 0x33bf); + re_mdio_write(sc, 0x15, 0x03cf); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d0); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d1); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d6); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d8); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d9); + re_mdio_write(sc, 0x19, 0x49bb); + re_mdio_write(sc, 0x15, 0x03da); + re_mdio_write(sc, 0x19, 0x4478); + re_mdio_write(sc, 0x15, 0x03db); + re_mdio_write(sc, 0x19, 0x492b); + re_mdio_write(sc, 0x15, 0x03dc); + re_mdio_write(sc, 0x19, 0x7c01); + re_mdio_write(sc, 0x15, 0x03dd); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x03de); + re_mdio_write(sc, 0x19, 0xbd1a); + re_mdio_write(sc, 0x15, 0x03df); + re_mdio_write(sc, 0x19, 0xc428); + re_mdio_write(sc, 0x15, 0x03e0); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x03e1); + re_mdio_write(sc, 0x19, 0x9cfd); + re_mdio_write(sc, 0x15, 0x03e2); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03e3); + re_mdio_write(sc, 0x19, 0x4c52); + re_mdio_write(sc, 0x15, 0x03e4); + re_mdio_write(sc, 0x19, 0x4458); + re_mdio_write(sc, 0x15, 0x03e5); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03e6); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03e7); + re_mdio_write(sc, 0x19, 0x33de); + re_mdio_write(sc, 0x15, 0x03e8); + re_mdio_write(sc, 0x19, 0xc218); + re_mdio_write(sc, 0x15, 0x03e9); + re_mdio_write(sc, 0x19, 0x0002); + re_mdio_write(sc, 0x15, 0x03ea); + re_mdio_write(sc, 0x19, 0x32df); + re_mdio_write(sc, 0x15, 0x03eb); + re_mdio_write(sc, 0x19, 0x3316); + re_mdio_write(sc, 0x15, 0x03ec); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03ed); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03ee); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03ef); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03f7); + re_mdio_write(sc, 0x19, 0x330c); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0300); + + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x48f7); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xa080); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0xf602); + re_mdio_write(sc, 0x06, 0x0200); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x9002); + re_mdio_write(sc, 0x06, 0x0224); + re_mdio_write(sc, 0x06, 0x0202); + re_mdio_write(sc, 0x06, 0x3402); + re_mdio_write(sc, 0x06, 0x027f); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0xa602); + re_mdio_write(sc, 0x06, 0x80bf); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x88e1); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8a1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8b); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8c1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8e1e); + re_mdio_write(sc, 0x06, 0x01a0); + re_mdio_write(sc, 0x06, 0x00c7); + re_mdio_write(sc, 0x06, 0xaebb); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xe600); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xee03); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xefb8); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xe902); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8285); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8520); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8701); + re_mdio_write(sc, 0x06, 0xd481); + re_mdio_write(sc, 0x06, 0x35e4); + re_mdio_write(sc, 0x06, 0x8b94); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x95bf); + re_mdio_write(sc, 0x06, 0x8b88); + re_mdio_write(sc, 0x06, 0xec00); + re_mdio_write(sc, 0x06, 0x19a9); + re_mdio_write(sc, 0x06, 0x8b90); + re_mdio_write(sc, 0x06, 0xf9ee); + re_mdio_write(sc, 0x06, 0xfff6); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xffe0); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0xe1e1); + re_mdio_write(sc, 0x06, 0x41f7); + re_mdio_write(sc, 0x06, 0x2ff6); + re_mdio_write(sc, 0x06, 0x28e4); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0xe5e1); + re_mdio_write(sc, 0x06, 0x4104); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x0dee); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x82f4); + re_mdio_write(sc, 0x06, 0x021f); + re_mdio_write(sc, 0x06, 0x4102); + re_mdio_write(sc, 0x06, 0x2812); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x10ee); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x139d); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0xd602); + re_mdio_write(sc, 0x06, 0x1f99); + re_mdio_write(sc, 0x06, 0x0227); + re_mdio_write(sc, 0x06, 0xeafc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2014); + re_mdio_write(sc, 0x06, 0xf620); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x8104); + re_mdio_write(sc, 0x06, 0x021b); + re_mdio_write(sc, 0x06, 0xf402); + re_mdio_write(sc, 0x06, 0x2c9c); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x7902); + re_mdio_write(sc, 0x06, 0x8443); + re_mdio_write(sc, 0x06, 0xad22); + re_mdio_write(sc, 0x06, 0x11f6); + re_mdio_write(sc, 0x06, 0x22e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x022c); + re_mdio_write(sc, 0x06, 0x4602); + re_mdio_write(sc, 0x06, 0x2ac5); + re_mdio_write(sc, 0x06, 0x0229); + re_mdio_write(sc, 0x06, 0x2002); + re_mdio_write(sc, 0x06, 0x2b91); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x11f6); + re_mdio_write(sc, 0x06, 0x25e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0284); + re_mdio_write(sc, 0x06, 0xe202); + re_mdio_write(sc, 0x06, 0x043a); + re_mdio_write(sc, 0x06, 0x021a); + re_mdio_write(sc, 0x06, 0x5902); + re_mdio_write(sc, 0x06, 0x2bfc); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0xe001); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x1fd1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x8638); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50e0); + re_mdio_write(sc, 0x06, 0xe020); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x21ad); + re_mdio_write(sc, 0x06, 0x200e); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x3802); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xbf3d); + re_mdio_write(sc, 0x06, 0x3902); + re_mdio_write(sc, 0x06, 0x2eb0); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x0402); + re_mdio_write(sc, 0x06, 0x8591); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x3c05); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0xfee1); + re_mdio_write(sc, 0x06, 0xe2ff); + re_mdio_write(sc, 0x06, 0xad2d); + re_mdio_write(sc, 0x06, 0x1ae0); + re_mdio_write(sc, 0x06, 0xe14e); + re_mdio_write(sc, 0x06, 0xe1e1); + re_mdio_write(sc, 0x06, 0x4fac); + re_mdio_write(sc, 0x06, 0x2d22); + re_mdio_write(sc, 0x06, 0xf603); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x36f7); + re_mdio_write(sc, 0x06, 0x03f7); + re_mdio_write(sc, 0x06, 0x06bf); + re_mdio_write(sc, 0x06, 0x8622); + re_mdio_write(sc, 0x06, 0x022e); + re_mdio_write(sc, 0x06, 0xb0ae); + re_mdio_write(sc, 0x06, 0x11e0); + re_mdio_write(sc, 0x06, 0xe14e); + re_mdio_write(sc, 0x06, 0xe1e1); + re_mdio_write(sc, 0x06, 0x4fad); + re_mdio_write(sc, 0x06, 0x2d08); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x2d02); + re_mdio_write(sc, 0x06, 0x2eb0); + re_mdio_write(sc, 0x06, 0xf606); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x204c); + re_mdio_write(sc, 0x06, 0xd200); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0x0058); + re_mdio_write(sc, 0x06, 0x010c); + re_mdio_write(sc, 0x06, 0x021e); + re_mdio_write(sc, 0x06, 0x20e0); + re_mdio_write(sc, 0x06, 0xe000); + re_mdio_write(sc, 0x06, 0x5810); + re_mdio_write(sc, 0x06, 0x1e20); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x3658); + re_mdio_write(sc, 0x06, 0x031e); + re_mdio_write(sc, 0x06, 0x20e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x2358); + re_mdio_write(sc, 0x06, 0xe01e); + re_mdio_write(sc, 0x06, 0x20e0); + re_mdio_write(sc, 0x06, 0x8ae6); + re_mdio_write(sc, 0x06, 0x1f02); + re_mdio_write(sc, 0x06, 0x9e22); + re_mdio_write(sc, 0x06, 0xe68a); + re_mdio_write(sc, 0x06, 0xe6ad); + re_mdio_write(sc, 0x06, 0x3214); + re_mdio_write(sc, 0x06, 0xad34); + re_mdio_write(sc, 0x06, 0x11ef); + re_mdio_write(sc, 0x06, 0x0258); + re_mdio_write(sc, 0x06, 0x039e); + re_mdio_write(sc, 0x06, 0x07ad); + re_mdio_write(sc, 0x06, 0x3508); + re_mdio_write(sc, 0x06, 0x5ac0); + re_mdio_write(sc, 0x06, 0x9f04); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xae02); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x3e02); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfae0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac26); + re_mdio_write(sc, 0x06, 0x0ee0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x08e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xac24); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x6bee); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xe0eb); + re_mdio_write(sc, 0x06, 0x00e2); + re_mdio_write(sc, 0x06, 0xe07c); + re_mdio_write(sc, 0x06, 0xe3e0); + re_mdio_write(sc, 0x06, 0x7da5); + re_mdio_write(sc, 0x06, 0x1111); + re_mdio_write(sc, 0x06, 0x15d2); + re_mdio_write(sc, 0x06, 0x60d6); + re_mdio_write(sc, 0x06, 0x6666); + re_mdio_write(sc, 0x06, 0x0207); + re_mdio_write(sc, 0x06, 0xf9d2); + re_mdio_write(sc, 0x06, 0xa0d6); + re_mdio_write(sc, 0x06, 0xaaaa); + re_mdio_write(sc, 0x06, 0x0207); + re_mdio_write(sc, 0x06, 0xf902); + re_mdio_write(sc, 0x06, 0x825c); + re_mdio_write(sc, 0x06, 0xae44); + re_mdio_write(sc, 0x06, 0xa566); + re_mdio_write(sc, 0x06, 0x6602); + re_mdio_write(sc, 0x06, 0xae38); + re_mdio_write(sc, 0x06, 0xa5aa); + re_mdio_write(sc, 0x06, 0xaa02); + re_mdio_write(sc, 0x06, 0xae32); + re_mdio_write(sc, 0x06, 0xeee0); + re_mdio_write(sc, 0x06, 0xea04); + re_mdio_write(sc, 0x06, 0xeee0); + re_mdio_write(sc, 0x06, 0xeb06); + re_mdio_write(sc, 0x06, 0xe2e0); + re_mdio_write(sc, 0x06, 0x7ce3); + re_mdio_write(sc, 0x06, 0xe07d); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x38e1); + re_mdio_write(sc, 0x06, 0xe039); + re_mdio_write(sc, 0x06, 0xad2e); + re_mdio_write(sc, 0x06, 0x21ad); + re_mdio_write(sc, 0x06, 0x3f13); + re_mdio_write(sc, 0x06, 0xe0e4); + re_mdio_write(sc, 0x06, 0x14e1); + re_mdio_write(sc, 0x06, 0xe415); + re_mdio_write(sc, 0x06, 0x6880); + re_mdio_write(sc, 0x06, 0xe4e4); + re_mdio_write(sc, 0x06, 0x14e5); + re_mdio_write(sc, 0x06, 0xe415); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x5cae); + re_mdio_write(sc, 0x06, 0x0bac); + re_mdio_write(sc, 0x06, 0x3e02); + re_mdio_write(sc, 0x06, 0xae06); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x8602); + re_mdio_write(sc, 0x06, 0x82b0); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e1); + re_mdio_write(sc, 0x06, 0x8b2e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2605); + re_mdio_write(sc, 0x06, 0x0221); + re_mdio_write(sc, 0x06, 0xf3f7); + re_mdio_write(sc, 0x06, 0x28e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xad21); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x22f8); + re_mdio_write(sc, 0x06, 0xf729); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2405); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0xebf7); + re_mdio_write(sc, 0x06, 0x2ae5); + re_mdio_write(sc, 0x06, 0x8b2e); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x2134); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2109); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x2eac); + re_mdio_write(sc, 0x06, 0x2003); + re_mdio_write(sc, 0x06, 0x0283); + re_mdio_write(sc, 0x06, 0x52e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x09e0); + re_mdio_write(sc, 0x06, 0x8b2e); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x8337); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e1); + re_mdio_write(sc, 0x06, 0x8b2e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2608); + re_mdio_write(sc, 0x06, 0xe085); + re_mdio_write(sc, 0x06, 0xd2ad); + re_mdio_write(sc, 0x06, 0x2502); + re_mdio_write(sc, 0x06, 0xf628); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x210a); + re_mdio_write(sc, 0x06, 0xe086); + re_mdio_write(sc, 0x06, 0x0af6); + re_mdio_write(sc, 0x06, 0x27a0); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0xf629); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2408); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xedad); + re_mdio_write(sc, 0x06, 0x2002); + re_mdio_write(sc, 0x06, 0xf62a); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x2ea1); + re_mdio_write(sc, 0x06, 0x0003); + re_mdio_write(sc, 0x06, 0x0221); + re_mdio_write(sc, 0x06, 0x11fc); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0x8aed); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8aec); + re_mdio_write(sc, 0x06, 0x0004); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x3ae0); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0xeb58); + re_mdio_write(sc, 0x06, 0xf8d1); + re_mdio_write(sc, 0x06, 0x01e4); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe5e0); + re_mdio_write(sc, 0x06, 0xebe0); + re_mdio_write(sc, 0x06, 0xe07c); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x7d5c); + re_mdio_write(sc, 0x06, 0x00ff); + re_mdio_write(sc, 0x06, 0x3c00); + re_mdio_write(sc, 0x06, 0x1eab); + re_mdio_write(sc, 0x06, 0x1ce0); + re_mdio_write(sc, 0x06, 0xe04c); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x4d58); + re_mdio_write(sc, 0x06, 0xc1e4); + re_mdio_write(sc, 0x06, 0xe04c); + re_mdio_write(sc, 0x06, 0xe5e0); + re_mdio_write(sc, 0x06, 0x4de0); + re_mdio_write(sc, 0x06, 0xe0ee); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0x3ce4); + re_mdio_write(sc, 0x06, 0xe0ee); + re_mdio_write(sc, 0x06, 0xe5e0); + re_mdio_write(sc, 0x06, 0xeffc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2412); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0xeee1); + re_mdio_write(sc, 0x06, 0xe0ef); + re_mdio_write(sc, 0x06, 0x59c3); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0xeee5); + re_mdio_write(sc, 0x06, 0xe0ef); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xed01); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac25); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x8363); + re_mdio_write(sc, 0x06, 0xae03); + re_mdio_write(sc, 0x06, 0x0225); + re_mdio_write(sc, 0x06, 0x16fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xfae0); + re_mdio_write(sc, 0x06, 0x860a); + re_mdio_write(sc, 0x06, 0xa000); + re_mdio_write(sc, 0x06, 0x19e0); + re_mdio_write(sc, 0x06, 0x860b); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x331b); + re_mdio_write(sc, 0x06, 0x109e); + re_mdio_write(sc, 0x06, 0x04aa); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x06ee); + re_mdio_write(sc, 0x06, 0x860a); + re_mdio_write(sc, 0x06, 0x01ae); + re_mdio_write(sc, 0x06, 0xe602); + re_mdio_write(sc, 0x06, 0x241e); + re_mdio_write(sc, 0x06, 0xae14); + re_mdio_write(sc, 0x06, 0xa001); + re_mdio_write(sc, 0x06, 0x1402); + re_mdio_write(sc, 0x06, 0x2426); + re_mdio_write(sc, 0x06, 0xbf26); + re_mdio_write(sc, 0x06, 0x6d02); + re_mdio_write(sc, 0x06, 0x2eb0); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0b00); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0a02); + re_mdio_write(sc, 0x06, 0xaf84); + re_mdio_write(sc, 0x06, 0x3ca0); + re_mdio_write(sc, 0x06, 0x0252); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0400); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0500); + re_mdio_write(sc, 0x06, 0xe086); + re_mdio_write(sc, 0x06, 0x0be1); + re_mdio_write(sc, 0x06, 0x8b32); + re_mdio_write(sc, 0x06, 0x1b10); + re_mdio_write(sc, 0x06, 0x9e04); + re_mdio_write(sc, 0x06, 0xaa02); + re_mdio_write(sc, 0x06, 0xaecb); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0b00); + re_mdio_write(sc, 0x06, 0x0224); + re_mdio_write(sc, 0x06, 0x3ae2); + re_mdio_write(sc, 0x06, 0x8604); + re_mdio_write(sc, 0x06, 0xe386); + re_mdio_write(sc, 0x06, 0x05ef); + re_mdio_write(sc, 0x06, 0x65e2); + re_mdio_write(sc, 0x06, 0x8606); + re_mdio_write(sc, 0x06, 0xe386); + re_mdio_write(sc, 0x06, 0x071b); + re_mdio_write(sc, 0x06, 0x56aa); + re_mdio_write(sc, 0x06, 0x0eef); + re_mdio_write(sc, 0x06, 0x56e6); + re_mdio_write(sc, 0x06, 0x8606); + re_mdio_write(sc, 0x06, 0xe786); + re_mdio_write(sc, 0x06, 0x07e2); + re_mdio_write(sc, 0x06, 0x8609); + re_mdio_write(sc, 0x06, 0xe686); + re_mdio_write(sc, 0x06, 0x08e0); + re_mdio_write(sc, 0x06, 0x8609); + re_mdio_write(sc, 0x06, 0xa000); + re_mdio_write(sc, 0x06, 0x07ee); + re_mdio_write(sc, 0x06, 0x860a); + re_mdio_write(sc, 0x06, 0x03af); + re_mdio_write(sc, 0x06, 0x8369); + re_mdio_write(sc, 0x06, 0x0224); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x2426); + re_mdio_write(sc, 0x06, 0xae48); + re_mdio_write(sc, 0x06, 0xa003); + re_mdio_write(sc, 0x06, 0x21e0); + re_mdio_write(sc, 0x06, 0x8608); + re_mdio_write(sc, 0x06, 0xe186); + re_mdio_write(sc, 0x06, 0x091b); + re_mdio_write(sc, 0x06, 0x019e); + re_mdio_write(sc, 0x06, 0x0caa); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x249d); + re_mdio_write(sc, 0x06, 0xaee7); + re_mdio_write(sc, 0x06, 0x0224); + re_mdio_write(sc, 0x06, 0x8eae); + re_mdio_write(sc, 0x06, 0xe2ee); + re_mdio_write(sc, 0x06, 0x860a); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0x860b); + re_mdio_write(sc, 0x06, 0x00af); + re_mdio_write(sc, 0x06, 0x8369); + re_mdio_write(sc, 0x06, 0xa004); + re_mdio_write(sc, 0x06, 0x15e0); + re_mdio_write(sc, 0x06, 0x860b); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x341b); + re_mdio_write(sc, 0x06, 0x109e); + re_mdio_write(sc, 0x06, 0x05aa); + re_mdio_write(sc, 0x06, 0x03af); + re_mdio_write(sc, 0x06, 0x8383); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0a05); + re_mdio_write(sc, 0x06, 0xae0c); + re_mdio_write(sc, 0x06, 0xa005); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x0702); + re_mdio_write(sc, 0x06, 0x2309); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0a00); + re_mdio_write(sc, 0x06, 0xfeef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xfbe0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x22e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x23e2); + re_mdio_write(sc, 0x06, 0xe036); + re_mdio_write(sc, 0x06, 0xe3e0); + re_mdio_write(sc, 0x06, 0x375a); + re_mdio_write(sc, 0x06, 0xc40d); + re_mdio_write(sc, 0x06, 0x0158); + re_mdio_write(sc, 0x06, 0x021e); + re_mdio_write(sc, 0x06, 0x20e3); + re_mdio_write(sc, 0x06, 0x8ae7); + re_mdio_write(sc, 0x06, 0xac31); + re_mdio_write(sc, 0x06, 0x60ac); + re_mdio_write(sc, 0x06, 0x3a08); + re_mdio_write(sc, 0x06, 0xac3e); + re_mdio_write(sc, 0x06, 0x26ae); + re_mdio_write(sc, 0x06, 0x67af); + re_mdio_write(sc, 0x06, 0x84db); + re_mdio_write(sc, 0x06, 0xad37); + re_mdio_write(sc, 0x06, 0x61e0); + re_mdio_write(sc, 0x06, 0x8ae8); + re_mdio_write(sc, 0x06, 0x10e4); + re_mdio_write(sc, 0x06, 0x8ae8); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0xe91b); + re_mdio_write(sc, 0x06, 0x109e); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x51d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x863b); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50ee); + re_mdio_write(sc, 0x06, 0x8ae8); + re_mdio_write(sc, 0x06, 0x00ae); + re_mdio_write(sc, 0x06, 0x43ad); + re_mdio_write(sc, 0x06, 0x3627); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xeee1); + re_mdio_write(sc, 0x06, 0x8aef); + re_mdio_write(sc, 0x06, 0xef74); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xeae1); + re_mdio_write(sc, 0x06, 0x8aeb); + re_mdio_write(sc, 0x06, 0x1b74); + re_mdio_write(sc, 0x06, 0x9e2e); + re_mdio_write(sc, 0x06, 0x14e4); + re_mdio_write(sc, 0x06, 0x8aea); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0xebef); + re_mdio_write(sc, 0x06, 0x74e0); + re_mdio_write(sc, 0x06, 0x8aee); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0xef1b); + re_mdio_write(sc, 0x06, 0x479e); + re_mdio_write(sc, 0x06, 0x0fae); + re_mdio_write(sc, 0x06, 0x19ee); + re_mdio_write(sc, 0x06, 0x8aea); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8aeb); + re_mdio_write(sc, 0x06, 0x00ae); + re_mdio_write(sc, 0x06, 0x0fac); + re_mdio_write(sc, 0x06, 0x390c); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x3b02); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xe800); + re_mdio_write(sc, 0x06, 0xe68a); + re_mdio_write(sc, 0x06, 0xe7ff); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x2358); + re_mdio_write(sc, 0x06, 0xc4e1); + re_mdio_write(sc, 0x06, 0x8b6e); + re_mdio_write(sc, 0x06, 0x1f10); + re_mdio_write(sc, 0x06, 0x9e24); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x6ead); + re_mdio_write(sc, 0x06, 0x2218); + re_mdio_write(sc, 0x06, 0xac27); + re_mdio_write(sc, 0x06, 0x0dac); + re_mdio_write(sc, 0x06, 0x2605); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x8fae); + re_mdio_write(sc, 0x06, 0x1302); + re_mdio_write(sc, 0x06, 0x03c8); + re_mdio_write(sc, 0x06, 0xae0e); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0xe102); + re_mdio_write(sc, 0x06, 0x8520); + re_mdio_write(sc, 0x06, 0xae06); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x8f02); + re_mdio_write(sc, 0x06, 0x8566); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x82ad); + re_mdio_write(sc, 0x06, 0x2737); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x4402); + re_mdio_write(sc, 0x06, 0x2f23); + re_mdio_write(sc, 0x06, 0xac28); + re_mdio_write(sc, 0x06, 0x2ed1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x8647); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50bf); + re_mdio_write(sc, 0x06, 0x8641); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x23e5); + re_mdio_write(sc, 0x06, 0x8af0); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x22e1); + re_mdio_write(sc, 0x06, 0xe023); + re_mdio_write(sc, 0x06, 0xac2e); + re_mdio_write(sc, 0x06, 0x04d1); + re_mdio_write(sc, 0x06, 0x01ae); + re_mdio_write(sc, 0x06, 0x02d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x8641); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50d1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x8644); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x4702); + re_mdio_write(sc, 0x06, 0x2f23); + re_mdio_write(sc, 0x06, 0xad28); + re_mdio_write(sc, 0x06, 0x19d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x8644); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50e1); + re_mdio_write(sc, 0x06, 0x8af0); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x4102); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x4702); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0xfee1); + re_mdio_write(sc, 0x06, 0xe2ff); + re_mdio_write(sc, 0x06, 0xad2e); + re_mdio_write(sc, 0x06, 0x63e0); + re_mdio_write(sc, 0x06, 0xe038); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x39ad); + re_mdio_write(sc, 0x06, 0x2f10); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x34e1); + re_mdio_write(sc, 0x06, 0xe035); + re_mdio_write(sc, 0x06, 0xf726); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0x34e5); + re_mdio_write(sc, 0x06, 0xe035); + re_mdio_write(sc, 0x06, 0xae0e); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0xd6e1); + re_mdio_write(sc, 0x06, 0xe2d7); + re_mdio_write(sc, 0x06, 0xf728); + re_mdio_write(sc, 0x06, 0xe4e2); + re_mdio_write(sc, 0x06, 0xd6e5); + re_mdio_write(sc, 0x06, 0xe2d7); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0x34e1); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xf72b); + re_mdio_write(sc, 0x06, 0xe4e2); + re_mdio_write(sc, 0x06, 0x34e5); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xd07d); + re_mdio_write(sc, 0x06, 0xb0fe); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0x34e1); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xf62b); + re_mdio_write(sc, 0x06, 0xe4e2); + re_mdio_write(sc, 0x06, 0x34e5); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x34e1); + re_mdio_write(sc, 0x06, 0xe035); + re_mdio_write(sc, 0x06, 0xf626); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0x34e5); + re_mdio_write(sc, 0x06, 0xe035); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0xd6e1); + re_mdio_write(sc, 0x06, 0xe2d7); + re_mdio_write(sc, 0x06, 0xf628); + re_mdio_write(sc, 0x06, 0xe4e2); + re_mdio_write(sc, 0x06, 0xd6e5); + re_mdio_write(sc, 0x06, 0xe2d7); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xae20); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0xa725); + re_mdio_write(sc, 0x06, 0xe50a); + re_mdio_write(sc, 0x06, 0x1de5); + re_mdio_write(sc, 0x06, 0x0a2c); + re_mdio_write(sc, 0x06, 0xe50a); + re_mdio_write(sc, 0x06, 0x6de5); + re_mdio_write(sc, 0x06, 0x0a1d); + re_mdio_write(sc, 0x06, 0xe50a); + re_mdio_write(sc, 0x06, 0x1ce5); + re_mdio_write(sc, 0x06, 0x0a2d); + re_mdio_write(sc, 0x06, 0xa755); + re_mdio_write(sc, 0x06, 0x00e2); + re_mdio_write(sc, 0x06, 0x3488); + re_mdio_write(sc, 0x06, 0xe200); + re_mdio_write(sc, 0x06, 0xcce2); + re_mdio_write(sc, 0x06, 0x0055); + re_mdio_write(sc, 0x06, 0xe020); + re_mdio_write(sc, 0x06, 0x55e2); + re_mdio_write(sc, 0x06, 0xd600); + re_mdio_write(sc, 0x06, 0xe24a); + PhyRegValue = re_mdio_read(sc, 0x01); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x01, PhyRegValue); + PhyRegValue = re_mdio_read(sc, 0x00); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x00, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0005); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x00); + if (PhyRegValue & BIT_7) + break; + } + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + if (sc->RequiredSecLanDonglePatch) + PhyRegValue &= ~(BIT_2); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + } +} + +static void re_set_phy_mcu_8168evl_1(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + int i; + + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + PhyRegValue= re_mdio_read(sc, 0x15); + PhyRegValue &= ~BIT_12; + re_mdio_write(sc, 0x15, PhyRegValue); + DELAY(200); + DELAY(200); + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + if ((PhyRegValue & BIT_11) == 0x0000) { + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x17, PhyRegValue); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x17); + if (PhyRegValue & BIT_11) + break; + } + } + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue |= BIT_11; + re_mdio_write(sc, 0x17,PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1E, 0x002C); + re_mdio_write(sc, 0x1B, 0x5000); + re_mdio_write(sc, 0x1E, 0x002d); + re_mdio_write(sc, 0x19, 0x0004); + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x1f, 0x0000); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue= re_mdio_read(sc, 0x1E); + if ((PhyRegValue& 0x03FF) == 0x0014) + break; + } + re_mdio_write(sc, 0x1f, 0x0005); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue= re_mdio_read(sc, 0x07); + if ((PhyRegValue& BIT_5) == 0) + break; + } + PhyRegValue = re_mdio_read(sc, 0x07); + if (PhyRegValue & BIT_5) { + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x00a1); + re_mdio_write(sc, 0x17, 0x1000); + re_mdio_write(sc, 0x17, 0x0000); + re_mdio_write(sc, 0x17, 0x2000); + re_mdio_write(sc, 0x1e, 0x002f); + re_mdio_write(sc, 0x18, 0x9bfb); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x07, 0x0000); + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x1f, 0x0000); + } + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + PhyRegValue = re_mdio_read(sc, 0x00); + PhyRegValue &= ~BIT_7; + re_mdio_write(sc, 0x00, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0307); + re_mdio_write(sc, 0x15, 0x0000); + re_mdio_write(sc, 0x19, 0x407d); + re_mdio_write(sc, 0x15, 0x0001); + re_mdio_write(sc, 0x19, 0x440f); + re_mdio_write(sc, 0x15, 0x0002); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0003); + re_mdio_write(sc, 0x19, 0x6c03); + re_mdio_write(sc, 0x15, 0x0004); + re_mdio_write(sc, 0x19, 0xc4d5); + re_mdio_write(sc, 0x15, 0x0005); + re_mdio_write(sc, 0x19, 0x00ff); + re_mdio_write(sc, 0x15, 0x0006); + re_mdio_write(sc, 0x19, 0x74f0); + re_mdio_write(sc, 0x15, 0x0007); + re_mdio_write(sc, 0x19, 0x4880); + re_mdio_write(sc, 0x15, 0x0008); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x0009); + re_mdio_write(sc, 0x19, 0x4800); + re_mdio_write(sc, 0x15, 0x000a); + re_mdio_write(sc, 0x19, 0x5000); + re_mdio_write(sc, 0x15, 0x000b); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x000c); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x000d); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x15, 0x000e); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x000f); + re_mdio_write(sc, 0x19, 0x7010); + re_mdio_write(sc, 0x15, 0x0010); + re_mdio_write(sc, 0x19, 0x6804); + re_mdio_write(sc, 0x15, 0x0011); + re_mdio_write(sc, 0x19, 0x64a0); + re_mdio_write(sc, 0x15, 0x0012); + re_mdio_write(sc, 0x19, 0x63da); + re_mdio_write(sc, 0x15, 0x0013); + re_mdio_write(sc, 0x19, 0x63d8); + re_mdio_write(sc, 0x15, 0x0014); + re_mdio_write(sc, 0x19, 0x6f05); + re_mdio_write(sc, 0x15, 0x0015); + re_mdio_write(sc, 0x19, 0x5420); + re_mdio_write(sc, 0x15, 0x0016); + re_mdio_write(sc, 0x19, 0x58ce); + re_mdio_write(sc, 0x15, 0x0017); + re_mdio_write(sc, 0x19, 0x5cf3); + re_mdio_write(sc, 0x15, 0x0018); + re_mdio_write(sc, 0x19, 0xb600); + re_mdio_write(sc, 0x15, 0x0019); + re_mdio_write(sc, 0x19, 0xc659); + re_mdio_write(sc, 0x15, 0x001a); + re_mdio_write(sc, 0x19, 0x0018); + re_mdio_write(sc, 0x15, 0x001b); + re_mdio_write(sc, 0x19, 0xc403); + re_mdio_write(sc, 0x15, 0x001c); + re_mdio_write(sc, 0x19, 0x0016); + re_mdio_write(sc, 0x15, 0x001d); + re_mdio_write(sc, 0x19, 0xaa05); + re_mdio_write(sc, 0x15, 0x001e); + re_mdio_write(sc, 0x19, 0xc503); + re_mdio_write(sc, 0x15, 0x001f); + re_mdio_write(sc, 0x19, 0x0003); + re_mdio_write(sc, 0x15, 0x0020); + re_mdio_write(sc, 0x19, 0x89f8); + re_mdio_write(sc, 0x15, 0x0021); + re_mdio_write(sc, 0x19, 0x32ae); + re_mdio_write(sc, 0x15, 0x0022); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0023); + re_mdio_write(sc, 0x19, 0x6c03); + re_mdio_write(sc, 0x15, 0x0024); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0025); + re_mdio_write(sc, 0x19, 0x6801); + re_mdio_write(sc, 0x15, 0x0026); + re_mdio_write(sc, 0x19, 0x66a0); + re_mdio_write(sc, 0x15, 0x0027); + re_mdio_write(sc, 0x19, 0xa300); + re_mdio_write(sc, 0x15, 0x0028); + re_mdio_write(sc, 0x19, 0x64a0); + re_mdio_write(sc, 0x15, 0x0029); + re_mdio_write(sc, 0x19, 0x76f0); + re_mdio_write(sc, 0x15, 0x002a); + re_mdio_write(sc, 0x19, 0x7670); + re_mdio_write(sc, 0x15, 0x002b); + re_mdio_write(sc, 0x19, 0x7630); + re_mdio_write(sc, 0x15, 0x002c); + re_mdio_write(sc, 0x19, 0x31a6); + re_mdio_write(sc, 0x15, 0x002d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x002e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x002f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0030); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0031); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0032); + re_mdio_write(sc, 0x19, 0x4801); + re_mdio_write(sc, 0x15, 0x0033); + re_mdio_write(sc, 0x19, 0x6803); + re_mdio_write(sc, 0x15, 0x0034); + re_mdio_write(sc, 0x19, 0x66a1); + re_mdio_write(sc, 0x15, 0x0035); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0036); + re_mdio_write(sc, 0x19, 0x6c03); + re_mdio_write(sc, 0x15, 0x0037); + re_mdio_write(sc, 0x19, 0xa300); + re_mdio_write(sc, 0x15, 0x0038); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x0039); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x003a); + re_mdio_write(sc, 0x19, 0x74f8); + re_mdio_write(sc, 0x15, 0x003b); + re_mdio_write(sc, 0x19, 0x63d0); + re_mdio_write(sc, 0x15, 0x003c); + re_mdio_write(sc, 0x19, 0x7ff0); + re_mdio_write(sc, 0x15, 0x003d); + re_mdio_write(sc, 0x19, 0x77f0); + re_mdio_write(sc, 0x15, 0x003e); + re_mdio_write(sc, 0x19, 0x7ff0); + re_mdio_write(sc, 0x15, 0x003f); + re_mdio_write(sc, 0x19, 0x7750); + re_mdio_write(sc, 0x15, 0x0040); + re_mdio_write(sc, 0x19, 0x63d8); + re_mdio_write(sc, 0x15, 0x0041); + re_mdio_write(sc, 0x19, 0x7cf0); + re_mdio_write(sc, 0x15, 0x0042); + re_mdio_write(sc, 0x19, 0x7708); + re_mdio_write(sc, 0x15, 0x0043); + re_mdio_write(sc, 0x19, 0xa654); + re_mdio_write(sc, 0x15, 0x0044); + re_mdio_write(sc, 0x19, 0x304a); + re_mdio_write(sc, 0x15, 0x0045); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0046); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0047); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0048); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0049); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004a); + re_mdio_write(sc, 0x19, 0x4802); + re_mdio_write(sc, 0x15, 0x004b); + re_mdio_write(sc, 0x19, 0x4003); + re_mdio_write(sc, 0x15, 0x004c); + re_mdio_write(sc, 0x19, 0x4440); + re_mdio_write(sc, 0x15, 0x004d); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x004e); + re_mdio_write(sc, 0x19, 0x6481); + re_mdio_write(sc, 0x15, 0x004f); + re_mdio_write(sc, 0x19, 0x9d00); + re_mdio_write(sc, 0x15, 0x0050); + re_mdio_write(sc, 0x19, 0x63e8); + re_mdio_write(sc, 0x15, 0x0051); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x0052); + re_mdio_write(sc, 0x19, 0x5900); + re_mdio_write(sc, 0x15, 0x0053); + re_mdio_write(sc, 0x19, 0x63f8); + re_mdio_write(sc, 0x15, 0x0054); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x0055); + re_mdio_write(sc, 0x19, 0x3116); + re_mdio_write(sc, 0x15, 0x0056); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0057); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0058); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0059); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x005a); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x005b); + re_mdio_write(sc, 0x19, 0x6c03); + re_mdio_write(sc, 0x15, 0x005c); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x005d); + re_mdio_write(sc, 0x19, 0x6000); + re_mdio_write(sc, 0x15, 0x005e); + re_mdio_write(sc, 0x19, 0x59ce); + re_mdio_write(sc, 0x15, 0x005f); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x0060); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x0061); + re_mdio_write(sc, 0x19, 0x72b0); + re_mdio_write(sc, 0x15, 0x0062); + re_mdio_write(sc, 0x19, 0x400e); + re_mdio_write(sc, 0x15, 0x0063); + re_mdio_write(sc, 0x19, 0x4440); + re_mdio_write(sc, 0x15, 0x0064); + re_mdio_write(sc, 0x19, 0x9d00); + re_mdio_write(sc, 0x15, 0x0065); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x15, 0x0066); + re_mdio_write(sc, 0x19, 0x70b0); + re_mdio_write(sc, 0x15, 0x0067); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0068); + re_mdio_write(sc, 0x19, 0x6008); + re_mdio_write(sc, 0x15, 0x0069); + re_mdio_write(sc, 0x19, 0x7cf0); + re_mdio_write(sc, 0x15, 0x006a); + re_mdio_write(sc, 0x19, 0x7750); + re_mdio_write(sc, 0x15, 0x006b); + re_mdio_write(sc, 0x19, 0x4007); + re_mdio_write(sc, 0x15, 0x006c); + re_mdio_write(sc, 0x19, 0x4500); + re_mdio_write(sc, 0x15, 0x006d); + re_mdio_write(sc, 0x19, 0x4023); + re_mdio_write(sc, 0x15, 0x006e); + re_mdio_write(sc, 0x19, 0x4580); + re_mdio_write(sc, 0x15, 0x006f); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0070); + re_mdio_write(sc, 0x19, 0xcd78); + re_mdio_write(sc, 0x15, 0x0071); + re_mdio_write(sc, 0x19, 0x0003); + re_mdio_write(sc, 0x15, 0x0072); + re_mdio_write(sc, 0x19, 0xbe02); + re_mdio_write(sc, 0x15, 0x0073); + re_mdio_write(sc, 0x19, 0x3070); + re_mdio_write(sc, 0x15, 0x0074); + re_mdio_write(sc, 0x19, 0x7cf0); + re_mdio_write(sc, 0x15, 0x0075); + re_mdio_write(sc, 0x19, 0x77f0); + re_mdio_write(sc, 0x15, 0x0076); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x0077); + re_mdio_write(sc, 0x19, 0x4007); + re_mdio_write(sc, 0x15, 0x0078); + re_mdio_write(sc, 0x19, 0x4500); + re_mdio_write(sc, 0x15, 0x0079); + re_mdio_write(sc, 0x19, 0x4023); + re_mdio_write(sc, 0x15, 0x007a); + re_mdio_write(sc, 0x19, 0x4580); + re_mdio_write(sc, 0x15, 0x007b); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x007c); + re_mdio_write(sc, 0x19, 0xce80); + re_mdio_write(sc, 0x15, 0x007d); + re_mdio_write(sc, 0x19, 0x0004); + re_mdio_write(sc, 0x15, 0x007e); + re_mdio_write(sc, 0x19, 0xce80); + re_mdio_write(sc, 0x15, 0x007f); + re_mdio_write(sc, 0x19, 0x0002); + re_mdio_write(sc, 0x15, 0x0080); + re_mdio_write(sc, 0x19, 0x307c); + re_mdio_write(sc, 0x15, 0x0081); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x0082); + re_mdio_write(sc, 0x19, 0x480f); + re_mdio_write(sc, 0x15, 0x0083); + re_mdio_write(sc, 0x19, 0x6802); + re_mdio_write(sc, 0x15, 0x0084); + re_mdio_write(sc, 0x19, 0x6680); + re_mdio_write(sc, 0x15, 0x0085); + re_mdio_write(sc, 0x19, 0x7c10); + re_mdio_write(sc, 0x15, 0x0086); + re_mdio_write(sc, 0x19, 0x6010); + re_mdio_write(sc, 0x15, 0x0087); + re_mdio_write(sc, 0x19, 0x400a); + re_mdio_write(sc, 0x15, 0x0088); + re_mdio_write(sc, 0x19, 0x4580); + re_mdio_write(sc, 0x15, 0x0089); + re_mdio_write(sc, 0x19, 0x9e00); + re_mdio_write(sc, 0x15, 0x008a); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x008b); + re_mdio_write(sc, 0x19, 0x5800); + re_mdio_write(sc, 0x15, 0x008c); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x008d); + re_mdio_write(sc, 0x19, 0x63d8); + re_mdio_write(sc, 0x15, 0x008e); + re_mdio_write(sc, 0x19, 0x66a0); + re_mdio_write(sc, 0x15, 0x008f); + re_mdio_write(sc, 0x19, 0x8300); + re_mdio_write(sc, 0x15, 0x0090); + re_mdio_write(sc, 0x19, 0x7ff0); + re_mdio_write(sc, 0x15, 0x0091); + re_mdio_write(sc, 0x19, 0x74f0); + re_mdio_write(sc, 0x15, 0x0092); + re_mdio_write(sc, 0x19, 0x3006); + re_mdio_write(sc, 0x15, 0x0093); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0094); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0095); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0096); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0097); + re_mdio_write(sc, 0x19, 0x4803); + re_mdio_write(sc, 0x15, 0x0098); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0099); + re_mdio_write(sc, 0x19, 0x6c03); + re_mdio_write(sc, 0x15, 0x009a); + re_mdio_write(sc, 0x19, 0xa203); + re_mdio_write(sc, 0x15, 0x009b); + re_mdio_write(sc, 0x19, 0x64b1); + re_mdio_write(sc, 0x15, 0x009c); + re_mdio_write(sc, 0x19, 0x309e); + re_mdio_write(sc, 0x15, 0x009d); + re_mdio_write(sc, 0x19, 0x64b3); + re_mdio_write(sc, 0x15, 0x009e); + re_mdio_write(sc, 0x19, 0x4030); + re_mdio_write(sc, 0x15, 0x009f); + re_mdio_write(sc, 0x19, 0x440e); + re_mdio_write(sc, 0x15, 0x00a0); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x00a1); + re_mdio_write(sc, 0x19, 0x4419); + re_mdio_write(sc, 0x15, 0x00a2); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x00a3); + re_mdio_write(sc, 0x19, 0xc520); + re_mdio_write(sc, 0x15, 0x00a4); + re_mdio_write(sc, 0x19, 0x000b); + re_mdio_write(sc, 0x15, 0x00a5); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x00a6); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x00a7); + re_mdio_write(sc, 0x19, 0x58a4); + re_mdio_write(sc, 0x15, 0x00a8); + re_mdio_write(sc, 0x19, 0x63da); + re_mdio_write(sc, 0x15, 0x00a9); + re_mdio_write(sc, 0x19, 0x5cb0); + re_mdio_write(sc, 0x15, 0x00aa); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x00ab); + re_mdio_write(sc, 0x19, 0x72b0); + re_mdio_write(sc, 0x15, 0x00ac); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x15, 0x00ad); + re_mdio_write(sc, 0x19, 0x70b0); + re_mdio_write(sc, 0x15, 0x00ae); + re_mdio_write(sc, 0x19, 0x30b8); + re_mdio_write(sc, 0x15, 0x00AF); + re_mdio_write(sc, 0x19, 0x4060); + re_mdio_write(sc, 0x15, 0x00B0); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x00B1); + re_mdio_write(sc, 0x19, 0x7e00); + re_mdio_write(sc, 0x15, 0x00B2); + re_mdio_write(sc, 0x19, 0x72B0); + re_mdio_write(sc, 0x15, 0x00B3); + re_mdio_write(sc, 0x19, 0x7F00); + re_mdio_write(sc, 0x15, 0x00B4); + re_mdio_write(sc, 0x19, 0x73B0); + re_mdio_write(sc, 0x15, 0x00b5); + re_mdio_write(sc, 0x19, 0x58a0); + re_mdio_write(sc, 0x15, 0x00b6); + re_mdio_write(sc, 0x19, 0x63d2); + re_mdio_write(sc, 0x15, 0x00b7); + re_mdio_write(sc, 0x19, 0x5c00); + re_mdio_write(sc, 0x15, 0x00b8); + re_mdio_write(sc, 0x19, 0x5780); + re_mdio_write(sc, 0x15, 0x00b9); + re_mdio_write(sc, 0x19, 0xb60d); + re_mdio_write(sc, 0x15, 0x00ba); + re_mdio_write(sc, 0x19, 0x9bff); + re_mdio_write(sc, 0x15, 0x00bb); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x00bc); + re_mdio_write(sc, 0x19, 0x6001); + re_mdio_write(sc, 0x15, 0x00bd); + re_mdio_write(sc, 0x19, 0xc020); + re_mdio_write(sc, 0x15, 0x00be); + re_mdio_write(sc, 0x19, 0x002b); + re_mdio_write(sc, 0x15, 0x00bf); + re_mdio_write(sc, 0x19, 0xc137); + re_mdio_write(sc, 0x15, 0x00c0); + re_mdio_write(sc, 0x19, 0x0006); + re_mdio_write(sc, 0x15, 0x00c1); + re_mdio_write(sc, 0x19, 0x9af8); + re_mdio_write(sc, 0x15, 0x00c2); + re_mdio_write(sc, 0x19, 0x30c6); + re_mdio_write(sc, 0x15, 0x00c3); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00c4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00c5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00c6); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x00c7); + re_mdio_write(sc, 0x19, 0x70b0); + re_mdio_write(sc, 0x15, 0x00c8); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x00c9); + re_mdio_write(sc, 0x19, 0x4804); + re_mdio_write(sc, 0x15, 0x00ca); + re_mdio_write(sc, 0x19, 0x7c80); + re_mdio_write(sc, 0x15, 0x00cb); + re_mdio_write(sc, 0x19, 0x5c80); + re_mdio_write(sc, 0x15, 0x00cc); + re_mdio_write(sc, 0x19, 0x4010); + re_mdio_write(sc, 0x15, 0x00cd); + re_mdio_write(sc, 0x19, 0x4415); + re_mdio_write(sc, 0x15, 0x00ce); + re_mdio_write(sc, 0x19, 0x9b00); + re_mdio_write(sc, 0x15, 0x00cf); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x15, 0x00d0); + re_mdio_write(sc, 0x19, 0x70b0); + re_mdio_write(sc, 0x15, 0x00d1); + re_mdio_write(sc, 0x19, 0x3177); + re_mdio_write(sc, 0x15, 0x00d2); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00d3); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00d4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00d5); + re_mdio_write(sc, 0x19, 0x4808); + re_mdio_write(sc, 0x15, 0x00d6); + re_mdio_write(sc, 0x19, 0x4007); + re_mdio_write(sc, 0x15, 0x00d7); + re_mdio_write(sc, 0x19, 0x4420); + re_mdio_write(sc, 0x15, 0x00d8); + re_mdio_write(sc, 0x19, 0x63d8); + re_mdio_write(sc, 0x15, 0x00d9); + re_mdio_write(sc, 0x19, 0xb608); + re_mdio_write(sc, 0x15, 0x00da); + re_mdio_write(sc, 0x19, 0xbcbd); + re_mdio_write(sc, 0x15, 0x00db); + re_mdio_write(sc, 0x19, 0xc60b); + re_mdio_write(sc, 0x15, 0x00dc); + re_mdio_write(sc, 0x19, 0x00fd); + re_mdio_write(sc, 0x15, 0x00dd); + re_mdio_write(sc, 0x19, 0x30e1); + re_mdio_write(sc, 0x15, 0x00de); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00df); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00e0); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00e1); + re_mdio_write(sc, 0x19, 0x4809); + re_mdio_write(sc, 0x15, 0x00e2); + re_mdio_write(sc, 0x19, 0x7e40); + re_mdio_write(sc, 0x15, 0x00e3); + re_mdio_write(sc, 0x19, 0x5a40); + re_mdio_write(sc, 0x15, 0x00e4); + re_mdio_write(sc, 0x19, 0x305a); + re_mdio_write(sc, 0x15, 0x00e5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00e6); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00e7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00e8); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00e9); + re_mdio_write(sc, 0x19, 0x480a); + re_mdio_write(sc, 0x15, 0x00ea); + re_mdio_write(sc, 0x19, 0x5820); + re_mdio_write(sc, 0x15, 0x00eb); + re_mdio_write(sc, 0x19, 0x6c03); + re_mdio_write(sc, 0x15, 0x00ec); + re_mdio_write(sc, 0x19, 0xb60a); + re_mdio_write(sc, 0x15, 0x00ed); + re_mdio_write(sc, 0x19, 0xda07); + re_mdio_write(sc, 0x15, 0x00ee); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x00ef); + re_mdio_write(sc, 0x19, 0xc60b); + re_mdio_write(sc, 0x15, 0x00f0); + re_mdio_write(sc, 0x19, 0x00fc); + re_mdio_write(sc, 0x15, 0x00f1); + re_mdio_write(sc, 0x19, 0x30f6); + re_mdio_write(sc, 0x15, 0x00f2); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00f3); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00f4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00f5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00f6); + re_mdio_write(sc, 0x19, 0x4408); + re_mdio_write(sc, 0x15, 0x00f7); + re_mdio_write(sc, 0x19, 0x480b); + re_mdio_write(sc, 0x15, 0x00f8); + re_mdio_write(sc, 0x19, 0x6f03); + re_mdio_write(sc, 0x15, 0x00f9); + re_mdio_write(sc, 0x19, 0x405f); + re_mdio_write(sc, 0x15, 0x00fa); + re_mdio_write(sc, 0x19, 0x4448); + re_mdio_write(sc, 0x15, 0x00fb); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x00fc); + re_mdio_write(sc, 0x19, 0x4468); + re_mdio_write(sc, 0x15, 0x00fd); + re_mdio_write(sc, 0x19, 0x9c03); + re_mdio_write(sc, 0x15, 0x00fe); + re_mdio_write(sc, 0x19, 0x6f07); + re_mdio_write(sc, 0x15, 0x00ff); + re_mdio_write(sc, 0x19, 0x58a0); + re_mdio_write(sc, 0x15, 0x0100); + re_mdio_write(sc, 0x19, 0xd6d1); + re_mdio_write(sc, 0x15, 0x0101); + re_mdio_write(sc, 0x19, 0x0004); + re_mdio_write(sc, 0x15, 0x0102); + re_mdio_write(sc, 0x19, 0xc137); + re_mdio_write(sc, 0x15, 0x0103); + re_mdio_write(sc, 0x19, 0x0002); + re_mdio_write(sc, 0x15, 0x0104); + re_mdio_write(sc, 0x19, 0xa0e5); + re_mdio_write(sc, 0x15, 0x0105); + re_mdio_write(sc, 0x19, 0x9df8); + re_mdio_write(sc, 0x15, 0x0106); + re_mdio_write(sc, 0x19, 0x30c6); + re_mdio_write(sc, 0x15, 0x0107); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0108); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0109); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x010a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x010b); + re_mdio_write(sc, 0x19, 0x4808); + re_mdio_write(sc, 0x15, 0x010c); + re_mdio_write(sc, 0x19, 0xc32d); + re_mdio_write(sc, 0x15, 0x010d); + re_mdio_write(sc, 0x19, 0x0003); + re_mdio_write(sc, 0x15, 0x010e); + re_mdio_write(sc, 0x19, 0xc8b3); + re_mdio_write(sc, 0x15, 0x010f); + re_mdio_write(sc, 0x19, 0x00fc); + re_mdio_write(sc, 0x15, 0x0110); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x0111); + re_mdio_write(sc, 0x19, 0x3116); + re_mdio_write(sc, 0x15, 0x0112); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0113); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0114); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0115); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0116); + re_mdio_write(sc, 0x19, 0x4803); + re_mdio_write(sc, 0x15, 0x0117); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0118); + re_mdio_write(sc, 0x19, 0x6c02); + re_mdio_write(sc, 0x15, 0x0119); + re_mdio_write(sc, 0x19, 0x7c04); + re_mdio_write(sc, 0x15, 0x011a); + re_mdio_write(sc, 0x19, 0x6000); + re_mdio_write(sc, 0x15, 0x011b); + re_mdio_write(sc, 0x19, 0x5cf7); + re_mdio_write(sc, 0x15, 0x011c); + re_mdio_write(sc, 0x19, 0x7c2a); + re_mdio_write(sc, 0x15, 0x011d); + re_mdio_write(sc, 0x19, 0x5800); + re_mdio_write(sc, 0x15, 0x011e); + re_mdio_write(sc, 0x19, 0x5400); + re_mdio_write(sc, 0x15, 0x011f); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0120); + re_mdio_write(sc, 0x19, 0x74f0); + re_mdio_write(sc, 0x15, 0x0121); + re_mdio_write(sc, 0x19, 0x4019); + re_mdio_write(sc, 0x15, 0x0122); + re_mdio_write(sc, 0x19, 0x440d); + re_mdio_write(sc, 0x15, 0x0123); + re_mdio_write(sc, 0x19, 0xb6c1); + re_mdio_write(sc, 0x15, 0x0124); + re_mdio_write(sc, 0x19, 0xc05b); + re_mdio_write(sc, 0x15, 0x0125); + re_mdio_write(sc, 0x19, 0x00bf); + re_mdio_write(sc, 0x15, 0x0126); + re_mdio_write(sc, 0x19, 0xc025); + re_mdio_write(sc, 0x15, 0x0127); + re_mdio_write(sc, 0x19, 0x00bd); + re_mdio_write(sc, 0x15, 0x0128); + re_mdio_write(sc, 0x19, 0xc603); + re_mdio_write(sc, 0x15, 0x0129); + re_mdio_write(sc, 0x19, 0x00bb); + re_mdio_write(sc, 0x15, 0x012a); + re_mdio_write(sc, 0x19, 0x8805); + re_mdio_write(sc, 0x15, 0x012b); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x012c); + re_mdio_write(sc, 0x19, 0x4001); + re_mdio_write(sc, 0x15, 0x012d); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x012e); + re_mdio_write(sc, 0x19, 0xa3dd); + re_mdio_write(sc, 0x15, 0x012f); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0130); + re_mdio_write(sc, 0x19, 0x6c03); + re_mdio_write(sc, 0x15, 0x0131); + re_mdio_write(sc, 0x19, 0x8407); + re_mdio_write(sc, 0x15, 0x0132); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0133); + re_mdio_write(sc, 0x19, 0x6c02); + re_mdio_write(sc, 0x15, 0x0134); + re_mdio_write(sc, 0x19, 0xd9b8); + re_mdio_write(sc, 0x15, 0x0135); + re_mdio_write(sc, 0x19, 0x0003); + re_mdio_write(sc, 0x15, 0x0136); + re_mdio_write(sc, 0x19, 0xc240); + re_mdio_write(sc, 0x15, 0x0137); + re_mdio_write(sc, 0x19, 0x0015); + re_mdio_write(sc, 0x15, 0x0138); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0139); + re_mdio_write(sc, 0x19, 0x6c02); + re_mdio_write(sc, 0x15, 0x013a); + re_mdio_write(sc, 0x19, 0x9ae9); + re_mdio_write(sc, 0x15, 0x013b); + re_mdio_write(sc, 0x19, 0x3140); + re_mdio_write(sc, 0x15, 0x013c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x013d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x013e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x013f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0140); + re_mdio_write(sc, 0x19, 0x4807); + re_mdio_write(sc, 0x15, 0x0141); + re_mdio_write(sc, 0x19, 0x4004); + re_mdio_write(sc, 0x15, 0x0142); + re_mdio_write(sc, 0x19, 0x4410); + re_mdio_write(sc, 0x15, 0x0143); + re_mdio_write(sc, 0x19, 0x7c0c); + re_mdio_write(sc, 0x15, 0x0144); + re_mdio_write(sc, 0x19, 0x600c); + re_mdio_write(sc, 0x15, 0x0145); + re_mdio_write(sc, 0x19, 0x9b00); + re_mdio_write(sc, 0x15, 0x0146); + re_mdio_write(sc, 0x19, 0xa68f); + re_mdio_write(sc, 0x15, 0x0147); + re_mdio_write(sc, 0x19, 0x3116); + re_mdio_write(sc, 0x15, 0x0148); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0149); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x014a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x014b); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x014c); + re_mdio_write(sc, 0x19, 0x4804); + re_mdio_write(sc, 0x15, 0x014d); + re_mdio_write(sc, 0x19, 0x54c0); + re_mdio_write(sc, 0x15, 0x014e); + re_mdio_write(sc, 0x19, 0xb703); + re_mdio_write(sc, 0x15, 0x014f); + re_mdio_write(sc, 0x19, 0x5cff); + re_mdio_write(sc, 0x15, 0x0150); + re_mdio_write(sc, 0x19, 0x315f); + re_mdio_write(sc, 0x15, 0x0151); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0152); + re_mdio_write(sc, 0x19, 0x74f8); + re_mdio_write(sc, 0x15, 0x0153); + re_mdio_write(sc, 0x19, 0x6421); + re_mdio_write(sc, 0x15, 0x0154); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0155); + re_mdio_write(sc, 0x19, 0x6000); + re_mdio_write(sc, 0x15, 0x0156); + re_mdio_write(sc, 0x19, 0x4003); + re_mdio_write(sc, 0x15, 0x0157); + re_mdio_write(sc, 0x19, 0x4418); + re_mdio_write(sc, 0x15, 0x0158); + re_mdio_write(sc, 0x19, 0x9b00); + re_mdio_write(sc, 0x15, 0x0159); + re_mdio_write(sc, 0x19, 0x6461); + re_mdio_write(sc, 0x15, 0x015a); + re_mdio_write(sc, 0x19, 0x64e1); + re_mdio_write(sc, 0x15, 0x015b); + re_mdio_write(sc, 0x19, 0x7c20); + re_mdio_write(sc, 0x15, 0x015c); + re_mdio_write(sc, 0x19, 0x5820); + re_mdio_write(sc, 0x15, 0x015d); + re_mdio_write(sc, 0x19, 0x5ccf); + re_mdio_write(sc, 0x15, 0x015e); + re_mdio_write(sc, 0x19, 0x7050); + re_mdio_write(sc, 0x15, 0x015f); + re_mdio_write(sc, 0x19, 0xd9b8); + re_mdio_write(sc, 0x15, 0x0160); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x0161); + re_mdio_write(sc, 0x19, 0xdab1); + re_mdio_write(sc, 0x15, 0x0162); + re_mdio_write(sc, 0x19, 0x0015); + re_mdio_write(sc, 0x15, 0x0163); + re_mdio_write(sc, 0x19, 0xc244); + re_mdio_write(sc, 0x15, 0x0164); + re_mdio_write(sc, 0x19, 0x0013); + re_mdio_write(sc, 0x15, 0x0165); + re_mdio_write(sc, 0x19, 0xc021); + re_mdio_write(sc, 0x15, 0x0166); + re_mdio_write(sc, 0x19, 0x00f9); + re_mdio_write(sc, 0x15, 0x0167); + re_mdio_write(sc, 0x19, 0x3177); + re_mdio_write(sc, 0x15, 0x0168); + re_mdio_write(sc, 0x19, 0x5cf7); + re_mdio_write(sc, 0x15, 0x0169); + re_mdio_write(sc, 0x19, 0x4010); + re_mdio_write(sc, 0x15, 0x016a); + re_mdio_write(sc, 0x19, 0x4428); + re_mdio_write(sc, 0x15, 0x016b); + re_mdio_write(sc, 0x19, 0x9c00); + re_mdio_write(sc, 0x15, 0x016c); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x016d); + re_mdio_write(sc, 0x19, 0x6008); + re_mdio_write(sc, 0x15, 0x016e); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x016f); + re_mdio_write(sc, 0x19, 0x74f0); + re_mdio_write(sc, 0x15, 0x0170); + re_mdio_write(sc, 0x19, 0x6461); + re_mdio_write(sc, 0x15, 0x0171); + re_mdio_write(sc, 0x19, 0x6421); + re_mdio_write(sc, 0x15, 0x0172); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x0173); + re_mdio_write(sc, 0x19, 0x3116); + re_mdio_write(sc, 0x15, 0x0174); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0175); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0176); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0177); + re_mdio_write(sc, 0x19, 0x4805); + re_mdio_write(sc, 0x15, 0x0178); + re_mdio_write(sc, 0x19, 0xa103); + re_mdio_write(sc, 0x15, 0x0179); + re_mdio_write(sc, 0x19, 0x7c02); + re_mdio_write(sc, 0x15, 0x017a); + re_mdio_write(sc, 0x19, 0x6002); + re_mdio_write(sc, 0x15, 0x017b); + re_mdio_write(sc, 0x19, 0x7e00); + re_mdio_write(sc, 0x15, 0x017c); + re_mdio_write(sc, 0x19, 0x5400); + re_mdio_write(sc, 0x15, 0x017d); + re_mdio_write(sc, 0x19, 0x7c6b); + re_mdio_write(sc, 0x15, 0x017e); + re_mdio_write(sc, 0x19, 0x5c63); + re_mdio_write(sc, 0x15, 0x017f); + re_mdio_write(sc, 0x19, 0x407d); + re_mdio_write(sc, 0x15, 0x0180); + re_mdio_write(sc, 0x19, 0xa602); + re_mdio_write(sc, 0x15, 0x0181); + re_mdio_write(sc, 0x19, 0x4001); + re_mdio_write(sc, 0x15, 0x0182); + re_mdio_write(sc, 0x19, 0x4420); + re_mdio_write(sc, 0x15, 0x0183); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x0184); + re_mdio_write(sc, 0x19, 0x44a1); + re_mdio_write(sc, 0x15, 0x0185); + re_mdio_write(sc, 0x19, 0xd6e0); + re_mdio_write(sc, 0x15, 0x0186); + re_mdio_write(sc, 0x19, 0x0009); + re_mdio_write(sc, 0x15, 0x0187); + re_mdio_write(sc, 0x19, 0x9efe); + re_mdio_write(sc, 0x15, 0x0188); + re_mdio_write(sc, 0x19, 0x7c02); + re_mdio_write(sc, 0x15, 0x0189); + re_mdio_write(sc, 0x19, 0x6000); + re_mdio_write(sc, 0x15, 0x018a); + re_mdio_write(sc, 0x19, 0x9c00); + re_mdio_write(sc, 0x15, 0x018b); + re_mdio_write(sc, 0x19, 0x318f); + re_mdio_write(sc, 0x15, 0x018c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x018d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x018e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x018f); + re_mdio_write(sc, 0x19, 0x4806); + re_mdio_write(sc, 0x15, 0x0190); + re_mdio_write(sc, 0x19, 0x7c10); + re_mdio_write(sc, 0x15, 0x0191); + re_mdio_write(sc, 0x19, 0x5c10); + re_mdio_write(sc, 0x15, 0x0192); + re_mdio_write(sc, 0x19, 0x40fa); + re_mdio_write(sc, 0x15, 0x0193); + re_mdio_write(sc, 0x19, 0xa602); + re_mdio_write(sc, 0x15, 0x0194); + re_mdio_write(sc, 0x19, 0x4010); + re_mdio_write(sc, 0x15, 0x0195); + re_mdio_write(sc, 0x19, 0x4440); + re_mdio_write(sc, 0x15, 0x0196); + re_mdio_write(sc, 0x19, 0x9d00); + re_mdio_write(sc, 0x15, 0x0197); + re_mdio_write(sc, 0x19, 0x7c80); + re_mdio_write(sc, 0x15, 0x0198); + re_mdio_write(sc, 0x19, 0x6400); + re_mdio_write(sc, 0x15, 0x0199); + re_mdio_write(sc, 0x19, 0x4003); + re_mdio_write(sc, 0x15, 0x019a); + re_mdio_write(sc, 0x19, 0x4540); + re_mdio_write(sc, 0x15, 0x019b); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x019c); + re_mdio_write(sc, 0x19, 0x6008); + re_mdio_write(sc, 0x15, 0x019d); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x019e); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x019f); + re_mdio_write(sc, 0x19, 0x6400); + re_mdio_write(sc, 0x15, 0x01a0); + re_mdio_write(sc, 0x19, 0x7c80); + re_mdio_write(sc, 0x15, 0x01a1); + re_mdio_write(sc, 0x19, 0x6480); + re_mdio_write(sc, 0x15, 0x01a2); + re_mdio_write(sc, 0x19, 0x3140); + re_mdio_write(sc, 0x15, 0x01a3); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01a4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01a5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01a6); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x01a7); + re_mdio_write(sc, 0x19, 0x7c0b); + re_mdio_write(sc, 0x15, 0x01a8); + re_mdio_write(sc, 0x19, 0x6c01); + re_mdio_write(sc, 0x15, 0x01a9); + re_mdio_write(sc, 0x19, 0x64a8); + re_mdio_write(sc, 0x15, 0x01aa); + re_mdio_write(sc, 0x19, 0x6800); + re_mdio_write(sc, 0x15, 0x01ab); + re_mdio_write(sc, 0x19, 0x5cf0); + re_mdio_write(sc, 0x15, 0x01ac); + re_mdio_write(sc, 0x19, 0x588f); + re_mdio_write(sc, 0x15, 0x01ad); + re_mdio_write(sc, 0x19, 0xb628); + re_mdio_write(sc, 0x15, 0x01ae); + re_mdio_write(sc, 0x19, 0xc053); + re_mdio_write(sc, 0x15, 0x01af); + re_mdio_write(sc, 0x19, 0x0026); + re_mdio_write(sc, 0x15, 0x01b0); + re_mdio_write(sc, 0x19, 0xc02d); + re_mdio_write(sc, 0x15, 0x01b1); + re_mdio_write(sc, 0x19, 0x0024); + re_mdio_write(sc, 0x15, 0x01b2); + re_mdio_write(sc, 0x19, 0xc603); + re_mdio_write(sc, 0x15, 0x01b3); + re_mdio_write(sc, 0x19, 0x0022); + re_mdio_write(sc, 0x15, 0x01b4); + re_mdio_write(sc, 0x19, 0x8cf9); + re_mdio_write(sc, 0x15, 0x01b5); + re_mdio_write(sc, 0x19, 0x31ba); + re_mdio_write(sc, 0x15, 0x01b6); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01b7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01b8); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01b9); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01ba); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x01bb); + re_mdio_write(sc, 0x19, 0x5420); + re_mdio_write(sc, 0x15, 0x01bc); + re_mdio_write(sc, 0x19, 0x4811); + re_mdio_write(sc, 0x15, 0x01bd); + re_mdio_write(sc, 0x19, 0x5000); + re_mdio_write(sc, 0x15, 0x01be); + re_mdio_write(sc, 0x19, 0x4801); + re_mdio_write(sc, 0x15, 0x01bf); + re_mdio_write(sc, 0x19, 0x6800); + re_mdio_write(sc, 0x15, 0x01c0); + re_mdio_write(sc, 0x19, 0x31f5); + re_mdio_write(sc, 0x15, 0x01c1); + re_mdio_write(sc, 0x19, 0xb614); + re_mdio_write(sc, 0x15, 0x01c2); + re_mdio_write(sc, 0x19, 0x8ce4); + re_mdio_write(sc, 0x15, 0x01c3); + re_mdio_write(sc, 0x19, 0xb30c); + re_mdio_write(sc, 0x15, 0x01c4); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x01c5); + re_mdio_write(sc, 0x19, 0x6c02); + re_mdio_write(sc, 0x15, 0x01c6); + re_mdio_write(sc, 0x19, 0x8206); + re_mdio_write(sc, 0x15, 0x01c7); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x01c8); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x01c9); + re_mdio_write(sc, 0x19, 0x7c04); + re_mdio_write(sc, 0x15, 0x01ca); + re_mdio_write(sc, 0x19, 0x7404); + re_mdio_write(sc, 0x15, 0x01cb); + re_mdio_write(sc, 0x19, 0x31c0); + re_mdio_write(sc, 0x15, 0x01cc); + re_mdio_write(sc, 0x19, 0x7c04); + re_mdio_write(sc, 0x15, 0x01cd); + re_mdio_write(sc, 0x19, 0x7400); + re_mdio_write(sc, 0x15, 0x01ce); + re_mdio_write(sc, 0x19, 0x31c0); + re_mdio_write(sc, 0x15, 0x01cf); + re_mdio_write(sc, 0x19, 0x8df1); + re_mdio_write(sc, 0x15, 0x01d0); + re_mdio_write(sc, 0x19, 0x3248); + re_mdio_write(sc, 0x15, 0x01d1); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01d2); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01d3); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01d4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01d5); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x01d6); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x01d7); + re_mdio_write(sc, 0x19, 0x6c03); + re_mdio_write(sc, 0x15, 0x01d8); + re_mdio_write(sc, 0x19, 0x7670); + re_mdio_write(sc, 0x15, 0x01d9); + re_mdio_write(sc, 0x19, 0x4023); + re_mdio_write(sc, 0x15, 0x01da); + re_mdio_write(sc, 0x19, 0x4500); + re_mdio_write(sc, 0x15, 0x01db); + re_mdio_write(sc, 0x19, 0x4069); + re_mdio_write(sc, 0x15, 0x01dc); + re_mdio_write(sc, 0x19, 0x4580); + re_mdio_write(sc, 0x15, 0x01dd); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x01de); + re_mdio_write(sc, 0x19, 0xcff5); + re_mdio_write(sc, 0x15, 0x01df); + re_mdio_write(sc, 0x19, 0x00ff); + re_mdio_write(sc, 0x15, 0x01e0); + re_mdio_write(sc, 0x19, 0x76f0); + re_mdio_write(sc, 0x15, 0x01e1); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x01e2); + re_mdio_write(sc, 0x19, 0x4023); + re_mdio_write(sc, 0x15, 0x01e3); + re_mdio_write(sc, 0x19, 0x4500); + re_mdio_write(sc, 0x15, 0x01e4); + re_mdio_write(sc, 0x19, 0x4069); + re_mdio_write(sc, 0x15, 0x01e5); + re_mdio_write(sc, 0x19, 0x4580); + re_mdio_write(sc, 0x15, 0x01e6); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x01e7); + re_mdio_write(sc, 0x19, 0xd0f5); + re_mdio_write(sc, 0x15, 0x01e8); + re_mdio_write(sc, 0x19, 0x00ff); + re_mdio_write(sc, 0x15, 0x01e9); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x01ea); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x01eb); + re_mdio_write(sc, 0x19, 0x6800); + re_mdio_write(sc, 0x15, 0x01ec); + re_mdio_write(sc, 0x19, 0x66a0); + re_mdio_write(sc, 0x15, 0x01ed); + re_mdio_write(sc, 0x19, 0x8300); + re_mdio_write(sc, 0x15, 0x01ee); + re_mdio_write(sc, 0x19, 0x74f0); + re_mdio_write(sc, 0x15, 0x01ef); + re_mdio_write(sc, 0x19, 0x3006); + re_mdio_write(sc, 0x15, 0x01f0); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01f1); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01f2); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01f3); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01f4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01f5); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x01f6); + re_mdio_write(sc, 0x19, 0x6c02); + re_mdio_write(sc, 0x15, 0x01f7); + re_mdio_write(sc, 0x19, 0x409d); + re_mdio_write(sc, 0x15, 0x01f8); + re_mdio_write(sc, 0x19, 0x7c87); + re_mdio_write(sc, 0x15, 0x01f9); + re_mdio_write(sc, 0x19, 0xae14); + re_mdio_write(sc, 0x15, 0x01fa); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x01fb); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x01fc); + re_mdio_write(sc, 0x19, 0x6800); + re_mdio_write(sc, 0x15, 0x01fd); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x01fe); + re_mdio_write(sc, 0x19, 0x980e); + re_mdio_write(sc, 0x15, 0x01ff); + re_mdio_write(sc, 0x19, 0x930c); + re_mdio_write(sc, 0x15, 0x0200); + re_mdio_write(sc, 0x19, 0x9206); + re_mdio_write(sc, 0x15, 0x0201); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0202); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0203); + re_mdio_write(sc, 0x19, 0x588f); + re_mdio_write(sc, 0x15, 0x0204); + re_mdio_write(sc, 0x19, 0x5520); + re_mdio_write(sc, 0x15, 0x0205); + re_mdio_write(sc, 0x19, 0x320c); + re_mdio_write(sc, 0x15, 0x0206); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x15, 0x0207); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0208); + re_mdio_write(sc, 0x19, 0x588d); + re_mdio_write(sc, 0x15, 0x0209); + re_mdio_write(sc, 0x19, 0x5500); + re_mdio_write(sc, 0x15, 0x020a); + re_mdio_write(sc, 0x19, 0x320c); + re_mdio_write(sc, 0x15, 0x020b); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x020c); + re_mdio_write(sc, 0x19, 0x3220); + re_mdio_write(sc, 0x15, 0x020d); + re_mdio_write(sc, 0x19, 0x4480); + re_mdio_write(sc, 0x15, 0x020e); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x020f); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0210); + re_mdio_write(sc, 0x19, 0x6840); + re_mdio_write(sc, 0x15, 0x0211); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x0212); + re_mdio_write(sc, 0x19, 0x980e); + re_mdio_write(sc, 0x15, 0x0213); + re_mdio_write(sc, 0x19, 0x930c); + re_mdio_write(sc, 0x15, 0x0214); + re_mdio_write(sc, 0x19, 0x9206); + re_mdio_write(sc, 0x15, 0x0215); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x15, 0x0216); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0217); + re_mdio_write(sc, 0x19, 0x588f); + re_mdio_write(sc, 0x15, 0x0218); + re_mdio_write(sc, 0x19, 0x5520); + re_mdio_write(sc, 0x15, 0x0219); + re_mdio_write(sc, 0x19, 0x3220); + re_mdio_write(sc, 0x15, 0x021a); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x021b); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x021c); + re_mdio_write(sc, 0x19, 0x588d); + re_mdio_write(sc, 0x15, 0x021d); + re_mdio_write(sc, 0x19, 0x5540); + re_mdio_write(sc, 0x15, 0x021e); + re_mdio_write(sc, 0x19, 0x3220); + re_mdio_write(sc, 0x15, 0x021f); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x15, 0x0220); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0221); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0222); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x0223); + re_mdio_write(sc, 0x19, 0x3231); + re_mdio_write(sc, 0x15, 0x0224); + re_mdio_write(sc, 0x19, 0xab06); + re_mdio_write(sc, 0x15, 0x0225); + re_mdio_write(sc, 0x19, 0xbf08); + re_mdio_write(sc, 0x15, 0x0226); + re_mdio_write(sc, 0x19, 0x4076); + re_mdio_write(sc, 0x15, 0x0227); + re_mdio_write(sc, 0x19, 0x7d07); + re_mdio_write(sc, 0x15, 0x0228); + re_mdio_write(sc, 0x19, 0x4502); + re_mdio_write(sc, 0x15, 0x0229); + re_mdio_write(sc, 0x19, 0x3231); + re_mdio_write(sc, 0x15, 0x022a); + re_mdio_write(sc, 0x19, 0x7d80); + re_mdio_write(sc, 0x15, 0x022b); + re_mdio_write(sc, 0x19, 0x5180); + re_mdio_write(sc, 0x15, 0x022c); + re_mdio_write(sc, 0x19, 0x322f); + re_mdio_write(sc, 0x15, 0x022d); + re_mdio_write(sc, 0x19, 0x7d80); + re_mdio_write(sc, 0x15, 0x022e); + re_mdio_write(sc, 0x19, 0x5000); + re_mdio_write(sc, 0x15, 0x022f); + re_mdio_write(sc, 0x19, 0x7d07); + re_mdio_write(sc, 0x15, 0x0230); + re_mdio_write(sc, 0x19, 0x4402); + re_mdio_write(sc, 0x15, 0x0231); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0232); + re_mdio_write(sc, 0x19, 0x6c02); + re_mdio_write(sc, 0x15, 0x0233); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0234); + re_mdio_write(sc, 0x19, 0xb309); + re_mdio_write(sc, 0x15, 0x0235); + re_mdio_write(sc, 0x19, 0xb204); + re_mdio_write(sc, 0x15, 0x0236); + re_mdio_write(sc, 0x19, 0xb105); + re_mdio_write(sc, 0x15, 0x0237); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x0238); + re_mdio_write(sc, 0x19, 0x31c1); + re_mdio_write(sc, 0x15, 0x0239); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x023a); + re_mdio_write(sc, 0x19, 0x3261); + re_mdio_write(sc, 0x15, 0x023b); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x023c); + re_mdio_write(sc, 0x19, 0x3250); + re_mdio_write(sc, 0x15, 0x023d); + re_mdio_write(sc, 0x19, 0xb203); + re_mdio_write(sc, 0x15, 0x023e); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x023f); + re_mdio_write(sc, 0x19, 0x327a); + re_mdio_write(sc, 0x15, 0x0240); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x0241); + re_mdio_write(sc, 0x19, 0x3293); + re_mdio_write(sc, 0x15, 0x0242); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0243); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0244); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0245); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0246); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0247); + re_mdio_write(sc, 0x19, 0x32a3); + re_mdio_write(sc, 0x15, 0x0248); + re_mdio_write(sc, 0x19, 0x5520); + re_mdio_write(sc, 0x15, 0x0249); + re_mdio_write(sc, 0x19, 0x403d); + re_mdio_write(sc, 0x15, 0x024a); + re_mdio_write(sc, 0x19, 0x440c); + re_mdio_write(sc, 0x15, 0x024b); + re_mdio_write(sc, 0x19, 0x4812); + re_mdio_write(sc, 0x15, 0x024c); + re_mdio_write(sc, 0x19, 0x5001); + re_mdio_write(sc, 0x15, 0x024d); + re_mdio_write(sc, 0x19, 0x4802); + re_mdio_write(sc, 0x15, 0x024e); + re_mdio_write(sc, 0x19, 0x6880); + re_mdio_write(sc, 0x15, 0x024f); + re_mdio_write(sc, 0x19, 0x31f5); + re_mdio_write(sc, 0x15, 0x0250); + re_mdio_write(sc, 0x19, 0xb685); + re_mdio_write(sc, 0x15, 0x0251); + re_mdio_write(sc, 0x19, 0x801c); + re_mdio_write(sc, 0x15, 0x0252); + re_mdio_write(sc, 0x19, 0xbaf5); + re_mdio_write(sc, 0x15, 0x0253); + re_mdio_write(sc, 0x19, 0xc07c); + re_mdio_write(sc, 0x15, 0x0254); + re_mdio_write(sc, 0x19, 0x00fb); + re_mdio_write(sc, 0x15, 0x0255); + re_mdio_write(sc, 0x19, 0x325a); + re_mdio_write(sc, 0x15, 0x0256); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0257); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0258); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0259); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x025a); + re_mdio_write(sc, 0x19, 0x481a); + re_mdio_write(sc, 0x15, 0x025b); + re_mdio_write(sc, 0x19, 0x5001); + re_mdio_write(sc, 0x15, 0x025c); + re_mdio_write(sc, 0x19, 0x401b); + re_mdio_write(sc, 0x15, 0x025d); + re_mdio_write(sc, 0x19, 0x480a); + re_mdio_write(sc, 0x15, 0x025e); + re_mdio_write(sc, 0x19, 0x4418); + re_mdio_write(sc, 0x15, 0x025f); + re_mdio_write(sc, 0x19, 0x6900); + re_mdio_write(sc, 0x15, 0x0260); + re_mdio_write(sc, 0x19, 0x31f5); + re_mdio_write(sc, 0x15, 0x0261); + re_mdio_write(sc, 0x19, 0xb64b); + re_mdio_write(sc, 0x15, 0x0262); + re_mdio_write(sc, 0x19, 0xdb00); + re_mdio_write(sc, 0x15, 0x0263); + re_mdio_write(sc, 0x19, 0x0048); + re_mdio_write(sc, 0x15, 0x0264); + re_mdio_write(sc, 0x19, 0xdb7d); + re_mdio_write(sc, 0x15, 0x0265); + re_mdio_write(sc, 0x19, 0x0002); + re_mdio_write(sc, 0x15, 0x0266); + re_mdio_write(sc, 0x19, 0xa0fa); + re_mdio_write(sc, 0x15, 0x0267); + re_mdio_write(sc, 0x19, 0x4408); + re_mdio_write(sc, 0x15, 0x0268); + re_mdio_write(sc, 0x19, 0x3248); + re_mdio_write(sc, 0x15, 0x0269); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x026a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x026b); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x026c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x026d); + re_mdio_write(sc, 0x19, 0xb806); + re_mdio_write(sc, 0x15, 0x026e); + re_mdio_write(sc, 0x19, 0x588d); + re_mdio_write(sc, 0x15, 0x026f); + re_mdio_write(sc, 0x19, 0x5500); + re_mdio_write(sc, 0x15, 0x0270); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x0271); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0272); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0273); + re_mdio_write(sc, 0x19, 0x4814); + re_mdio_write(sc, 0x15, 0x0274); + re_mdio_write(sc, 0x19, 0x500b); + re_mdio_write(sc, 0x15, 0x0275); + re_mdio_write(sc, 0x19, 0x4804); + re_mdio_write(sc, 0x15, 0x0276); + re_mdio_write(sc, 0x19, 0x40c4); + re_mdio_write(sc, 0x15, 0x0277); + re_mdio_write(sc, 0x19, 0x4425); + re_mdio_write(sc, 0x15, 0x0278); + re_mdio_write(sc, 0x19, 0x6a00); + re_mdio_write(sc, 0x15, 0x0279); + re_mdio_write(sc, 0x19, 0x31f5); + re_mdio_write(sc, 0x15, 0x027a); + re_mdio_write(sc, 0x19, 0xb632); + re_mdio_write(sc, 0x15, 0x027b); + re_mdio_write(sc, 0x19, 0xdc03); + re_mdio_write(sc, 0x15, 0x027c); + re_mdio_write(sc, 0x19, 0x0027); + re_mdio_write(sc, 0x15, 0x027d); + re_mdio_write(sc, 0x19, 0x80fc); + re_mdio_write(sc, 0x15, 0x027e); + re_mdio_write(sc, 0x19, 0x3283); + re_mdio_write(sc, 0x15, 0x027f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0280); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0281); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0282); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0283); + re_mdio_write(sc, 0x19, 0xb806); + re_mdio_write(sc, 0x15, 0x0284); + re_mdio_write(sc, 0x19, 0x588f); + re_mdio_write(sc, 0x15, 0x0285); + re_mdio_write(sc, 0x19, 0x5520); + re_mdio_write(sc, 0x15, 0x0286); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x0287); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x15, 0x0288); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0289); + re_mdio_write(sc, 0x19, 0x4818); + re_mdio_write(sc, 0x15, 0x028a); + re_mdio_write(sc, 0x19, 0x5051); + re_mdio_write(sc, 0x15, 0x028b); + re_mdio_write(sc, 0x19, 0x4808); + re_mdio_write(sc, 0x15, 0x028c); + re_mdio_write(sc, 0x19, 0x4050); + re_mdio_write(sc, 0x15, 0x028d); + re_mdio_write(sc, 0x19, 0x4462); + re_mdio_write(sc, 0x15, 0x028e); + re_mdio_write(sc, 0x19, 0x40c4); + re_mdio_write(sc, 0x15, 0x028f); + re_mdio_write(sc, 0x19, 0x4473); + re_mdio_write(sc, 0x15, 0x0290); + re_mdio_write(sc, 0x19, 0x5041); + re_mdio_write(sc, 0x15, 0x0291); + re_mdio_write(sc, 0x19, 0x6b00); + re_mdio_write(sc, 0x15, 0x0292); + re_mdio_write(sc, 0x19, 0x31f5); + re_mdio_write(sc, 0x15, 0x0293); + re_mdio_write(sc, 0x19, 0xb619); + re_mdio_write(sc, 0x15, 0x0294); + re_mdio_write(sc, 0x19, 0x80d9); + re_mdio_write(sc, 0x15, 0x0295); + re_mdio_write(sc, 0x19, 0xbd06); + re_mdio_write(sc, 0x15, 0x0296); + re_mdio_write(sc, 0x19, 0xbb0d); + re_mdio_write(sc, 0x15, 0x0297); + re_mdio_write(sc, 0x19, 0xaf14); + re_mdio_write(sc, 0x15, 0x0298); + re_mdio_write(sc, 0x19, 0x8efa); + re_mdio_write(sc, 0x15, 0x0299); + re_mdio_write(sc, 0x19, 0x5049); + re_mdio_write(sc, 0x15, 0x029a); + re_mdio_write(sc, 0x19, 0x3248); + re_mdio_write(sc, 0x15, 0x029b); + re_mdio_write(sc, 0x19, 0x4c10); + re_mdio_write(sc, 0x15, 0x029c); + re_mdio_write(sc, 0x19, 0x44b0); + re_mdio_write(sc, 0x15, 0x029d); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x029e); + re_mdio_write(sc, 0x19, 0x3292); + re_mdio_write(sc, 0x15, 0x029f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02a0); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02a1); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02a2); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02a3); + re_mdio_write(sc, 0x19, 0x481f); + re_mdio_write(sc, 0x15, 0x02a4); + re_mdio_write(sc, 0x19, 0x5005); + re_mdio_write(sc, 0x15, 0x02a5); + re_mdio_write(sc, 0x19, 0x480f); + re_mdio_write(sc, 0x15, 0x02a6); + re_mdio_write(sc, 0x19, 0xac00); + re_mdio_write(sc, 0x15, 0x02a7); + re_mdio_write(sc, 0x19, 0x31a6); + re_mdio_write(sc, 0x15, 0x02a8); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02a9); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02aa); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02ab); + re_mdio_write(sc, 0x19, 0x31ba); + re_mdio_write(sc, 0x15, 0x02ac); + re_mdio_write(sc, 0x19, 0x31d5); + re_mdio_write(sc, 0x15, 0x02ad); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02ae); + re_mdio_write(sc, 0x19, 0x5cf0); + re_mdio_write(sc, 0x15, 0x02af); + re_mdio_write(sc, 0x19, 0x588c); + re_mdio_write(sc, 0x15, 0x02b0); + re_mdio_write(sc, 0x19, 0x542f); + re_mdio_write(sc, 0x15, 0x02b1); + re_mdio_write(sc, 0x19, 0x7ffb); + re_mdio_write(sc, 0x15, 0x02b2); + re_mdio_write(sc, 0x19, 0x6ff8); + re_mdio_write(sc, 0x15, 0x02b3); + re_mdio_write(sc, 0x19, 0x64a4); + re_mdio_write(sc, 0x15, 0x02b4); + re_mdio_write(sc, 0x19, 0x64a0); + re_mdio_write(sc, 0x15, 0x02b5); + re_mdio_write(sc, 0x19, 0x6800); + re_mdio_write(sc, 0x15, 0x02b6); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x02b7); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x02b8); + re_mdio_write(sc, 0x19, 0x4480); + re_mdio_write(sc, 0x15, 0x02b9); + re_mdio_write(sc, 0x19, 0x9e00); + re_mdio_write(sc, 0x15, 0x02ba); + re_mdio_write(sc, 0x19, 0x4891); + re_mdio_write(sc, 0x15, 0x02bb); + re_mdio_write(sc, 0x19, 0x4cc0); + re_mdio_write(sc, 0x15, 0x02bc); + re_mdio_write(sc, 0x19, 0x4801); + re_mdio_write(sc, 0x15, 0x02bd); + re_mdio_write(sc, 0x19, 0xa609); + re_mdio_write(sc, 0x15, 0x02be); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x02bf); + re_mdio_write(sc, 0x19, 0x004e); + re_mdio_write(sc, 0x15, 0x02c0); + re_mdio_write(sc, 0x19, 0x87fe); + re_mdio_write(sc, 0x15, 0x02c1); + re_mdio_write(sc, 0x19, 0x32c6); + re_mdio_write(sc, 0x15, 0x02c2); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02c3); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02c4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02c5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02c6); + re_mdio_write(sc, 0x19, 0x48b2); + re_mdio_write(sc, 0x15, 0x02c7); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x02c8); + re_mdio_write(sc, 0x19, 0x4822); + re_mdio_write(sc, 0x15, 0x02c9); + re_mdio_write(sc, 0x19, 0x4488); + re_mdio_write(sc, 0x15, 0x02ca); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x02cb); + re_mdio_write(sc, 0x19, 0x0042); + re_mdio_write(sc, 0x15, 0x02cc); + re_mdio_write(sc, 0x19, 0x8203); + re_mdio_write(sc, 0x15, 0x02cd); + re_mdio_write(sc, 0x19, 0x4cc8); + re_mdio_write(sc, 0x15, 0x02ce); + re_mdio_write(sc, 0x19, 0x32d0); + re_mdio_write(sc, 0x15, 0x02cf); + re_mdio_write(sc, 0x19, 0x4cc0); + re_mdio_write(sc, 0x15, 0x02d0); + re_mdio_write(sc, 0x19, 0xc4d4); + re_mdio_write(sc, 0x15, 0x02d1); + re_mdio_write(sc, 0x19, 0x00f9); + re_mdio_write(sc, 0x15, 0x02d2); + re_mdio_write(sc, 0x19, 0xa51a); + re_mdio_write(sc, 0x15, 0x02d3); + re_mdio_write(sc, 0x19, 0x32d9); + re_mdio_write(sc, 0x15, 0x02d4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02d5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02d6); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02d7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02d8); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02d9); + re_mdio_write(sc, 0x19, 0x48b3); + re_mdio_write(sc, 0x15, 0x02da); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x02db); + re_mdio_write(sc, 0x19, 0x4823); + re_mdio_write(sc, 0x15, 0x02dc); + re_mdio_write(sc, 0x19, 0x4410); + re_mdio_write(sc, 0x15, 0x02dd); + re_mdio_write(sc, 0x19, 0xb630); + re_mdio_write(sc, 0x15, 0x02de); + re_mdio_write(sc, 0x19, 0x7dc8); + re_mdio_write(sc, 0x15, 0x02df); + re_mdio_write(sc, 0x19, 0x8203); + re_mdio_write(sc, 0x15, 0x02e0); + re_mdio_write(sc, 0x19, 0x4c48); + re_mdio_write(sc, 0x15, 0x02e1); + re_mdio_write(sc, 0x19, 0x32e3); + re_mdio_write(sc, 0x15, 0x02e2); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x02e3); + re_mdio_write(sc, 0x19, 0x9bfa); + re_mdio_write(sc, 0x15, 0x02e4); + re_mdio_write(sc, 0x19, 0x84ca); + re_mdio_write(sc, 0x15, 0x02e5); + re_mdio_write(sc, 0x19, 0x85f8); + re_mdio_write(sc, 0x15, 0x02e6); + re_mdio_write(sc, 0x19, 0x32ec); + re_mdio_write(sc, 0x15, 0x02e7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02e8); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02e9); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02ea); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02eb); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02ec); + re_mdio_write(sc, 0x19, 0x48d4); + re_mdio_write(sc, 0x15, 0x02ed); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x02ee); + re_mdio_write(sc, 0x19, 0x4844); + re_mdio_write(sc, 0x15, 0x02ef); + re_mdio_write(sc, 0x19, 0x4420); + re_mdio_write(sc, 0x15, 0x02f0); + re_mdio_write(sc, 0x19, 0x6800); + re_mdio_write(sc, 0x15, 0x02f1); + re_mdio_write(sc, 0x19, 0x7dc0); + re_mdio_write(sc, 0x15, 0x02f2); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x02f3); + re_mdio_write(sc, 0x19, 0x7c0b); + re_mdio_write(sc, 0x15, 0x02f4); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x02f5); + re_mdio_write(sc, 0x19, 0x3311); + re_mdio_write(sc, 0x15, 0x02f6); + re_mdio_write(sc, 0x19, 0x9cfd); + re_mdio_write(sc, 0x15, 0x02f7); + re_mdio_write(sc, 0x19, 0xb616); + re_mdio_write(sc, 0x15, 0x02f8); + re_mdio_write(sc, 0x19, 0xc42b); + re_mdio_write(sc, 0x15, 0x02f9); + re_mdio_write(sc, 0x19, 0x00e0); + re_mdio_write(sc, 0x15, 0x02fa); + re_mdio_write(sc, 0x19, 0xc455); + re_mdio_write(sc, 0x15, 0x02fb); + re_mdio_write(sc, 0x19, 0x00b3); + re_mdio_write(sc, 0x15, 0x02fc); + re_mdio_write(sc, 0x19, 0xb20a); + re_mdio_write(sc, 0x15, 0x02fd); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x02fe); + re_mdio_write(sc, 0x19, 0x6c02); + re_mdio_write(sc, 0x15, 0x02ff); + re_mdio_write(sc, 0x19, 0x8204); + re_mdio_write(sc, 0x15, 0x0300); + re_mdio_write(sc, 0x19, 0x7c04); + re_mdio_write(sc, 0x15, 0x0301); + re_mdio_write(sc, 0x19, 0x7404); + re_mdio_write(sc, 0x15, 0x0302); + re_mdio_write(sc, 0x19, 0x32f3); + re_mdio_write(sc, 0x15, 0x0303); + re_mdio_write(sc, 0x19, 0x7c04); + re_mdio_write(sc, 0x15, 0x0304); + re_mdio_write(sc, 0x19, 0x7400); + re_mdio_write(sc, 0x15, 0x0305); + re_mdio_write(sc, 0x19, 0x32f3); + re_mdio_write(sc, 0x15, 0x0306); + re_mdio_write(sc, 0x19, 0xefed); + re_mdio_write(sc, 0x15, 0x0307); + re_mdio_write(sc, 0x19, 0x3342); + re_mdio_write(sc, 0x15, 0x0308); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0309); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x030a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x030b); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x030c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x030d); + re_mdio_write(sc, 0x19, 0x3006); + re_mdio_write(sc, 0x15, 0x030e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x030f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0310); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0311); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0312); + re_mdio_write(sc, 0x19, 0xa207); + re_mdio_write(sc, 0x15, 0x0313); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x0314); + re_mdio_write(sc, 0x19, 0x3322); + re_mdio_write(sc, 0x15, 0x0315); + re_mdio_write(sc, 0x19, 0x4041); + re_mdio_write(sc, 0x15, 0x0316); + re_mdio_write(sc, 0x19, 0x7d07); + re_mdio_write(sc, 0x15, 0x0317); + re_mdio_write(sc, 0x19, 0x4502); + re_mdio_write(sc, 0x15, 0x0318); + re_mdio_write(sc, 0x19, 0x3322); + re_mdio_write(sc, 0x15, 0x0319); + re_mdio_write(sc, 0x19, 0x4c08); + re_mdio_write(sc, 0x15, 0x031a); + re_mdio_write(sc, 0x19, 0x3322); + re_mdio_write(sc, 0x15, 0x031b); + re_mdio_write(sc, 0x19, 0x7d80); + re_mdio_write(sc, 0x15, 0x031c); + re_mdio_write(sc, 0x19, 0x5180); + re_mdio_write(sc, 0x15, 0x031d); + re_mdio_write(sc, 0x19, 0x3320); + re_mdio_write(sc, 0x15, 0x031e); + re_mdio_write(sc, 0x19, 0x7d80); + re_mdio_write(sc, 0x15, 0x031f); + re_mdio_write(sc, 0x19, 0x5000); + re_mdio_write(sc, 0x15, 0x0320); + re_mdio_write(sc, 0x19, 0x7d07); + re_mdio_write(sc, 0x15, 0x0321); + re_mdio_write(sc, 0x19, 0x4402); + re_mdio_write(sc, 0x15, 0x0322); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0323); + re_mdio_write(sc, 0x19, 0x6c02); + re_mdio_write(sc, 0x15, 0x0324); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0325); + re_mdio_write(sc, 0x19, 0xb30c); + re_mdio_write(sc, 0x15, 0x0326); + re_mdio_write(sc, 0x19, 0xb206); + re_mdio_write(sc, 0x15, 0x0327); + re_mdio_write(sc, 0x19, 0xb103); + re_mdio_write(sc, 0x15, 0x0328); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x0329); + re_mdio_write(sc, 0x19, 0x32f6); + re_mdio_write(sc, 0x15, 0x032a); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x032b); + re_mdio_write(sc, 0x19, 0x3352); + re_mdio_write(sc, 0x15, 0x032c); + re_mdio_write(sc, 0x19, 0xb103); + re_mdio_write(sc, 0x15, 0x032d); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x032e); + re_mdio_write(sc, 0x19, 0x336a); + re_mdio_write(sc, 0x15, 0x032f); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x0330); + re_mdio_write(sc, 0x19, 0x3382); + re_mdio_write(sc, 0x15, 0x0331); + re_mdio_write(sc, 0x19, 0xb206); + re_mdio_write(sc, 0x15, 0x0332); + re_mdio_write(sc, 0x19, 0xb103); + re_mdio_write(sc, 0x15, 0x0333); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x0334); + re_mdio_write(sc, 0x19, 0x3395); + re_mdio_write(sc, 0x15, 0x0335); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x0336); + re_mdio_write(sc, 0x19, 0x33c6); + re_mdio_write(sc, 0x15, 0x0337); + re_mdio_write(sc, 0x19, 0xb103); + re_mdio_write(sc, 0x15, 0x0338); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x0339); + re_mdio_write(sc, 0x19, 0x33d7); + re_mdio_write(sc, 0x15, 0x033a); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x033b); + re_mdio_write(sc, 0x19, 0x33f2); + re_mdio_write(sc, 0x15, 0x033c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x033d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x033e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x033f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0340); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0341); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0342); + re_mdio_write(sc, 0x19, 0x49b5); + re_mdio_write(sc, 0x15, 0x0343); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x0344); + re_mdio_write(sc, 0x19, 0x4d00); + re_mdio_write(sc, 0x15, 0x0345); + re_mdio_write(sc, 0x19, 0x6880); + re_mdio_write(sc, 0x15, 0x0346); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0347); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x0348); + re_mdio_write(sc, 0x19, 0x4925); + re_mdio_write(sc, 0x15, 0x0349); + re_mdio_write(sc, 0x19, 0x403b); + re_mdio_write(sc, 0x15, 0x034a); + re_mdio_write(sc, 0x19, 0xa602); + re_mdio_write(sc, 0x15, 0x034b); + re_mdio_write(sc, 0x19, 0x402f); + re_mdio_write(sc, 0x15, 0x034c); + re_mdio_write(sc, 0x19, 0x4484); + re_mdio_write(sc, 0x15, 0x034d); + re_mdio_write(sc, 0x19, 0x40c8); + re_mdio_write(sc, 0x15, 0x034e); + re_mdio_write(sc, 0x19, 0x44c4); + re_mdio_write(sc, 0x15, 0x034f); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x0350); + re_mdio_write(sc, 0x19, 0x00bd); + re_mdio_write(sc, 0x15, 0x0351); + re_mdio_write(sc, 0x19, 0x3311); + re_mdio_write(sc, 0x15, 0x0352); + re_mdio_write(sc, 0x19, 0xc8ed); + re_mdio_write(sc, 0x15, 0x0353); + re_mdio_write(sc, 0x19, 0x00fc); + re_mdio_write(sc, 0x15, 0x0354); + re_mdio_write(sc, 0x19, 0x8221); + re_mdio_write(sc, 0x15, 0x0355); + re_mdio_write(sc, 0x19, 0xd11d); + re_mdio_write(sc, 0x15, 0x0356); + re_mdio_write(sc, 0x19, 0x001f); + re_mdio_write(sc, 0x15, 0x0357); + re_mdio_write(sc, 0x19, 0xde18); + re_mdio_write(sc, 0x15, 0x0358); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x0359); + re_mdio_write(sc, 0x19, 0x91f6); + re_mdio_write(sc, 0x15, 0x035a); + re_mdio_write(sc, 0x19, 0x3360); + re_mdio_write(sc, 0x15, 0x035b); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x035c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x035d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x035e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x035f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0360); + re_mdio_write(sc, 0x19, 0x4bb6); + re_mdio_write(sc, 0x15, 0x0361); + re_mdio_write(sc, 0x19, 0x4064); + re_mdio_write(sc, 0x15, 0x0362); + re_mdio_write(sc, 0x19, 0x4b26); + re_mdio_write(sc, 0x15, 0x0363); + re_mdio_write(sc, 0x19, 0x4410); + re_mdio_write(sc, 0x15, 0x0364); + re_mdio_write(sc, 0x19, 0x4006); + re_mdio_write(sc, 0x15, 0x0365); + re_mdio_write(sc, 0x19, 0x4490); + re_mdio_write(sc, 0x15, 0x0366); + re_mdio_write(sc, 0x19, 0x6900); + re_mdio_write(sc, 0x15, 0x0367); + re_mdio_write(sc, 0x19, 0xb6a6); + re_mdio_write(sc, 0x15, 0x0368); + re_mdio_write(sc, 0x19, 0x9e02); + re_mdio_write(sc, 0x15, 0x0369); + re_mdio_write(sc, 0x19, 0x3311); + re_mdio_write(sc, 0x15, 0x036a); + re_mdio_write(sc, 0x19, 0xd11d); + re_mdio_write(sc, 0x15, 0x036b); + re_mdio_write(sc, 0x19, 0x000a); + re_mdio_write(sc, 0x15, 0x036c); + re_mdio_write(sc, 0x19, 0xbb0f); + re_mdio_write(sc, 0x15, 0x036d); + re_mdio_write(sc, 0x19, 0x8102); + re_mdio_write(sc, 0x15, 0x036e); + re_mdio_write(sc, 0x19, 0x3371); + re_mdio_write(sc, 0x15, 0x036f); + re_mdio_write(sc, 0x19, 0xa21e); + re_mdio_write(sc, 0x15, 0x0370); + re_mdio_write(sc, 0x19, 0x33b6); + re_mdio_write(sc, 0x15, 0x0371); + re_mdio_write(sc, 0x19, 0x91f6); + re_mdio_write(sc, 0x15, 0x0372); + re_mdio_write(sc, 0x19, 0xc218); + re_mdio_write(sc, 0x15, 0x0373); + re_mdio_write(sc, 0x19, 0x00f4); + re_mdio_write(sc, 0x15, 0x0374); + re_mdio_write(sc, 0x19, 0x33b6); + re_mdio_write(sc, 0x15, 0x0375); + re_mdio_write(sc, 0x19, 0x32ec); + re_mdio_write(sc, 0x15, 0x0376); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0377); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0378); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0379); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x037a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x037b); + re_mdio_write(sc, 0x19, 0x4b97); + re_mdio_write(sc, 0x15, 0x037c); + re_mdio_write(sc, 0x19, 0x402b); + re_mdio_write(sc, 0x15, 0x037d); + re_mdio_write(sc, 0x19, 0x4b07); + re_mdio_write(sc, 0x15, 0x037e); + re_mdio_write(sc, 0x19, 0x4422); + re_mdio_write(sc, 0x15, 0x037f); + re_mdio_write(sc, 0x19, 0x6980); + re_mdio_write(sc, 0x15, 0x0380); + re_mdio_write(sc, 0x19, 0xb608); + re_mdio_write(sc, 0x15, 0x0381); + re_mdio_write(sc, 0x19, 0x3311); + re_mdio_write(sc, 0x15, 0x0382); + re_mdio_write(sc, 0x19, 0xbc05); + re_mdio_write(sc, 0x15, 0x0383); + re_mdio_write(sc, 0x19, 0xc21c); + re_mdio_write(sc, 0x15, 0x0384); + re_mdio_write(sc, 0x19, 0x0032); + re_mdio_write(sc, 0x15, 0x0385); + re_mdio_write(sc, 0x19, 0xa1fb); + re_mdio_write(sc, 0x15, 0x0386); + re_mdio_write(sc, 0x19, 0x338d); + re_mdio_write(sc, 0x15, 0x0387); + re_mdio_write(sc, 0x19, 0x32ae); + re_mdio_write(sc, 0x15, 0x0388); + re_mdio_write(sc, 0x19, 0x330d); + re_mdio_write(sc, 0x15, 0x0389); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x038a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x038b); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x038c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x038d); + re_mdio_write(sc, 0x19, 0x4b97); + re_mdio_write(sc, 0x15, 0x038e); + re_mdio_write(sc, 0x19, 0x6a08); + re_mdio_write(sc, 0x15, 0x038f); + re_mdio_write(sc, 0x19, 0x4b07); + re_mdio_write(sc, 0x15, 0x0390); + re_mdio_write(sc, 0x19, 0x40ac); + re_mdio_write(sc, 0x15, 0x0391); + re_mdio_write(sc, 0x19, 0x4445); + re_mdio_write(sc, 0x15, 0x0392); + re_mdio_write(sc, 0x19, 0x404e); + re_mdio_write(sc, 0x15, 0x0393); + re_mdio_write(sc, 0x19, 0x4461); + re_mdio_write(sc, 0x15, 0x0394); + re_mdio_write(sc, 0x19, 0x3311); + re_mdio_write(sc, 0x15, 0x0395); + re_mdio_write(sc, 0x19, 0x9c0a); + re_mdio_write(sc, 0x15, 0x0396); + re_mdio_write(sc, 0x19, 0x63da); + re_mdio_write(sc, 0x15, 0x0397); + re_mdio_write(sc, 0x19, 0x6f0c); + re_mdio_write(sc, 0x15, 0x0398); + re_mdio_write(sc, 0x19, 0x5440); + re_mdio_write(sc, 0x15, 0x0399); + re_mdio_write(sc, 0x19, 0x4b98); + re_mdio_write(sc, 0x15, 0x039a); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x039b); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x039c); + re_mdio_write(sc, 0x19, 0x4b08); + re_mdio_write(sc, 0x15, 0x039d); + re_mdio_write(sc, 0x19, 0x63d8); + re_mdio_write(sc, 0x15, 0x039e); + re_mdio_write(sc, 0x19, 0x33a5); + re_mdio_write(sc, 0x15, 0x039f); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x03a0); + re_mdio_write(sc, 0x19, 0x00e8); + re_mdio_write(sc, 0x15, 0x03a1); + re_mdio_write(sc, 0x19, 0x820e); + re_mdio_write(sc, 0x15, 0x03a2); + re_mdio_write(sc, 0x19, 0xa10d); + re_mdio_write(sc, 0x15, 0x03a3); + re_mdio_write(sc, 0x19, 0x9df1); + re_mdio_write(sc, 0x15, 0x03a4); + re_mdio_write(sc, 0x19, 0x33af); + re_mdio_write(sc, 0x15, 0x03a5); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x03a6); + re_mdio_write(sc, 0x19, 0x00f9); + re_mdio_write(sc, 0x15, 0x03a7); + re_mdio_write(sc, 0x19, 0xc017); + re_mdio_write(sc, 0x15, 0x03a8); + re_mdio_write(sc, 0x19, 0x0007); + re_mdio_write(sc, 0x15, 0x03a9); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x03aa); + re_mdio_write(sc, 0x19, 0x6c03); + re_mdio_write(sc, 0x15, 0x03ab); + re_mdio_write(sc, 0x19, 0xa104); + re_mdio_write(sc, 0x15, 0x03ac); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x03ad); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x03ae); + re_mdio_write(sc, 0x19, 0x9df7); + re_mdio_write(sc, 0x15, 0x03af); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x03b0); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x03b1); + re_mdio_write(sc, 0x19, 0x33b6); + re_mdio_write(sc, 0x15, 0x03b2); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03b3); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03b4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03b5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03b6); + re_mdio_write(sc, 0x19, 0x55af); + re_mdio_write(sc, 0x15, 0x03b7); + re_mdio_write(sc, 0x19, 0x7ff0); + re_mdio_write(sc, 0x15, 0x03b8); + re_mdio_write(sc, 0x19, 0x6ff0); + re_mdio_write(sc, 0x15, 0x03b9); + re_mdio_write(sc, 0x19, 0x4bb9); + re_mdio_write(sc, 0x15, 0x03ba); + re_mdio_write(sc, 0x19, 0x6a80); + re_mdio_write(sc, 0x15, 0x03bb); + re_mdio_write(sc, 0x19, 0x4b29); + re_mdio_write(sc, 0x15, 0x03bc); + re_mdio_write(sc, 0x19, 0x4041); + re_mdio_write(sc, 0x15, 0x03bd); + re_mdio_write(sc, 0x19, 0x440a); + re_mdio_write(sc, 0x15, 0x03be); + re_mdio_write(sc, 0x19, 0x4029); + re_mdio_write(sc, 0x15, 0x03bf); + re_mdio_write(sc, 0x19, 0x4418); + re_mdio_write(sc, 0x15, 0x03c0); + re_mdio_write(sc, 0x19, 0x4090); + re_mdio_write(sc, 0x15, 0x03c1); + re_mdio_write(sc, 0x19, 0x4438); + re_mdio_write(sc, 0x15, 0x03c2); + re_mdio_write(sc, 0x19, 0x40c4); + re_mdio_write(sc, 0x15, 0x03c3); + re_mdio_write(sc, 0x19, 0x447b); + re_mdio_write(sc, 0x15, 0x03c4); + re_mdio_write(sc, 0x19, 0xb6c4); + re_mdio_write(sc, 0x15, 0x03c5); + re_mdio_write(sc, 0x19, 0x3311); + re_mdio_write(sc, 0x15, 0x03c6); + re_mdio_write(sc, 0x19, 0x9bfe); + re_mdio_write(sc, 0x15, 0x03c7); + re_mdio_write(sc, 0x19, 0x33cc); + re_mdio_write(sc, 0x15, 0x03c8); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03c9); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03ca); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03cb); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03cc); + re_mdio_write(sc, 0x19, 0x542f); + re_mdio_write(sc, 0x15, 0x03cd); + re_mdio_write(sc, 0x19, 0x499a); + re_mdio_write(sc, 0x15, 0x03ce); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x03cf); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03d0); + re_mdio_write(sc, 0x19, 0x490a); + re_mdio_write(sc, 0x15, 0x03d1); + re_mdio_write(sc, 0x19, 0x405e); + re_mdio_write(sc, 0x15, 0x03d2); + re_mdio_write(sc, 0x19, 0x44f8); + re_mdio_write(sc, 0x15, 0x03d3); + re_mdio_write(sc, 0x19, 0x6b00); + re_mdio_write(sc, 0x15, 0x03d4); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x03d5); + re_mdio_write(sc, 0x19, 0x0028); + re_mdio_write(sc, 0x15, 0x03d6); + re_mdio_write(sc, 0x19, 0x3311); + re_mdio_write(sc, 0x15, 0x03d7); + re_mdio_write(sc, 0x19, 0xbd27); + re_mdio_write(sc, 0x15, 0x03d8); + re_mdio_write(sc, 0x19, 0x9cfc); + re_mdio_write(sc, 0x15, 0x03d9); + re_mdio_write(sc, 0x19, 0xc639); + re_mdio_write(sc, 0x15, 0x03da); + re_mdio_write(sc, 0x19, 0x000f); + re_mdio_write(sc, 0x15, 0x03db); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x03dc); + re_mdio_write(sc, 0x19, 0x7c01); + re_mdio_write(sc, 0x15, 0x03dd); + re_mdio_write(sc, 0x19, 0x4c01); + re_mdio_write(sc, 0x15, 0x03de); + re_mdio_write(sc, 0x19, 0x9af6); + re_mdio_write(sc, 0x15, 0x03df); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03e0); + re_mdio_write(sc, 0x19, 0x4c52); + re_mdio_write(sc, 0x15, 0x03e1); + re_mdio_write(sc, 0x19, 0x4470); + re_mdio_write(sc, 0x15, 0x03e2); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03e3); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03e4); + re_mdio_write(sc, 0x19, 0x33d4); + re_mdio_write(sc, 0x15, 0x03e5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03e6); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03e7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03e8); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03e9); + re_mdio_write(sc, 0x19, 0x49bb); + re_mdio_write(sc, 0x15, 0x03ea); + re_mdio_write(sc, 0x19, 0x4478); + re_mdio_write(sc, 0x15, 0x03eb); + re_mdio_write(sc, 0x19, 0x492b); + re_mdio_write(sc, 0x15, 0x03ec); + re_mdio_write(sc, 0x19, 0x6b80); + re_mdio_write(sc, 0x15, 0x03ed); + re_mdio_write(sc, 0x19, 0x7c01); + re_mdio_write(sc, 0x15, 0x03ee); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x03ef); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x03f0); + re_mdio_write(sc, 0x19, 0x000d); + re_mdio_write(sc, 0x15, 0x03f1); + re_mdio_write(sc, 0x19, 0x3311); + re_mdio_write(sc, 0x15, 0x03f2); + re_mdio_write(sc, 0x19, 0xbd0c); + re_mdio_write(sc, 0x15, 0x03f3); + re_mdio_write(sc, 0x19, 0xc428); + re_mdio_write(sc, 0x15, 0x03f4); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x03f5); + re_mdio_write(sc, 0x19, 0x9afa); + re_mdio_write(sc, 0x15, 0x03f6); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03f7); + re_mdio_write(sc, 0x19, 0x4c52); + re_mdio_write(sc, 0x15, 0x03f8); + re_mdio_write(sc, 0x19, 0x4470); + re_mdio_write(sc, 0x15, 0x03f9); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03fa); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03fb); + re_mdio_write(sc, 0x19, 0x33ef); + re_mdio_write(sc, 0x15, 0x03fc); + re_mdio_write(sc, 0x19, 0x3342); + re_mdio_write(sc, 0x15, 0x03fd); + re_mdio_write(sc, 0x19, 0x330d); + re_mdio_write(sc, 0x15, 0x03fe); + re_mdio_write(sc, 0x19, 0x32ae); + re_mdio_write(sc, 0x15, 0x0000); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0300); + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x48f7); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xa080); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0xf602); + re_mdio_write(sc, 0x06, 0x0112); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x1f02); + re_mdio_write(sc, 0x06, 0x012c); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x3c02); + re_mdio_write(sc, 0x06, 0x0156); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x6d02); + re_mdio_write(sc, 0x06, 0x809d); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x88e1); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8a1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8b); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8c1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8e1e); + re_mdio_write(sc, 0x06, 0x01a0); + re_mdio_write(sc, 0x06, 0x00c7); + re_mdio_write(sc, 0x06, 0xaebb); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xc702); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0xd105); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xcd02); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xca02); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0xd105); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xd002); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0xd481); + re_mdio_write(sc, 0x06, 0xc9e4); + re_mdio_write(sc, 0x06, 0x8b90); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x91d4); + re_mdio_write(sc, 0x06, 0x81b8); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x92e5); + re_mdio_write(sc, 0x06, 0x8b93); + re_mdio_write(sc, 0x06, 0xbf8b); + re_mdio_write(sc, 0x06, 0x88ec); + re_mdio_write(sc, 0x06, 0x0019); + re_mdio_write(sc, 0x06, 0xa98b); + re_mdio_write(sc, 0x06, 0x90f9); + re_mdio_write(sc, 0x06, 0xeeff); + re_mdio_write(sc, 0x06, 0xf600); + re_mdio_write(sc, 0x06, 0xeeff); + re_mdio_write(sc, 0x06, 0xf7fc); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xc102); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xc402); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x201a); + re_mdio_write(sc, 0x06, 0xf620); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x824b); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x1902); + re_mdio_write(sc, 0x06, 0x2c9d); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x9602); + re_mdio_write(sc, 0x06, 0x0473); + re_mdio_write(sc, 0x06, 0x022e); + re_mdio_write(sc, 0x06, 0x3902); + re_mdio_write(sc, 0x06, 0x044d); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x210b); + re_mdio_write(sc, 0x06, 0xf621); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x0416); + re_mdio_write(sc, 0x06, 0x021b); + re_mdio_write(sc, 0x06, 0xa4e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad22); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x22e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2305); + re_mdio_write(sc, 0x06, 0xf623); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8ee0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x24e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2505); + re_mdio_write(sc, 0x06, 0xf625); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8ee0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x08f6); + re_mdio_write(sc, 0x06, 0x26e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0xdae0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x27e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x5cfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad21); + re_mdio_write(sc, 0x06, 0x57e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x2358); + re_mdio_write(sc, 0x06, 0xc059); + re_mdio_write(sc, 0x06, 0x021e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b3c); + re_mdio_write(sc, 0x06, 0x1f10); + re_mdio_write(sc, 0x06, 0x9e44); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x3cad); + re_mdio_write(sc, 0x06, 0x211d); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x84f7); + re_mdio_write(sc, 0x06, 0x29e5); + re_mdio_write(sc, 0x06, 0x8b84); + re_mdio_write(sc, 0x06, 0xac27); + re_mdio_write(sc, 0x06, 0x0dac); + re_mdio_write(sc, 0x06, 0x2605); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x7fae); + re_mdio_write(sc, 0x06, 0x2b02); + re_mdio_write(sc, 0x06, 0x2c23); + re_mdio_write(sc, 0x06, 0xae26); + re_mdio_write(sc, 0x06, 0x022c); + re_mdio_write(sc, 0x06, 0x41ae); + re_mdio_write(sc, 0x06, 0x21e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xad22); + re_mdio_write(sc, 0x06, 0x18e0); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0x58fc); + re_mdio_write(sc, 0x06, 0xe4ff); + re_mdio_write(sc, 0x06, 0xf7d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x2eee); + re_mdio_write(sc, 0x06, 0x0232); + re_mdio_write(sc, 0x06, 0x0ad1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x82e8); + re_mdio_write(sc, 0x06, 0x0232); + re_mdio_write(sc, 0x06, 0x0a02); + re_mdio_write(sc, 0x06, 0x2bdf); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x04d0); + re_mdio_write(sc, 0x06, 0x0202); + re_mdio_write(sc, 0x06, 0x1e97); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2228); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xd302); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0xd10c); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xd602); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0xd104); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xd902); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xe802); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0xe0ff); + re_mdio_write(sc, 0x06, 0xf768); + re_mdio_write(sc, 0x06, 0x03e4); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xd004); + re_mdio_write(sc, 0x06, 0x0228); + re_mdio_write(sc, 0x06, 0x7a04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0xe234); + re_mdio_write(sc, 0x06, 0xe1e2); + re_mdio_write(sc, 0x06, 0x35f6); + re_mdio_write(sc, 0x06, 0x2be4); + re_mdio_write(sc, 0x06, 0xe234); + re_mdio_write(sc, 0x06, 0xe5e2); + re_mdio_write(sc, 0x06, 0x35fc); + re_mdio_write(sc, 0x06, 0x05f8); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0x34e1); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xf72b); + re_mdio_write(sc, 0x06, 0xe4e2); + re_mdio_write(sc, 0x06, 0x34e5); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xfc05); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69ac); + re_mdio_write(sc, 0x06, 0x1b4c); + re_mdio_write(sc, 0x06, 0xbf2e); + re_mdio_write(sc, 0x06, 0x3002); + re_mdio_write(sc, 0x06, 0x31dd); + re_mdio_write(sc, 0x06, 0xef01); + re_mdio_write(sc, 0x06, 0xe28a); + re_mdio_write(sc, 0x06, 0x76e4); + re_mdio_write(sc, 0x06, 0x8a76); + re_mdio_write(sc, 0x06, 0x1f12); + re_mdio_write(sc, 0x06, 0x9e3a); + re_mdio_write(sc, 0x06, 0xef12); + re_mdio_write(sc, 0x06, 0x5907); + re_mdio_write(sc, 0x06, 0x9f12); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b40); + re_mdio_write(sc, 0x06, 0xf721); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x40d0); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x287a); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x34fc); + re_mdio_write(sc, 0x06, 0xa000); + re_mdio_write(sc, 0x06, 0x1002); + re_mdio_write(sc, 0x06, 0x2dc3); + re_mdio_write(sc, 0x06, 0x022e); + re_mdio_write(sc, 0x06, 0x21e0); + re_mdio_write(sc, 0x06, 0x8b40); + re_mdio_write(sc, 0x06, 0xf621); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x40ae); + re_mdio_write(sc, 0x06, 0x0fbf); + re_mdio_write(sc, 0x06, 0x3fa5); + re_mdio_write(sc, 0x06, 0x0231); + re_mdio_write(sc, 0x06, 0x6cbf); + re_mdio_write(sc, 0x06, 0x3fa2); + re_mdio_write(sc, 0x06, 0x0231); + re_mdio_write(sc, 0x06, 0x6c02); + re_mdio_write(sc, 0x06, 0x2dc3); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0xe2f4); + re_mdio_write(sc, 0x06, 0xe1e2); + re_mdio_write(sc, 0x06, 0xf5e4); + re_mdio_write(sc, 0x06, 0x8a78); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0x79ee); + re_mdio_write(sc, 0x06, 0xe2f4); + re_mdio_write(sc, 0x06, 0xd8ee); + re_mdio_write(sc, 0x06, 0xe2f5); + re_mdio_write(sc, 0x06, 0x20fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2065); + re_mdio_write(sc, 0x06, 0xd200); + re_mdio_write(sc, 0x06, 0xbf2e); + re_mdio_write(sc, 0x06, 0xe802); + re_mdio_write(sc, 0x06, 0x31dd); + re_mdio_write(sc, 0x06, 0x1e21); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xdf02); + re_mdio_write(sc, 0x06, 0x31dd); + re_mdio_write(sc, 0x06, 0x0c11); + re_mdio_write(sc, 0x06, 0x1e21); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xe202); + re_mdio_write(sc, 0x06, 0x31dd); + re_mdio_write(sc, 0x06, 0x0c12); + re_mdio_write(sc, 0x06, 0x1e21); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xe502); + re_mdio_write(sc, 0x06, 0x31dd); + re_mdio_write(sc, 0x06, 0x0c13); + re_mdio_write(sc, 0x06, 0x1e21); + re_mdio_write(sc, 0x06, 0xbf1f); + re_mdio_write(sc, 0x06, 0x5302); + re_mdio_write(sc, 0x06, 0x31dd); + re_mdio_write(sc, 0x06, 0x0c14); + re_mdio_write(sc, 0x06, 0x1e21); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xeb02); + re_mdio_write(sc, 0x06, 0x31dd); + re_mdio_write(sc, 0x06, 0x0c16); + re_mdio_write(sc, 0x06, 0x1e21); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0xe01f); + re_mdio_write(sc, 0x06, 0x029e); + re_mdio_write(sc, 0x06, 0x22e6); + re_mdio_write(sc, 0x06, 0x83e0); + re_mdio_write(sc, 0x06, 0xad31); + re_mdio_write(sc, 0x06, 0x14ad); + re_mdio_write(sc, 0x06, 0x3011); + re_mdio_write(sc, 0x06, 0xef02); + re_mdio_write(sc, 0x06, 0x580c); + re_mdio_write(sc, 0x06, 0x9e07); + re_mdio_write(sc, 0x06, 0xad36); + re_mdio_write(sc, 0x06, 0x085a); + re_mdio_write(sc, 0x06, 0x309f); + re_mdio_write(sc, 0x06, 0x04d1); + re_mdio_write(sc, 0x06, 0x01ae); + re_mdio_write(sc, 0x06, 0x02d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x82dc); + re_mdio_write(sc, 0x06, 0x0232); + re_mdio_write(sc, 0x06, 0x0aef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x0400); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0x77e1); + re_mdio_write(sc, 0x06, 0x4010); + re_mdio_write(sc, 0x06, 0xe150); + re_mdio_write(sc, 0x06, 0x32e1); + re_mdio_write(sc, 0x06, 0x5030); + re_mdio_write(sc, 0x06, 0xe144); + re_mdio_write(sc, 0x06, 0x74e1); + re_mdio_write(sc, 0x06, 0x44bb); + re_mdio_write(sc, 0x06, 0xe2d2); + re_mdio_write(sc, 0x06, 0x40e0); + re_mdio_write(sc, 0x06, 0x2cfc); + re_mdio_write(sc, 0x06, 0xe2cc); + re_mdio_write(sc, 0x06, 0xcce2); + re_mdio_write(sc, 0x06, 0x00cc); + re_mdio_write(sc, 0x06, 0xe000); + re_mdio_write(sc, 0x06, 0x99e0); + re_mdio_write(sc, 0x06, 0x3688); + re_mdio_write(sc, 0x06, 0xe036); + re_mdio_write(sc, 0x06, 0x99e1); + re_mdio_write(sc, 0x06, 0x40dd); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x05, 0xe142); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06, PhyRegValue); + re_mdio_write(sc, 0x05, 0xe140); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x00); + if (PhyRegValue & BIT_7) + break; + } + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x0B, 0x6C14); + re_mdio_write(sc, 0x14, 0x7F3D); + re_mdio_write(sc, 0x1C, 0xFAFE); + re_mdio_write(sc, 0x08, 0x07C5); + re_mdio_write(sc, 0x10, 0xF090); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x14, 0x641A); + re_mdio_write(sc, 0x1A, 0x0606); + re_mdio_write(sc, 0x12, 0xF480); + re_mdio_write(sc, 0x13, 0x0747); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x0D, 0x0207); + re_mdio_write(sc, 0x02, 0x5FD0); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x09, 0xA20F); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + PhyRegValue = re_mdio_read(sc, 0x19); + PhyRegValue &= ~BIT_0; + re_mdio_write(sc, 0x19, PhyRegValue); + PhyRegValue = re_mdio_read(sc, 0x10); + PhyRegValue &= ~BIT_10; + re_mdio_write(sc, 0x10, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~BIT_0; + PhyRegValue |= BIT_2; + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x1f, 0x0000); +} + +static void re_set_phy_mcu_8168evl_2(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + int i; + + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + PhyRegValue = re_mdio_read(sc, 0x15); + PhyRegValue &= ~(BIT_12); + re_mdio_write(sc, 0x15, PhyRegValue); + re_mdio_write(sc, 0x00, 0x4800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x002f); + for (i = 0; i < 1000; i++) { + if (re_mdio_read(sc, 0x1c) & BIT_7) + break; + DELAY(100); + } + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + for (i = 0; i < 200; i++) { + if ((re_mdio_read(sc, 0x17) & BIT_0) == 0) + break; + DELAY(100); + } + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0307); + re_mdio_write(sc, 0x15, 0x00AF); + re_mdio_write(sc, 0x19, 0x4060); + re_mdio_write(sc, 0x15, 0x00B0); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x00B1); + re_mdio_write(sc, 0x19, 0x7e00); + re_mdio_write(sc, 0x15, 0x00B2); + re_mdio_write(sc, 0x19, 0x72B0); + re_mdio_write(sc, 0x15, 0x00B3); + re_mdio_write(sc, 0x19, 0x7F00); + re_mdio_write(sc, 0x15, 0x00B4); + re_mdio_write(sc, 0x19, 0x73B0); + re_mdio_write(sc, 0x15, 0x0101); + re_mdio_write(sc, 0x19, 0x0005); + re_mdio_write(sc, 0x15, 0x0103); + re_mdio_write(sc, 0x19, 0x0003); + re_mdio_write(sc, 0x15, 0x0105); + re_mdio_write(sc, 0x19, 0x30FD); + re_mdio_write(sc, 0x15, 0x0106); + re_mdio_write(sc, 0x19, 0x9DF7); + re_mdio_write(sc, 0x15, 0x0107); + re_mdio_write(sc, 0x19, 0x30C6); + re_mdio_write(sc, 0x15, 0x0098); + re_mdio_write(sc, 0x19, 0x7c0b); + re_mdio_write(sc, 0x15, 0x0099); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x00eb); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x00f8); + re_mdio_write(sc, 0x19, 0x6f0b); + re_mdio_write(sc, 0x15, 0x00fe); + re_mdio_write(sc, 0x19, 0x6f0f); + re_mdio_write(sc, 0x15, 0x00db); + re_mdio_write(sc, 0x19, 0x6f09); + re_mdio_write(sc, 0x15, 0x00dc); + re_mdio_write(sc, 0x19, 0xaefd); + re_mdio_write(sc, 0x15, 0x00dd); + re_mdio_write(sc, 0x19, 0x6f0b); + re_mdio_write(sc, 0x15, 0x00de); + re_mdio_write(sc, 0x19, 0xc60b); + re_mdio_write(sc, 0x15, 0x00df); + re_mdio_write(sc, 0x19, 0x00fa); + re_mdio_write(sc, 0x15, 0x00e0); + re_mdio_write(sc, 0x19, 0x30e1); + re_mdio_write(sc, 0x15, 0x020c); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x020e); + re_mdio_write(sc, 0x19, 0x9813); + re_mdio_write(sc, 0x15, 0x020f); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x0210); + re_mdio_write(sc, 0x19, 0x930f); + re_mdio_write(sc, 0x15, 0x0211); + re_mdio_write(sc, 0x19, 0x9206); + re_mdio_write(sc, 0x15, 0x0212); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0213); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0214); + re_mdio_write(sc, 0x19, 0x588f); + re_mdio_write(sc, 0x15, 0x0215); + re_mdio_write(sc, 0x19, 0x5520); + re_mdio_write(sc, 0x15, 0x0216); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x0217); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0218); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0219); + re_mdio_write(sc, 0x19, 0x588d); + re_mdio_write(sc, 0x15, 0x021a); + re_mdio_write(sc, 0x19, 0x5540); + re_mdio_write(sc, 0x15, 0x021b); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x021c); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x021d); + re_mdio_write(sc, 0x19, 0x6840); + re_mdio_write(sc, 0x15, 0x021e); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x021f); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0220); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x0221); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x0222); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0223); + re_mdio_write(sc, 0x19, 0x6840); + re_mdio_write(sc, 0x15, 0x0224); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0225); + re_mdio_write(sc, 0x19, 0x3231); + re_mdio_write(sc, 0x15, 0x0000); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0300); + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x17, 0x2160); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0040); + re_mdio_write(sc, 0x18, 0x0004); + re_mdio_write(sc, 0x18, 0x09d4); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x09e4); + re_mdio_write(sc, 0x19, 0x0800); + re_mdio_write(sc, 0x18, 0x09f4); + re_mdio_write(sc, 0x19, 0xff00); + re_mdio_write(sc, 0x18, 0x0a04); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x0a14); + re_mdio_write(sc, 0x19, 0x0c00); + re_mdio_write(sc, 0x18, 0x0a24); + re_mdio_write(sc, 0x19, 0xff00); + re_mdio_write(sc, 0x18, 0x0a74); + re_mdio_write(sc, 0x19, 0xf600); + re_mdio_write(sc, 0x18, 0x1a24); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x18, 0x1a64); + re_mdio_write(sc, 0x19, 0x0500); + re_mdio_write(sc, 0x18, 0x1a74); + re_mdio_write(sc, 0x19, 0x9500); + re_mdio_write(sc, 0x18, 0x1a84); + re_mdio_write(sc, 0x19, 0x8000); + re_mdio_write(sc, 0x18, 0x1a94); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x18, 0x1aa4); + re_mdio_write(sc, 0x19, 0x9600); + re_mdio_write(sc, 0x18, 0x1ac4); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x1ad4); + re_mdio_write(sc, 0x19, 0x0800); + re_mdio_write(sc, 0x18, 0x1af4); + re_mdio_write(sc, 0x19, 0xc400); + re_mdio_write(sc, 0x18, 0x1b04); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x1b14); + re_mdio_write(sc, 0x19, 0x0800); + re_mdio_write(sc, 0x18, 0x1b24); + re_mdio_write(sc, 0x19, 0xfd00); + re_mdio_write(sc, 0x18, 0x1b34); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x1b44); + re_mdio_write(sc, 0x19, 0x0400); + re_mdio_write(sc, 0x18, 0x1b94); + re_mdio_write(sc, 0x19, 0xf100); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x17, 0x2100); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0040); + re_mdio_write(sc, 0x18, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x48f7); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xa080); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0xf602); + re_mdio_write(sc, 0x06, 0x0115); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x2202); + re_mdio_write(sc, 0x06, 0x80a0); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x3f02); + re_mdio_write(sc, 0x06, 0x0159); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0xbd02); + re_mdio_write(sc, 0x06, 0x80da); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x88e1); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8a1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8b); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8c1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8e1e); + re_mdio_write(sc, 0x06, 0x01a0); + re_mdio_write(sc, 0x06, 0x00c7); + re_mdio_write(sc, 0x06, 0xaebb); + re_mdio_write(sc, 0x06, 0xd481); + re_mdio_write(sc, 0x06, 0xd2e4); + re_mdio_write(sc, 0x06, 0x8b92); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x93d1); + re_mdio_write(sc, 0x06, 0x03bf); + re_mdio_write(sc, 0x06, 0x859e); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x23d1); + re_mdio_write(sc, 0x06, 0x02bf); + re_mdio_write(sc, 0x06, 0x85a1); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x23ee); + re_mdio_write(sc, 0x06, 0x8608); + re_mdio_write(sc, 0x06, 0x03ee); + re_mdio_write(sc, 0x06, 0x860a); + re_mdio_write(sc, 0x06, 0x60ee); + re_mdio_write(sc, 0x06, 0x8610); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8611); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8abe); + re_mdio_write(sc, 0x06, 0x07ee); + re_mdio_write(sc, 0x06, 0x8abf); + re_mdio_write(sc, 0x06, 0x73ee); + re_mdio_write(sc, 0x06, 0x8a95); + re_mdio_write(sc, 0x06, 0x02bf); + re_mdio_write(sc, 0x06, 0x8b88); + re_mdio_write(sc, 0x06, 0xec00); + re_mdio_write(sc, 0x06, 0x19a9); + re_mdio_write(sc, 0x06, 0x8b90); + re_mdio_write(sc, 0x06, 0xf9ee); + re_mdio_write(sc, 0x06, 0xfff6); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xfed1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x8595); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x23d1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x8598); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x2304); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b8a); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x14ee); + re_mdio_write(sc, 0x06, 0x8b8a); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x1f9a); + re_mdio_write(sc, 0x06, 0xe0e4); + re_mdio_write(sc, 0x06, 0x26e1); + re_mdio_write(sc, 0x06, 0xe427); + re_mdio_write(sc, 0x06, 0xeee4); + re_mdio_write(sc, 0x06, 0x2623); + re_mdio_write(sc, 0x06, 0xe5e4); + re_mdio_write(sc, 0x06, 0x27fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8dad); + re_mdio_write(sc, 0x06, 0x2014); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8d00); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0x5a78); + re_mdio_write(sc, 0x06, 0x039e); + re_mdio_write(sc, 0x06, 0x0902); + re_mdio_write(sc, 0x06, 0x05db); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x7b02); + re_mdio_write(sc, 0x06, 0x3231); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x1df6); + re_mdio_write(sc, 0x06, 0x20e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x5c02); + re_mdio_write(sc, 0x06, 0x2bcb); + re_mdio_write(sc, 0x06, 0x022d); + re_mdio_write(sc, 0x06, 0x2902); + re_mdio_write(sc, 0x06, 0x03b4); + re_mdio_write(sc, 0x06, 0x0285); + re_mdio_write(sc, 0x06, 0x6402); + re_mdio_write(sc, 0x06, 0x2eca); + re_mdio_write(sc, 0x06, 0x0284); + re_mdio_write(sc, 0x06, 0xcd02); + re_mdio_write(sc, 0x06, 0x046f); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x210b); + re_mdio_write(sc, 0x06, 0xf621); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x8520); + re_mdio_write(sc, 0x06, 0x021b); + re_mdio_write(sc, 0x06, 0xe8e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad22); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x22e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2308); + re_mdio_write(sc, 0x06, 0xf623); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x311c); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2405); + re_mdio_write(sc, 0x06, 0xf624); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8ee0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x25e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2608); + re_mdio_write(sc, 0x06, 0xf626); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x2df5); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2705); + re_mdio_write(sc, 0x06, 0xf627); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x037a); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x65d2); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x2fe9); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf61e); + re_mdio_write(sc, 0x06, 0x21bf); + re_mdio_write(sc, 0x06, 0x2ff5); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf60c); + re_mdio_write(sc, 0x06, 0x111e); + re_mdio_write(sc, 0x06, 0x21bf); + re_mdio_write(sc, 0x06, 0x2ff8); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf60c); + re_mdio_write(sc, 0x06, 0x121e); + re_mdio_write(sc, 0x06, 0x21bf); + re_mdio_write(sc, 0x06, 0x2ffb); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf60c); + re_mdio_write(sc, 0x06, 0x131e); + re_mdio_write(sc, 0x06, 0x21bf); + re_mdio_write(sc, 0x06, 0x1f97); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf60c); + re_mdio_write(sc, 0x06, 0x141e); + re_mdio_write(sc, 0x06, 0x21bf); + re_mdio_write(sc, 0x06, 0x859b); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf60c); + re_mdio_write(sc, 0x06, 0x161e); + re_mdio_write(sc, 0x06, 0x21e0); + re_mdio_write(sc, 0x06, 0x8a8c); + re_mdio_write(sc, 0x06, 0x1f02); + re_mdio_write(sc, 0x06, 0x9e22); + re_mdio_write(sc, 0x06, 0xe68a); + re_mdio_write(sc, 0x06, 0x8cad); + re_mdio_write(sc, 0x06, 0x3114); + re_mdio_write(sc, 0x06, 0xad30); + re_mdio_write(sc, 0x06, 0x11ef); + re_mdio_write(sc, 0x06, 0x0258); + re_mdio_write(sc, 0x06, 0x0c9e); + re_mdio_write(sc, 0x06, 0x07ad); + re_mdio_write(sc, 0x06, 0x3608); + re_mdio_write(sc, 0x06, 0x5a30); + re_mdio_write(sc, 0x06, 0x9f04); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xae02); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf2f); + re_mdio_write(sc, 0x06, 0xf202); + re_mdio_write(sc, 0x06, 0x3723); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xface); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69fa); + re_mdio_write(sc, 0x06, 0xd401); + re_mdio_write(sc, 0x06, 0x55b4); + re_mdio_write(sc, 0x06, 0xfebf); + re_mdio_write(sc, 0x06, 0x85a7); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf6ac); + re_mdio_write(sc, 0x06, 0x280b); + re_mdio_write(sc, 0x06, 0xbf85); + re_mdio_write(sc, 0x06, 0xa402); + re_mdio_write(sc, 0x06, 0x36f6); + re_mdio_write(sc, 0x06, 0xac28); + re_mdio_write(sc, 0x06, 0x49ae); + re_mdio_write(sc, 0x06, 0x64bf); + re_mdio_write(sc, 0x06, 0x85a4); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf6ac); + re_mdio_write(sc, 0x06, 0x285b); + re_mdio_write(sc, 0x06, 0xd000); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x60ac); + re_mdio_write(sc, 0x06, 0x2105); + re_mdio_write(sc, 0x06, 0xac22); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x4ebf); + re_mdio_write(sc, 0x06, 0xe0c4); + re_mdio_write(sc, 0x06, 0xbe86); + re_mdio_write(sc, 0x06, 0x14d2); + re_mdio_write(sc, 0x06, 0x04d8); + re_mdio_write(sc, 0x06, 0x19d9); + re_mdio_write(sc, 0x06, 0x1907); + re_mdio_write(sc, 0x06, 0xdc19); + re_mdio_write(sc, 0x06, 0xdd19); + re_mdio_write(sc, 0x06, 0x0789); + re_mdio_write(sc, 0x06, 0x89ef); + re_mdio_write(sc, 0x06, 0x645e); + re_mdio_write(sc, 0x06, 0x07ff); + re_mdio_write(sc, 0x06, 0x0d65); + re_mdio_write(sc, 0x06, 0x5cf8); + re_mdio_write(sc, 0x06, 0x001e); + re_mdio_write(sc, 0x06, 0x46dc); + re_mdio_write(sc, 0x06, 0x19dd); + re_mdio_write(sc, 0x06, 0x19b2); + re_mdio_write(sc, 0x06, 0xe2d4); + re_mdio_write(sc, 0x06, 0x0001); + re_mdio_write(sc, 0x06, 0xbf85); + re_mdio_write(sc, 0x06, 0xa402); + re_mdio_write(sc, 0x06, 0x3723); + re_mdio_write(sc, 0x06, 0xae1d); + re_mdio_write(sc, 0x06, 0xbee0); + re_mdio_write(sc, 0x06, 0xc4bf); + re_mdio_write(sc, 0x06, 0x8614); + re_mdio_write(sc, 0x06, 0xd204); + re_mdio_write(sc, 0x06, 0xd819); + re_mdio_write(sc, 0x06, 0xd919); + re_mdio_write(sc, 0x06, 0x07dc); + re_mdio_write(sc, 0x06, 0x19dd); + re_mdio_write(sc, 0x06, 0x1907); + re_mdio_write(sc, 0x06, 0xb2f4); + re_mdio_write(sc, 0x06, 0xd400); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x85a4); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x23fe); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfec6); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc05); + re_mdio_write(sc, 0x06, 0xf9e2); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe3e0); + re_mdio_write(sc, 0x06, 0xeb5a); + re_mdio_write(sc, 0x06, 0x070c); + re_mdio_write(sc, 0x06, 0x031e); + re_mdio_write(sc, 0x06, 0x20e6); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe7e0); + re_mdio_write(sc, 0x06, 0xebe0); + re_mdio_write(sc, 0x06, 0xe0fc); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0xfdfd); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac26); + re_mdio_write(sc, 0x06, 0x1ae0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x14e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xac20); + re_mdio_write(sc, 0x06, 0x0ee0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xac23); + re_mdio_write(sc, 0x06, 0x08e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xac24); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x3802); + re_mdio_write(sc, 0x06, 0x1ab5); + re_mdio_write(sc, 0x06, 0xeee4); + re_mdio_write(sc, 0x06, 0x1c04); + re_mdio_write(sc, 0x06, 0xeee4); + re_mdio_write(sc, 0x06, 0x1d04); + re_mdio_write(sc, 0x06, 0xe2e0); + re_mdio_write(sc, 0x06, 0x7ce3); + re_mdio_write(sc, 0x06, 0xe07d); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x38e1); + re_mdio_write(sc, 0x06, 0xe039); + re_mdio_write(sc, 0x06, 0xad2e); + re_mdio_write(sc, 0x06, 0x1bad); + re_mdio_write(sc, 0x06, 0x390d); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf21); + re_mdio_write(sc, 0x06, 0xd502); + re_mdio_write(sc, 0x06, 0x3723); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0xd8ae); + re_mdio_write(sc, 0x06, 0x0bac); + re_mdio_write(sc, 0x06, 0x3802); + re_mdio_write(sc, 0x06, 0xae06); + re_mdio_write(sc, 0x06, 0x0283); + re_mdio_write(sc, 0x06, 0x1802); + re_mdio_write(sc, 0x06, 0x8360); + re_mdio_write(sc, 0x06, 0x021a); + re_mdio_write(sc, 0x06, 0xc6fd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e1); + re_mdio_write(sc, 0x06, 0x8af4); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2605); + re_mdio_write(sc, 0x06, 0x0222); + re_mdio_write(sc, 0x06, 0xa4f7); + re_mdio_write(sc, 0x06, 0x28e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xad21); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x23a9); + re_mdio_write(sc, 0x06, 0xf729); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ad); + re_mdio_write(sc, 0x06, 0x2005); + re_mdio_write(sc, 0x06, 0x0214); + re_mdio_write(sc, 0x06, 0xabf7); + re_mdio_write(sc, 0x06, 0x2ae0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad23); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x12e7); + re_mdio_write(sc, 0x06, 0xf72b); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2405); + re_mdio_write(sc, 0x06, 0x0283); + re_mdio_write(sc, 0x06, 0xbcf7); + re_mdio_write(sc, 0x06, 0x2ce5); + re_mdio_write(sc, 0x06, 0x8af4); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x21e5); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2109); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xf4ac); + re_mdio_write(sc, 0x06, 0x2003); + re_mdio_write(sc, 0x06, 0x0223); + re_mdio_write(sc, 0x06, 0x98e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x09e0); + re_mdio_write(sc, 0x06, 0x8af4); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x13fb); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ad); + re_mdio_write(sc, 0x06, 0x2309); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xf4ac); + re_mdio_write(sc, 0x06, 0x2203); + re_mdio_write(sc, 0x06, 0x0212); + re_mdio_write(sc, 0x06, 0xfae0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x09e0); + re_mdio_write(sc, 0x06, 0x8af4); + re_mdio_write(sc, 0x06, 0xac23); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x83c1); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e1); + re_mdio_write(sc, 0x06, 0x8af4); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2608); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0xd2ad); + re_mdio_write(sc, 0x06, 0x2502); + re_mdio_write(sc, 0x06, 0xf628); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x210a); + re_mdio_write(sc, 0x06, 0xe084); + re_mdio_write(sc, 0x06, 0x0af6); + re_mdio_write(sc, 0x06, 0x27a0); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0xf629); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ad); + re_mdio_write(sc, 0x06, 0x2008); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xe8ad); + re_mdio_write(sc, 0x06, 0x2102); + re_mdio_write(sc, 0x06, 0xf62a); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ad); + re_mdio_write(sc, 0x06, 0x2308); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x20a0); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0xf62b); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2408); + re_mdio_write(sc, 0x06, 0xe086); + re_mdio_write(sc, 0x06, 0x02a0); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0xf62c); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0xf4a1); + re_mdio_write(sc, 0x06, 0x0008); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf21); + re_mdio_write(sc, 0x06, 0xd502); + re_mdio_write(sc, 0x06, 0x3723); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0200); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x241e); + re_mdio_write(sc, 0x06, 0xe086); + re_mdio_write(sc, 0x06, 0x02a0); + re_mdio_write(sc, 0x06, 0x0005); + re_mdio_write(sc, 0x06, 0x0283); + re_mdio_write(sc, 0x06, 0xe8ae); + re_mdio_write(sc, 0x06, 0xf5a0); + re_mdio_write(sc, 0x06, 0x0105); + re_mdio_write(sc, 0x06, 0x0283); + re_mdio_write(sc, 0x06, 0xf8ae); + re_mdio_write(sc, 0x06, 0x0ba0); + re_mdio_write(sc, 0x06, 0x0205); + re_mdio_write(sc, 0x06, 0x0284); + re_mdio_write(sc, 0x06, 0x14ae); + re_mdio_write(sc, 0x06, 0x03a0); + re_mdio_write(sc, 0x06, 0x0300); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0x0284); + re_mdio_write(sc, 0x06, 0x2bee); + re_mdio_write(sc, 0x06, 0x8602); + re_mdio_write(sc, 0x06, 0x01ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8ee); + re_mdio_write(sc, 0x06, 0x8609); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x8461); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xae10); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8608); + re_mdio_write(sc, 0x06, 0xe186); + re_mdio_write(sc, 0x06, 0x091f); + re_mdio_write(sc, 0x06, 0x019e); + re_mdio_write(sc, 0x06, 0x0611); + re_mdio_write(sc, 0x06, 0xe586); + re_mdio_write(sc, 0x06, 0x09ae); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0x8602); + re_mdio_write(sc, 0x06, 0x01fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xfbbf); + re_mdio_write(sc, 0x06, 0x8604); + re_mdio_write(sc, 0x06, 0xef79); + re_mdio_write(sc, 0x06, 0xd200); + re_mdio_write(sc, 0x06, 0xd400); + re_mdio_write(sc, 0x06, 0x221e); + re_mdio_write(sc, 0x06, 0x02bf); + re_mdio_write(sc, 0x06, 0x2fec); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x23bf); + re_mdio_write(sc, 0x06, 0x13f2); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf60d); + re_mdio_write(sc, 0x06, 0x4559); + re_mdio_write(sc, 0x06, 0x1fef); + re_mdio_write(sc, 0x06, 0x97dd); + re_mdio_write(sc, 0x06, 0xd308); + re_mdio_write(sc, 0x06, 0x1a93); + re_mdio_write(sc, 0x06, 0xdd12); + re_mdio_write(sc, 0x06, 0x17a2); + re_mdio_write(sc, 0x06, 0x04de); + re_mdio_write(sc, 0x06, 0xffef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xfbee); + re_mdio_write(sc, 0x06, 0x8602); + re_mdio_write(sc, 0x06, 0x03d5); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x04ef); + re_mdio_write(sc, 0x06, 0x79ef); + re_mdio_write(sc, 0x06, 0x45bf); + re_mdio_write(sc, 0x06, 0x2fec); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x23bf); + re_mdio_write(sc, 0x06, 0x13f2); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf6ad); + re_mdio_write(sc, 0x06, 0x2702); + re_mdio_write(sc, 0x06, 0x78ff); + re_mdio_write(sc, 0x06, 0xe186); + re_mdio_write(sc, 0x06, 0x0a1b); + re_mdio_write(sc, 0x06, 0x01aa); + re_mdio_write(sc, 0x06, 0x2eef); + re_mdio_write(sc, 0x06, 0x97d9); + re_mdio_write(sc, 0x06, 0x7900); + re_mdio_write(sc, 0x06, 0x9e2b); + re_mdio_write(sc, 0x06, 0x81dd); + re_mdio_write(sc, 0x06, 0xbf85); + re_mdio_write(sc, 0x06, 0xad02); + re_mdio_write(sc, 0x06, 0x3723); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xef02); + re_mdio_write(sc, 0x06, 0x100c); + re_mdio_write(sc, 0x06, 0x11b0); + re_mdio_write(sc, 0x06, 0xfc0d); + re_mdio_write(sc, 0x06, 0x11bf); + re_mdio_write(sc, 0x06, 0x85aa); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x23d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x85aa); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x23ee); + re_mdio_write(sc, 0x06, 0x8602); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x0413); + re_mdio_write(sc, 0x06, 0xa38b); + re_mdio_write(sc, 0x06, 0xb4d3); + re_mdio_write(sc, 0x06, 0x8012); + re_mdio_write(sc, 0x06, 0x17a2); + re_mdio_write(sc, 0x06, 0x04ad); + re_mdio_write(sc, 0x06, 0xffef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x48e0); + re_mdio_write(sc, 0x06, 0x8a96); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0x977c); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x9e35); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0x9600); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0x9700); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xbee1); + re_mdio_write(sc, 0x06, 0x8abf); + re_mdio_write(sc, 0x06, 0xe286); + re_mdio_write(sc, 0x06, 0x10e3); + re_mdio_write(sc, 0x06, 0x8611); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0x1aad); + re_mdio_write(sc, 0x06, 0x2012); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0x9603); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0x97b7); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x1000); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x1100); + re_mdio_write(sc, 0x06, 0xae11); + re_mdio_write(sc, 0x06, 0x15e6); + re_mdio_write(sc, 0x06, 0x8610); + re_mdio_write(sc, 0x06, 0xe786); + re_mdio_write(sc, 0x06, 0x11ae); + re_mdio_write(sc, 0x06, 0x08ee); + re_mdio_write(sc, 0x06, 0x8610); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8611); + re_mdio_write(sc, 0x06, 0x00fd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0xe001); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x32e0); + re_mdio_write(sc, 0x06, 0x8b40); + re_mdio_write(sc, 0x06, 0xf720); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x40bf); + re_mdio_write(sc, 0x06, 0x31f5); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf6ad); + re_mdio_write(sc, 0x06, 0x2821); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x20e1); + re_mdio_write(sc, 0x06, 0xe021); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x18e0); + re_mdio_write(sc, 0x06, 0x8b40); + re_mdio_write(sc, 0x06, 0xf620); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x40ee); + re_mdio_write(sc, 0x06, 0x8b3b); + re_mdio_write(sc, 0x06, 0xffe0); + re_mdio_write(sc, 0x06, 0x8a8a); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0x8be4); + re_mdio_write(sc, 0x06, 0xe000); + re_mdio_write(sc, 0x06, 0xe5e0); + re_mdio_write(sc, 0x06, 0x01ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x80ad); + re_mdio_write(sc, 0x06, 0x2722); + re_mdio_write(sc, 0x06, 0xbf44); + re_mdio_write(sc, 0x06, 0xfc02); + re_mdio_write(sc, 0x06, 0x36f6); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x441f); + re_mdio_write(sc, 0x06, 0x019e); + re_mdio_write(sc, 0x06, 0x15e5); + re_mdio_write(sc, 0x06, 0x8b44); + re_mdio_write(sc, 0x06, 0xad29); + re_mdio_write(sc, 0x06, 0x07ac); + re_mdio_write(sc, 0x06, 0x2804); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xae02); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf85); + re_mdio_write(sc, 0x06, 0xb002); + re_mdio_write(sc, 0x06, 0x3723); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x0400); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0x77e1); + re_mdio_write(sc, 0x06, 0x40dd); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0x32e1); + re_mdio_write(sc, 0x06, 0x5074); + re_mdio_write(sc, 0x06, 0xe144); + re_mdio_write(sc, 0x06, 0xffe0); + re_mdio_write(sc, 0x06, 0xdaff); + re_mdio_write(sc, 0x06, 0xe0c0); + re_mdio_write(sc, 0x06, 0x52e0); + re_mdio_write(sc, 0x06, 0xeed9); + re_mdio_write(sc, 0x06, 0xe04c); + re_mdio_write(sc, 0x06, 0xbbe0); + re_mdio_write(sc, 0x06, 0x2a00); + re_mdio_write(sc, 0x05, 0xe142); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06, PhyRegValue); + re_mdio_write(sc, 0x05, 0xe140); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x00); + if (PhyRegValue & BIT_7) + break; + } + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x09, 0xA20F); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + PhyRegValue = re_mdio_read(sc, 0x19); + PhyRegValue &= ~BIT_0; + re_mdio_write(sc, 0x19, PhyRegValue); + PhyRegValue = re_mdio_read(sc, 0x10); + PhyRegValue &= ~BIT_10; + re_mdio_write(sc, 0x10, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0042); + re_mdio_write(sc, 0x18, 0x2300); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + if (sc->RequiredSecLanDonglePatch) + PhyRegValue &= ~(BIT_2); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); +} + +static void re_set_phy_mcu_8168f_1(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + int i; + + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + PhyRegValue = re_mdio_read(sc, 0x15); + PhyRegValue &= ~(BIT_12); + re_mdio_write(sc, 0x15, PhyRegValue); + re_mdio_write(sc, 0x00, 0x4800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x002f); + for (i = 0; i < 1000; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x1c); + if (PhyRegValue & BIT_7) + break; + } + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x18); + if (!(PhyRegValue & BIT_0)) + break; + } + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0307); + re_mdio_write(sc, 0x15, 0x0194); + re_mdio_write(sc, 0x19, 0x407D); + re_mdio_write(sc, 0x15, 0x0098); + re_mdio_write(sc, 0x19, 0x7c0b); + re_mdio_write(sc, 0x15, 0x0099); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x00eb); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x00f8); + re_mdio_write(sc, 0x19, 0x6f0b); + re_mdio_write(sc, 0x15, 0x00fe); + re_mdio_write(sc, 0x19, 0x6f0f); + re_mdio_write(sc, 0x15, 0x00db); + re_mdio_write(sc, 0x19, 0x6f09); + re_mdio_write(sc, 0x15, 0x00dc); + re_mdio_write(sc, 0x19, 0xaefd); + re_mdio_write(sc, 0x15, 0x00dd); + re_mdio_write(sc, 0x19, 0x6f0b); + re_mdio_write(sc, 0x15, 0x00de); + re_mdio_write(sc, 0x19, 0xc60b); + re_mdio_write(sc, 0x15, 0x00df); + re_mdio_write(sc, 0x19, 0x00fa); + re_mdio_write(sc, 0x15, 0x00e0); + re_mdio_write(sc, 0x19, 0x30e1); + re_mdio_write(sc, 0x15, 0x020c); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x020e); + re_mdio_write(sc, 0x19, 0x9813); + re_mdio_write(sc, 0x15, 0x020f); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x0210); + re_mdio_write(sc, 0x19, 0x930f); + re_mdio_write(sc, 0x15, 0x0211); + re_mdio_write(sc, 0x19, 0x9206); + re_mdio_write(sc, 0x15, 0x0212); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0213); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0214); + re_mdio_write(sc, 0x19, 0x588f); + re_mdio_write(sc, 0x15, 0x0215); + re_mdio_write(sc, 0x19, 0x5520); + re_mdio_write(sc, 0x15, 0x0216); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x0217); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0218); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0219); + re_mdio_write(sc, 0x19, 0x588d); + re_mdio_write(sc, 0x15, 0x021a); + re_mdio_write(sc, 0x19, 0x5540); + re_mdio_write(sc, 0x15, 0x021b); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x021c); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x021d); + re_mdio_write(sc, 0x19, 0x6840); + re_mdio_write(sc, 0x15, 0x021e); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x021f); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0220); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x0221); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x0222); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0223); + re_mdio_write(sc, 0x19, 0x6840); + re_mdio_write(sc, 0x15, 0x0224); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0225); + re_mdio_write(sc, 0x19, 0x3231); + re_mdio_write(sc, 0x15, 0x0000); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0300); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x48f7); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xa080); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0xf602); + re_mdio_write(sc, 0x06, 0x0118); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x2502); + re_mdio_write(sc, 0x06, 0x8090); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x4202); + re_mdio_write(sc, 0x06, 0x015c); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0xad02); + re_mdio_write(sc, 0x06, 0x80ca); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x88e1); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8a1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8b); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8c1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8e1e); + re_mdio_write(sc, 0x06, 0x01a0); + re_mdio_write(sc, 0x06, 0x00c7); + re_mdio_write(sc, 0x06, 0xaebb); + re_mdio_write(sc, 0x06, 0xd484); + re_mdio_write(sc, 0x06, 0x3ce4); + re_mdio_write(sc, 0x06, 0x8b92); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x93ee); + re_mdio_write(sc, 0x06, 0x8ac8); + re_mdio_write(sc, 0x06, 0x03ee); + re_mdio_write(sc, 0x06, 0x8aca); + re_mdio_write(sc, 0x06, 0x60ee); + re_mdio_write(sc, 0x06, 0x8ac0); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8ac1); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8abe); + re_mdio_write(sc, 0x06, 0x07ee); + re_mdio_write(sc, 0x06, 0x8abf); + re_mdio_write(sc, 0x06, 0x73ee); + re_mdio_write(sc, 0x06, 0x8a95); + re_mdio_write(sc, 0x06, 0x02bf); + re_mdio_write(sc, 0x06, 0x8b88); + re_mdio_write(sc, 0x06, 0xec00); + re_mdio_write(sc, 0x06, 0x19a9); + re_mdio_write(sc, 0x06, 0x8b90); + re_mdio_write(sc, 0x06, 0xf9ee); + re_mdio_write(sc, 0x06, 0xfff6); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xfed1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x85a4); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x7dd1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x85a7); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x7d04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b8a); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x14ee); + re_mdio_write(sc, 0x06, 0x8b8a); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x204b); + re_mdio_write(sc, 0x06, 0xe0e4); + re_mdio_write(sc, 0x06, 0x26e1); + re_mdio_write(sc, 0x06, 0xe427); + re_mdio_write(sc, 0x06, 0xeee4); + re_mdio_write(sc, 0x06, 0x2623); + re_mdio_write(sc, 0x06, 0xe5e4); + re_mdio_write(sc, 0x06, 0x27fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8dad); + re_mdio_write(sc, 0x06, 0x2014); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8d00); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0x5a78); + re_mdio_write(sc, 0x06, 0x039e); + re_mdio_write(sc, 0x06, 0x0902); + re_mdio_write(sc, 0x06, 0x05e8); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x4f02); + re_mdio_write(sc, 0x06, 0x326c); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x1df6); + re_mdio_write(sc, 0x06, 0x20e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x0902); + re_mdio_write(sc, 0x06, 0x2ab0); + re_mdio_write(sc, 0x06, 0x0285); + re_mdio_write(sc, 0x06, 0x1602); + re_mdio_write(sc, 0x06, 0x03ba); + re_mdio_write(sc, 0x06, 0x0284); + re_mdio_write(sc, 0x06, 0xe502); + re_mdio_write(sc, 0x06, 0x2df1); + re_mdio_write(sc, 0x06, 0x0283); + re_mdio_write(sc, 0x06, 0x8302); + re_mdio_write(sc, 0x06, 0x0475); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x210b); + re_mdio_write(sc, 0x06, 0xf621); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x83f8); + re_mdio_write(sc, 0x06, 0x021c); + re_mdio_write(sc, 0x06, 0x99e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad22); + re_mdio_write(sc, 0x06, 0x08f6); + re_mdio_write(sc, 0x06, 0x22e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0235); + re_mdio_write(sc, 0x06, 0x63e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad23); + re_mdio_write(sc, 0x06, 0x08f6); + re_mdio_write(sc, 0x06, 0x23e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0231); + re_mdio_write(sc, 0x06, 0x57e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x24e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2505); + re_mdio_write(sc, 0x06, 0xf625); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8ee0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x08f6); + re_mdio_write(sc, 0x06, 0x26e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x022d); + re_mdio_write(sc, 0x06, 0x1ce0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x27e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x80fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac26); + re_mdio_write(sc, 0x06, 0x1ae0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x14e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xac20); + re_mdio_write(sc, 0x06, 0x0ee0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xac23); + re_mdio_write(sc, 0x06, 0x08e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xac24); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x3802); + re_mdio_write(sc, 0x06, 0x1ac2); + re_mdio_write(sc, 0x06, 0xeee4); + re_mdio_write(sc, 0x06, 0x1c04); + re_mdio_write(sc, 0x06, 0xeee4); + re_mdio_write(sc, 0x06, 0x1d04); + re_mdio_write(sc, 0x06, 0xe2e0); + re_mdio_write(sc, 0x06, 0x7ce3); + re_mdio_write(sc, 0x06, 0xe07d); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x38e1); + re_mdio_write(sc, 0x06, 0xe039); + re_mdio_write(sc, 0x06, 0xad2e); + re_mdio_write(sc, 0x06, 0x1bad); + re_mdio_write(sc, 0x06, 0x390d); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf22); + re_mdio_write(sc, 0x06, 0x7a02); + re_mdio_write(sc, 0x06, 0x387d); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0xacae); + re_mdio_write(sc, 0x06, 0x0bac); + re_mdio_write(sc, 0x06, 0x3802); + re_mdio_write(sc, 0x06, 0xae06); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0xe902); + re_mdio_write(sc, 0x06, 0x822e); + re_mdio_write(sc, 0x06, 0x021a); + re_mdio_write(sc, 0x06, 0xd3fd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e1); + re_mdio_write(sc, 0x06, 0x8af4); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2602); + re_mdio_write(sc, 0x06, 0xf728); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2105); + re_mdio_write(sc, 0x06, 0x0222); + re_mdio_write(sc, 0x06, 0x8ef7); + re_mdio_write(sc, 0x06, 0x29e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x14b8); + re_mdio_write(sc, 0x06, 0xf72a); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ad); + re_mdio_write(sc, 0x06, 0x2305); + re_mdio_write(sc, 0x06, 0x0212); + re_mdio_write(sc, 0x06, 0xf4f7); + re_mdio_write(sc, 0x06, 0x2be0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x8284); + re_mdio_write(sc, 0x06, 0xf72c); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0xf4fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2600); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2109); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xf4ac); + re_mdio_write(sc, 0x06, 0x2003); + re_mdio_write(sc, 0x06, 0x0222); + re_mdio_write(sc, 0x06, 0x7de0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x09e0); + re_mdio_write(sc, 0x06, 0x8af4); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x1408); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ad); + re_mdio_write(sc, 0x06, 0x2309); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xf4ac); + re_mdio_write(sc, 0x06, 0x2203); + re_mdio_write(sc, 0x06, 0x0213); + re_mdio_write(sc, 0x06, 0x07e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x09e0); + re_mdio_write(sc, 0x06, 0x8af4); + re_mdio_write(sc, 0x06, 0xac23); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x8289); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e1); + re_mdio_write(sc, 0x06, 0x8af4); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2602); + re_mdio_write(sc, 0x06, 0xf628); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x210a); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0xecf6); + re_mdio_write(sc, 0x06, 0x27a0); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0xf629); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ad); + re_mdio_write(sc, 0x06, 0x2008); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xe8ad); + re_mdio_write(sc, 0x06, 0x2102); + re_mdio_write(sc, 0x06, 0xf62a); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ad); + re_mdio_write(sc, 0x06, 0x2308); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x20a0); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0xf62b); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2408); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xc2a0); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0xf62c); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0xf4a1); + re_mdio_write(sc, 0x06, 0x0008); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf22); + re_mdio_write(sc, 0x06, 0x7a02); + re_mdio_write(sc, 0x06, 0x387d); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xc200); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x241e); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xc2a0); + re_mdio_write(sc, 0x06, 0x0005); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0xb0ae); + re_mdio_write(sc, 0x06, 0xf5a0); + re_mdio_write(sc, 0x06, 0x0105); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0xc0ae); + re_mdio_write(sc, 0x06, 0x0ba0); + re_mdio_write(sc, 0x06, 0x0205); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0xcaae); + re_mdio_write(sc, 0x06, 0x03a0); + re_mdio_write(sc, 0x06, 0x0300); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0xe1ee); + re_mdio_write(sc, 0x06, 0x8ac2); + re_mdio_write(sc, 0x06, 0x01ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8ee); + re_mdio_write(sc, 0x06, 0x8ac9); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x8317); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8ac8); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0xc91f); + re_mdio_write(sc, 0x06, 0x019e); + re_mdio_write(sc, 0x06, 0x0611); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0xc9ae); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0x8ac2); + re_mdio_write(sc, 0x06, 0x01fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xfbbf); + re_mdio_write(sc, 0x06, 0x8ac4); + re_mdio_write(sc, 0x06, 0xef79); + re_mdio_write(sc, 0x06, 0xd200); + re_mdio_write(sc, 0x06, 0xd400); + re_mdio_write(sc, 0x06, 0x221e); + re_mdio_write(sc, 0x06, 0x02bf); + re_mdio_write(sc, 0x06, 0x3024); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x7dbf); + re_mdio_write(sc, 0x06, 0x13ff); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x500d); + re_mdio_write(sc, 0x06, 0x4559); + re_mdio_write(sc, 0x06, 0x1fef); + re_mdio_write(sc, 0x06, 0x97dd); + re_mdio_write(sc, 0x06, 0xd308); + re_mdio_write(sc, 0x06, 0x1a93); + re_mdio_write(sc, 0x06, 0xdd12); + re_mdio_write(sc, 0x06, 0x17a2); + re_mdio_write(sc, 0x06, 0x04de); + re_mdio_write(sc, 0x06, 0xffef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xfbee); + re_mdio_write(sc, 0x06, 0x8ac2); + re_mdio_write(sc, 0x06, 0x03d5); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x06, 0xbf8a); + re_mdio_write(sc, 0x06, 0xc4ef); + re_mdio_write(sc, 0x06, 0x79ef); + re_mdio_write(sc, 0x06, 0x45bf); + re_mdio_write(sc, 0x06, 0x3024); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x7dbf); + re_mdio_write(sc, 0x06, 0x13ff); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x50ad); + re_mdio_write(sc, 0x06, 0x2702); + re_mdio_write(sc, 0x06, 0x78ff); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0xca1b); + re_mdio_write(sc, 0x06, 0x01aa); + re_mdio_write(sc, 0x06, 0x2eef); + re_mdio_write(sc, 0x06, 0x97d9); + re_mdio_write(sc, 0x06, 0x7900); + re_mdio_write(sc, 0x06, 0x9e2b); + re_mdio_write(sc, 0x06, 0x81dd); + re_mdio_write(sc, 0x06, 0xbf85); + re_mdio_write(sc, 0x06, 0xad02); + re_mdio_write(sc, 0x06, 0x387d); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xef02); + re_mdio_write(sc, 0x06, 0x100c); + re_mdio_write(sc, 0x06, 0x11b0); + re_mdio_write(sc, 0x06, 0xfc0d); + re_mdio_write(sc, 0x06, 0x11bf); + re_mdio_write(sc, 0x06, 0x85aa); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x7dd1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x85aa); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x7dee); + re_mdio_write(sc, 0x06, 0x8ac2); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x0413); + re_mdio_write(sc, 0x06, 0xa38b); + re_mdio_write(sc, 0x06, 0xb4d3); + re_mdio_write(sc, 0x06, 0x8012); + re_mdio_write(sc, 0x06, 0x17a2); + re_mdio_write(sc, 0x06, 0x04ad); + re_mdio_write(sc, 0x06, 0xffef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x48e0); + re_mdio_write(sc, 0x06, 0x8a96); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0x977c); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x9e35); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0x9600); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0x9700); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xbee1); + re_mdio_write(sc, 0x06, 0x8abf); + re_mdio_write(sc, 0x06, 0xe28a); + re_mdio_write(sc, 0x06, 0xc0e3); + re_mdio_write(sc, 0x06, 0x8ac1); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x74ad); + re_mdio_write(sc, 0x06, 0x2012); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0x9603); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0x97b7); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xc000); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xc100); + re_mdio_write(sc, 0x06, 0xae11); + re_mdio_write(sc, 0x06, 0x15e6); + re_mdio_write(sc, 0x06, 0x8ac0); + re_mdio_write(sc, 0x06, 0xe78a); + re_mdio_write(sc, 0x06, 0xc1ae); + re_mdio_write(sc, 0x06, 0x08ee); + re_mdio_write(sc, 0x06, 0x8ac0); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8ac1); + re_mdio_write(sc, 0x06, 0x00fd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xae20); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0xe001); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x32e0); + re_mdio_write(sc, 0x06, 0x8b40); + re_mdio_write(sc, 0x06, 0xf720); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x40bf); + re_mdio_write(sc, 0x06, 0x3230); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x50ad); + re_mdio_write(sc, 0x06, 0x2821); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x20e1); + re_mdio_write(sc, 0x06, 0xe021); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x18e0); + re_mdio_write(sc, 0x06, 0x8b40); + re_mdio_write(sc, 0x06, 0xf620); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x40ee); + re_mdio_write(sc, 0x06, 0x8b3b); + re_mdio_write(sc, 0x06, 0xffe0); + re_mdio_write(sc, 0x06, 0x8a8a); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0x8be4); + re_mdio_write(sc, 0x06, 0xe000); + re_mdio_write(sc, 0x06, 0xe5e0); + re_mdio_write(sc, 0x06, 0x01ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xface); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69fa); + re_mdio_write(sc, 0x06, 0xd401); + re_mdio_write(sc, 0x06, 0x55b4); + re_mdio_write(sc, 0x06, 0xfebf); + re_mdio_write(sc, 0x06, 0x1c1e); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x50ac); + re_mdio_write(sc, 0x06, 0x280b); + re_mdio_write(sc, 0x06, 0xbf1c); + re_mdio_write(sc, 0x06, 0x1b02); + re_mdio_write(sc, 0x06, 0x3850); + re_mdio_write(sc, 0x06, 0xac28); + re_mdio_write(sc, 0x06, 0x49ae); + re_mdio_write(sc, 0x06, 0x64bf); + re_mdio_write(sc, 0x06, 0x1c1b); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x50ac); + re_mdio_write(sc, 0x06, 0x285b); + re_mdio_write(sc, 0x06, 0xd000); + re_mdio_write(sc, 0x06, 0x0284); + re_mdio_write(sc, 0x06, 0xcaac); + re_mdio_write(sc, 0x06, 0x2105); + re_mdio_write(sc, 0x06, 0xac22); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x4ebf); + re_mdio_write(sc, 0x06, 0xe0c4); + re_mdio_write(sc, 0x06, 0xbe85); + re_mdio_write(sc, 0x06, 0xf6d2); + re_mdio_write(sc, 0x06, 0x04d8); + re_mdio_write(sc, 0x06, 0x19d9); + re_mdio_write(sc, 0x06, 0x1907); + re_mdio_write(sc, 0x06, 0xdc19); + re_mdio_write(sc, 0x06, 0xdd19); + re_mdio_write(sc, 0x06, 0x0789); + re_mdio_write(sc, 0x06, 0x89ef); + re_mdio_write(sc, 0x06, 0x645e); + re_mdio_write(sc, 0x06, 0x07ff); + re_mdio_write(sc, 0x06, 0x0d65); + re_mdio_write(sc, 0x06, 0x5cf8); + re_mdio_write(sc, 0x06, 0x001e); + re_mdio_write(sc, 0x06, 0x46dc); + re_mdio_write(sc, 0x06, 0x19dd); + re_mdio_write(sc, 0x06, 0x19b2); + re_mdio_write(sc, 0x06, 0xe2d4); + re_mdio_write(sc, 0x06, 0x0001); + re_mdio_write(sc, 0x06, 0xbf1c); + re_mdio_write(sc, 0x06, 0x1b02); + re_mdio_write(sc, 0x06, 0x387d); + re_mdio_write(sc, 0x06, 0xae1d); + re_mdio_write(sc, 0x06, 0xbee0); + re_mdio_write(sc, 0x06, 0xc4bf); + re_mdio_write(sc, 0x06, 0x85f6); + re_mdio_write(sc, 0x06, 0xd204); + re_mdio_write(sc, 0x06, 0xd819); + re_mdio_write(sc, 0x06, 0xd919); + re_mdio_write(sc, 0x06, 0x07dc); + re_mdio_write(sc, 0x06, 0x19dd); + re_mdio_write(sc, 0x06, 0x1907); + re_mdio_write(sc, 0x06, 0xb2f4); + re_mdio_write(sc, 0x06, 0xd400); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x1c1b); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x7dfe); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfec6); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc05); + re_mdio_write(sc, 0x06, 0xf9e2); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe3e0); + re_mdio_write(sc, 0x06, 0xeb5a); + re_mdio_write(sc, 0x06, 0x070c); + re_mdio_write(sc, 0x06, 0x031e); + re_mdio_write(sc, 0x06, 0x20e6); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe7e0); + re_mdio_write(sc, 0x06, 0xebe0); + re_mdio_write(sc, 0x06, 0xe0fc); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0xfdfd); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69e0); + re_mdio_write(sc, 0x06, 0x8b80); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x22bf); + re_mdio_write(sc, 0x06, 0x4616); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x50e0); + re_mdio_write(sc, 0x06, 0x8b44); + re_mdio_write(sc, 0x06, 0x1f01); + re_mdio_write(sc, 0x06, 0x9e15); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x44ad); + re_mdio_write(sc, 0x06, 0x2907); + re_mdio_write(sc, 0x06, 0xac28); + re_mdio_write(sc, 0x06, 0x04d1); + re_mdio_write(sc, 0x06, 0x01ae); + re_mdio_write(sc, 0x06, 0x02d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x85b0); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x7def); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x30e0); + re_mdio_write(sc, 0x06, 0xe036); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x37e1); + re_mdio_write(sc, 0x06, 0x8b3f); + re_mdio_write(sc, 0x06, 0x1f10); + re_mdio_write(sc, 0x06, 0x9e23); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x3fac); + re_mdio_write(sc, 0x06, 0x200b); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x0dac); + re_mdio_write(sc, 0x06, 0x250f); + re_mdio_write(sc, 0x06, 0xac27); + re_mdio_write(sc, 0x06, 0x11ae); + re_mdio_write(sc, 0x06, 0x1202); + re_mdio_write(sc, 0x06, 0x2c47); + re_mdio_write(sc, 0x06, 0xae0d); + re_mdio_write(sc, 0x06, 0x0285); + re_mdio_write(sc, 0x06, 0x4fae); + re_mdio_write(sc, 0x06, 0x0802); + re_mdio_write(sc, 0x06, 0x2c69); + re_mdio_write(sc, 0x06, 0xae03); + re_mdio_write(sc, 0x06, 0x022c); + re_mdio_write(sc, 0x06, 0x7cfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x6902); + re_mdio_write(sc, 0x06, 0x856c); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x14e1); + re_mdio_write(sc, 0x06, 0xe015); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x08d1); + re_mdio_write(sc, 0x06, 0x1ebf); + re_mdio_write(sc, 0x06, 0x2cd9); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x7def); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x2fd0); + re_mdio_write(sc, 0x06, 0x0b02); + re_mdio_write(sc, 0x06, 0x3682); + re_mdio_write(sc, 0x06, 0x5882); + re_mdio_write(sc, 0x06, 0x7882); + re_mdio_write(sc, 0x06, 0x9f24); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x32e1); + re_mdio_write(sc, 0x06, 0x8b33); + re_mdio_write(sc, 0x06, 0x1f10); + re_mdio_write(sc, 0x06, 0x9e1a); + re_mdio_write(sc, 0x06, 0x10e4); + re_mdio_write(sc, 0x06, 0x8b32); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x28e1); + re_mdio_write(sc, 0x06, 0xe029); + re_mdio_write(sc, 0x06, 0xf72c); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0x28e5); + re_mdio_write(sc, 0x06, 0xe029); + re_mdio_write(sc, 0x06, 0xf62c); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0x28e5); + re_mdio_write(sc, 0x06, 0xe029); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0x4077); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0x52e0); + re_mdio_write(sc, 0x06, 0xeed9); + re_mdio_write(sc, 0x06, 0xe04c); + re_mdio_write(sc, 0x06, 0xbbe0); + re_mdio_write(sc, 0x06, 0x2a00); + re_mdio_write(sc, 0x05, 0xe142); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06, PhyRegValue); + re_mdio_write(sc, 0x05, 0xe140); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x00); + if (PhyRegValue & BIT_7) + break; + } + + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue |= BIT_1; + if (sc->RequiredSecLanDonglePatch) + PhyRegValue &= ~(BIT_2); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + re_mdio_write(sc, 0x09, 0xA20F); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + re_mdio_write(sc, 0x01, 0x328A); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + PhyRegValue = re_mdio_read(sc, 0x19); + PhyRegValue &= ~BIT_0; + re_mdio_write(sc, 0x19, PhyRegValue); + PhyRegValue = re_mdio_read(sc, 0x10); + PhyRegValue &= ~BIT_10; + re_mdio_write(sc, 0x10, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + + + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); +} + +static void re_set_phy_mcu_8168f_2(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + int i; + + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + PhyRegValue = re_mdio_read(sc, 0x15); + PhyRegValue &= ~(BIT_12); + re_mdio_write(sc, 0x15, PhyRegValue); + re_mdio_write(sc, 0x00, 0x4800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x002f); + for (i = 0; i < 1000; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x1c); + if (PhyRegValue & BIT_7) + break; + } + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x18); + if (!(PhyRegValue & BIT_0)) + break; + } + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0307); + re_mdio_write(sc, 0x15, 0x0098); + re_mdio_write(sc, 0x19, 0x7c0b); + re_mdio_write(sc, 0x15, 0x0099); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x00eb); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x00f8); + re_mdio_write(sc, 0x19, 0x6f0b); + re_mdio_write(sc, 0x15, 0x00fe); + re_mdio_write(sc, 0x19, 0x6f0f); + re_mdio_write(sc, 0x15, 0x00db); + re_mdio_write(sc, 0x19, 0x6f09); + re_mdio_write(sc, 0x15, 0x00dc); + re_mdio_write(sc, 0x19, 0xaefd); + re_mdio_write(sc, 0x15, 0x00dd); + re_mdio_write(sc, 0x19, 0x6f0b); + re_mdio_write(sc, 0x15, 0x00de); + re_mdio_write(sc, 0x19, 0xc60b); + re_mdio_write(sc, 0x15, 0x00df); + re_mdio_write(sc, 0x19, 0x00fa); + re_mdio_write(sc, 0x15, 0x00e0); + re_mdio_write(sc, 0x19, 0x30e1); + re_mdio_write(sc, 0x15, 0x020c); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x020e); + re_mdio_write(sc, 0x19, 0x9813); + re_mdio_write(sc, 0x15, 0x020f); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x0210); + re_mdio_write(sc, 0x19, 0x930f); + re_mdio_write(sc, 0x15, 0x0211); + re_mdio_write(sc, 0x19, 0x9206); + re_mdio_write(sc, 0x15, 0x0212); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0213); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0214); + re_mdio_write(sc, 0x19, 0x588f); + re_mdio_write(sc, 0x15, 0x0215); + re_mdio_write(sc, 0x19, 0x5520); + re_mdio_write(sc, 0x15, 0x0216); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x0217); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0218); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0219); + re_mdio_write(sc, 0x19, 0x588d); + re_mdio_write(sc, 0x15, 0x021a); + re_mdio_write(sc, 0x19, 0x5540); + re_mdio_write(sc, 0x15, 0x021b); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x021c); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x021d); + re_mdio_write(sc, 0x19, 0x6840); + re_mdio_write(sc, 0x15, 0x021e); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x021f); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0220); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x0221); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x0222); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0223); + re_mdio_write(sc, 0x19, 0x6840); + re_mdio_write(sc, 0x15, 0x0224); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0225); + re_mdio_write(sc, 0x19, 0x3231); + re_mdio_write(sc, 0x15, 0x0000); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0300); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x48f7); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xa080); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0xf602); + re_mdio_write(sc, 0x06, 0x011b); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x2802); + re_mdio_write(sc, 0x06, 0x0135); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x4502); + re_mdio_write(sc, 0x06, 0x015f); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x6b02); + re_mdio_write(sc, 0x06, 0x80e5); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x88e1); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8a1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8b); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8c1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8e1e); + re_mdio_write(sc, 0x06, 0x01a0); + re_mdio_write(sc, 0x06, 0x00c7); + re_mdio_write(sc, 0x06, 0xaebb); + re_mdio_write(sc, 0x06, 0xbf8b); + re_mdio_write(sc, 0x06, 0x88ec); + re_mdio_write(sc, 0x06, 0x0019); + re_mdio_write(sc, 0x06, 0xa98b); + re_mdio_write(sc, 0x06, 0x90f9); + re_mdio_write(sc, 0x06, 0xeeff); + re_mdio_write(sc, 0x06, 0xf600); + re_mdio_write(sc, 0x06, 0xeeff); + re_mdio_write(sc, 0x06, 0xf7fe); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf81); + re_mdio_write(sc, 0x06, 0x9802); + re_mdio_write(sc, 0x06, 0x39f3); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf81); + re_mdio_write(sc, 0x06, 0x9b02); + re_mdio_write(sc, 0x06, 0x39f3); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8dad); + re_mdio_write(sc, 0x06, 0x2014); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8d00); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0x5a78); + re_mdio_write(sc, 0x06, 0x039e); + re_mdio_write(sc, 0x06, 0x0902); + re_mdio_write(sc, 0x06, 0x05fc); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x8802); + re_mdio_write(sc, 0x06, 0x32dd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ac); + re_mdio_write(sc, 0x06, 0x261a); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ac); + re_mdio_write(sc, 0x06, 0x2114); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ac); + re_mdio_write(sc, 0x06, 0x200e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ac); + re_mdio_write(sc, 0x06, 0x2308); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ac); + re_mdio_write(sc, 0x06, 0x2402); + re_mdio_write(sc, 0x06, 0xae38); + re_mdio_write(sc, 0x06, 0x021a); + re_mdio_write(sc, 0x06, 0xd6ee); + re_mdio_write(sc, 0x06, 0xe41c); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0xe41d); + re_mdio_write(sc, 0x06, 0x04e2); + re_mdio_write(sc, 0x06, 0xe07c); + re_mdio_write(sc, 0x06, 0xe3e0); + re_mdio_write(sc, 0x06, 0x7de0); + re_mdio_write(sc, 0x06, 0xe038); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x39ad); + re_mdio_write(sc, 0x06, 0x2e1b); + re_mdio_write(sc, 0x06, 0xad39); + re_mdio_write(sc, 0x06, 0x0dd1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x22c8); + re_mdio_write(sc, 0x06, 0x0239); + re_mdio_write(sc, 0x06, 0xf302); + re_mdio_write(sc, 0x06, 0x21f0); + re_mdio_write(sc, 0x06, 0xae0b); + re_mdio_write(sc, 0x06, 0xac38); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x0602); + re_mdio_write(sc, 0x06, 0x222d); + re_mdio_write(sc, 0x06, 0x0222); + re_mdio_write(sc, 0x06, 0x7202); + re_mdio_write(sc, 0x06, 0x1ae7); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x201a); + re_mdio_write(sc, 0x06, 0xf620); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x2afe); + re_mdio_write(sc, 0x06, 0x022c); + re_mdio_write(sc, 0x06, 0x5c02); + re_mdio_write(sc, 0x06, 0x03c5); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x6702); + re_mdio_write(sc, 0x06, 0x2e4f); + re_mdio_write(sc, 0x06, 0x0204); + re_mdio_write(sc, 0x06, 0x8902); + re_mdio_write(sc, 0x06, 0x2f7a); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x210b); + re_mdio_write(sc, 0x06, 0xf621); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x0445); + re_mdio_write(sc, 0x06, 0x021c); + re_mdio_write(sc, 0x06, 0xb8e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad22); + re_mdio_write(sc, 0x06, 0x08f6); + re_mdio_write(sc, 0x06, 0x22e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0235); + re_mdio_write(sc, 0x06, 0xd4e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad23); + re_mdio_write(sc, 0x06, 0x08f6); + re_mdio_write(sc, 0x06, 0x23e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0231); + re_mdio_write(sc, 0x06, 0xc8e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x24e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2505); + re_mdio_write(sc, 0x06, 0xf625); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8ee0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x08f6); + re_mdio_write(sc, 0x06, 0x26e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x022d); + re_mdio_write(sc, 0x06, 0x6ae0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x27e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x8bfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69e0); + re_mdio_write(sc, 0x06, 0x8b80); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x22bf); + re_mdio_write(sc, 0x06, 0x479a); + re_mdio_write(sc, 0x06, 0x0239); + re_mdio_write(sc, 0x06, 0xc6e0); + re_mdio_write(sc, 0x06, 0x8b44); + re_mdio_write(sc, 0x06, 0x1f01); + re_mdio_write(sc, 0x06, 0x9e15); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x44ad); + re_mdio_write(sc, 0x06, 0x2907); + re_mdio_write(sc, 0x06, 0xac28); + re_mdio_write(sc, 0x06, 0x04d1); + re_mdio_write(sc, 0x06, 0x01ae); + re_mdio_write(sc, 0x06, 0x02d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x819e); + re_mdio_write(sc, 0x06, 0x0239); + re_mdio_write(sc, 0x06, 0xf3ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0x4077); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0xbbe0); + re_mdio_write(sc, 0x06, 0x2a00); + re_mdio_write(sc, 0x05, 0xe142); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06, PhyRegValue); + re_mdio_write(sc, 0x05, 0xe140); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x00); + if (PhyRegValue & BIT_7) + break; + } + + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue |= BIT_1; + if (sc->RequiredSecLanDonglePatch) + PhyRegValue &= ~(BIT_2); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + PhyRegValue = re_mdio_read(sc, 0x19); + PhyRegValue &= ~BIT_0; + re_mdio_write(sc, 0x19, PhyRegValue); + PhyRegValue = re_mdio_read(sc, 0x10); + PhyRegValue &= ~BIT_10; + re_mdio_write(sc, 0x10, PhyRegValue); + + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); +} + +static void re_set_phy_mcu_8411_1(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + int i; + + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + PhyRegValue = re_mdio_read(sc, 0x15); + PhyRegValue &= ~(BIT_12); + re_mdio_write(sc, 0x15, PhyRegValue); + re_mdio_write(sc, 0x00, 0x4800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x002f); + for (i = 0; i < 1000; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x1c); + if (PhyRegValue & BIT_7) + break; + } + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x18); + if (!(PhyRegValue & BIT_0)) + break; + } + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0307); + re_mdio_write(sc, 0x15, 0x0098); + re_mdio_write(sc, 0x19, 0x7c0b); + re_mdio_write(sc, 0x15, 0x0099); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x00eb); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x00f8); + re_mdio_write(sc, 0x19, 0x6f0b); + re_mdio_write(sc, 0x15, 0x00fe); + re_mdio_write(sc, 0x19, 0x6f0f); + re_mdio_write(sc, 0x15, 0x00db); + re_mdio_write(sc, 0x19, 0x6f09); + re_mdio_write(sc, 0x15, 0x00dc); + re_mdio_write(sc, 0x19, 0xaefd); + re_mdio_write(sc, 0x15, 0x00dd); + re_mdio_write(sc, 0x19, 0x6f0b); + re_mdio_write(sc, 0x15, 0x00de); + re_mdio_write(sc, 0x19, 0xc60b); + re_mdio_write(sc, 0x15, 0x00df); + re_mdio_write(sc, 0x19, 0x00fa); + re_mdio_write(sc, 0x15, 0x00e0); + re_mdio_write(sc, 0x19, 0x30e1); + re_mdio_write(sc, 0x15, 0x020c); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x020e); + re_mdio_write(sc, 0x19, 0x9813); + re_mdio_write(sc, 0x15, 0x020f); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x0210); + re_mdio_write(sc, 0x19, 0x930f); + re_mdio_write(sc, 0x15, 0x0211); + re_mdio_write(sc, 0x19, 0x9206); + re_mdio_write(sc, 0x15, 0x0212); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0213); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0214); + re_mdio_write(sc, 0x19, 0x588f); + re_mdio_write(sc, 0x15, 0x0215); + re_mdio_write(sc, 0x19, 0x5520); + re_mdio_write(sc, 0x15, 0x0216); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x0217); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0218); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0219); + re_mdio_write(sc, 0x19, 0x588d); + re_mdio_write(sc, 0x15, 0x021a); + re_mdio_write(sc, 0x19, 0x5540); + re_mdio_write(sc, 0x15, 0x021b); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x021c); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x021d); + re_mdio_write(sc, 0x19, 0x6840); + re_mdio_write(sc, 0x15, 0x021e); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x021f); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0220); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x0221); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x0222); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0223); + re_mdio_write(sc, 0x19, 0x6840); + re_mdio_write(sc, 0x15, 0x0224); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0225); + re_mdio_write(sc, 0x19, 0x3231); + re_mdio_write(sc, 0x15, 0x0000); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0300); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x48f7); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xa080); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0xf602); + re_mdio_write(sc, 0x06, 0x011e); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x2b02); + re_mdio_write(sc, 0x06, 0x8077); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x4802); + re_mdio_write(sc, 0x06, 0x0162); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x9402); + re_mdio_write(sc, 0x06, 0x810e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x88e1); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8a1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8b); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8c1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8e1e); + re_mdio_write(sc, 0x06, 0x01a0); + re_mdio_write(sc, 0x06, 0x00c7); + re_mdio_write(sc, 0x06, 0xaebb); + re_mdio_write(sc, 0x06, 0xd481); + re_mdio_write(sc, 0x06, 0xd4e4); + re_mdio_write(sc, 0x06, 0x8b92); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x9302); + re_mdio_write(sc, 0x06, 0x2e5a); + re_mdio_write(sc, 0x06, 0xbf8b); + re_mdio_write(sc, 0x06, 0x88ec); + re_mdio_write(sc, 0x06, 0x0019); + re_mdio_write(sc, 0x06, 0xa98b); + re_mdio_write(sc, 0x06, 0x90f9); + re_mdio_write(sc, 0x06, 0xeeff); + re_mdio_write(sc, 0x06, 0xf600); + re_mdio_write(sc, 0x06, 0xeeff); + re_mdio_write(sc, 0x06, 0xf7fc); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf83); + re_mdio_write(sc, 0x06, 0x3c02); + re_mdio_write(sc, 0x06, 0x3a21); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf83); + re_mdio_write(sc, 0x06, 0x3f02); + re_mdio_write(sc, 0x06, 0x3a21); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8aad); + re_mdio_write(sc, 0x06, 0x2014); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8a00); + re_mdio_write(sc, 0x06, 0x0220); + re_mdio_write(sc, 0x06, 0x8be0); + re_mdio_write(sc, 0x06, 0xe426); + re_mdio_write(sc, 0x06, 0xe1e4); + re_mdio_write(sc, 0x06, 0x27ee); + re_mdio_write(sc, 0x06, 0xe426); + re_mdio_write(sc, 0x06, 0x23e5); + re_mdio_write(sc, 0x06, 0xe427); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x14ee); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0x8a5a); + re_mdio_write(sc, 0x06, 0x7803); + re_mdio_write(sc, 0x06, 0x9e09); + re_mdio_write(sc, 0x06, 0x0206); + re_mdio_write(sc, 0x06, 0x2802); + re_mdio_write(sc, 0x06, 0x80b1); + re_mdio_write(sc, 0x06, 0x0232); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac26); + re_mdio_write(sc, 0x06, 0x1ae0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x14e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xac20); + re_mdio_write(sc, 0x06, 0x0ee0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xac23); + re_mdio_write(sc, 0x06, 0x08e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xac24); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x3802); + re_mdio_write(sc, 0x06, 0x1b02); + re_mdio_write(sc, 0x06, 0xeee4); + re_mdio_write(sc, 0x06, 0x1c04); + re_mdio_write(sc, 0x06, 0xeee4); + re_mdio_write(sc, 0x06, 0x1d04); + re_mdio_write(sc, 0x06, 0xe2e0); + re_mdio_write(sc, 0x06, 0x7ce3); + re_mdio_write(sc, 0x06, 0xe07d); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x38e1); + re_mdio_write(sc, 0x06, 0xe039); + re_mdio_write(sc, 0x06, 0xad2e); + re_mdio_write(sc, 0x06, 0x1bad); + re_mdio_write(sc, 0x06, 0x390d); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf22); + re_mdio_write(sc, 0x06, 0xe802); + re_mdio_write(sc, 0x06, 0x3a21); + re_mdio_write(sc, 0x06, 0x0222); + re_mdio_write(sc, 0x06, 0x10ae); + re_mdio_write(sc, 0x06, 0x0bac); + re_mdio_write(sc, 0x06, 0x3802); + re_mdio_write(sc, 0x06, 0xae06); + re_mdio_write(sc, 0x06, 0x0222); + re_mdio_write(sc, 0x06, 0x4d02); + re_mdio_write(sc, 0x06, 0x2292); + re_mdio_write(sc, 0x06, 0x021b); + re_mdio_write(sc, 0x06, 0x13fd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x1af6); + re_mdio_write(sc, 0x06, 0x20e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x022b); + re_mdio_write(sc, 0x06, 0x1e02); + re_mdio_write(sc, 0x06, 0x82ae); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0xc002); + re_mdio_write(sc, 0x06, 0x827d); + re_mdio_write(sc, 0x06, 0x022e); + re_mdio_write(sc, 0x06, 0x6f02); + re_mdio_write(sc, 0x06, 0x047b); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x9ae0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad21); + re_mdio_write(sc, 0x06, 0x0bf6); + re_mdio_write(sc, 0x06, 0x21e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x9002); + re_mdio_write(sc, 0x06, 0x1cd9); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2208); + re_mdio_write(sc, 0x06, 0xf622); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x35f4); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2308); + re_mdio_write(sc, 0x06, 0xf623); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x31e8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2405); + re_mdio_write(sc, 0x06, 0xf624); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8ee0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x25e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2608); + re_mdio_write(sc, 0x06, 0xf626); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x2d8a); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2705); + re_mdio_write(sc, 0x06, 0xf627); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x0386); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0xe001); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x32e0); + re_mdio_write(sc, 0x06, 0x8b40); + re_mdio_write(sc, 0x06, 0xf720); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x40bf); + re_mdio_write(sc, 0x06, 0x32c1); + re_mdio_write(sc, 0x06, 0x0239); + re_mdio_write(sc, 0x06, 0xf4ad); + re_mdio_write(sc, 0x06, 0x2821); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x20e1); + re_mdio_write(sc, 0x06, 0xe021); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x18e0); + re_mdio_write(sc, 0x06, 0x8b40); + re_mdio_write(sc, 0x06, 0xf620); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x40ee); + re_mdio_write(sc, 0x06, 0x8b3b); + re_mdio_write(sc, 0x06, 0xffe0); + re_mdio_write(sc, 0x06, 0x8a8a); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0x8be4); + re_mdio_write(sc, 0x06, 0xe000); + re_mdio_write(sc, 0x06, 0xe5e0); + re_mdio_write(sc, 0x06, 0x01ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xface); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69fa); + re_mdio_write(sc, 0x06, 0xd401); + re_mdio_write(sc, 0x06, 0x55b4); + re_mdio_write(sc, 0x06, 0xfebf); + re_mdio_write(sc, 0x06, 0x1c5e); + re_mdio_write(sc, 0x06, 0x0239); + re_mdio_write(sc, 0x06, 0xf4ac); + re_mdio_write(sc, 0x06, 0x280b); + re_mdio_write(sc, 0x06, 0xbf1c); + re_mdio_write(sc, 0x06, 0x5b02); + re_mdio_write(sc, 0x06, 0x39f4); + re_mdio_write(sc, 0x06, 0xac28); + re_mdio_write(sc, 0x06, 0x49ae); + re_mdio_write(sc, 0x06, 0x64bf); + re_mdio_write(sc, 0x06, 0x1c5b); + re_mdio_write(sc, 0x06, 0x0239); + re_mdio_write(sc, 0x06, 0xf4ac); + re_mdio_write(sc, 0x06, 0x285b); + re_mdio_write(sc, 0x06, 0xd000); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x62ac); + re_mdio_write(sc, 0x06, 0x2105); + re_mdio_write(sc, 0x06, 0xac22); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x4ebf); + re_mdio_write(sc, 0x06, 0xe0c4); + re_mdio_write(sc, 0x06, 0xbe85); + re_mdio_write(sc, 0x06, 0xecd2); + re_mdio_write(sc, 0x06, 0x04d8); + re_mdio_write(sc, 0x06, 0x19d9); + re_mdio_write(sc, 0x06, 0x1907); + re_mdio_write(sc, 0x06, 0xdc19); + re_mdio_write(sc, 0x06, 0xdd19); + re_mdio_write(sc, 0x06, 0x0789); + re_mdio_write(sc, 0x06, 0x89ef); + re_mdio_write(sc, 0x06, 0x645e); + re_mdio_write(sc, 0x06, 0x07ff); + re_mdio_write(sc, 0x06, 0x0d65); + re_mdio_write(sc, 0x06, 0x5cf8); + re_mdio_write(sc, 0x06, 0x001e); + re_mdio_write(sc, 0x06, 0x46dc); + re_mdio_write(sc, 0x06, 0x19dd); + re_mdio_write(sc, 0x06, 0x19b2); + re_mdio_write(sc, 0x06, 0xe2d4); + re_mdio_write(sc, 0x06, 0x0001); + re_mdio_write(sc, 0x06, 0xbf1c); + re_mdio_write(sc, 0x06, 0x5b02); + re_mdio_write(sc, 0x06, 0x3a21); + re_mdio_write(sc, 0x06, 0xae1d); + re_mdio_write(sc, 0x06, 0xbee0); + re_mdio_write(sc, 0x06, 0xc4bf); + re_mdio_write(sc, 0x06, 0x85ec); + re_mdio_write(sc, 0x06, 0xd204); + re_mdio_write(sc, 0x06, 0xd819); + re_mdio_write(sc, 0x06, 0xd919); + re_mdio_write(sc, 0x06, 0x07dc); + re_mdio_write(sc, 0x06, 0x19dd); + re_mdio_write(sc, 0x06, 0x1907); + re_mdio_write(sc, 0x06, 0xb2f4); + re_mdio_write(sc, 0x06, 0xd400); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x1c5b); + re_mdio_write(sc, 0x06, 0x023a); + re_mdio_write(sc, 0x06, 0x21fe); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfec6); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc05); + re_mdio_write(sc, 0x06, 0xf9e2); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe3e0); + re_mdio_write(sc, 0x06, 0xeb5a); + re_mdio_write(sc, 0x06, 0x070c); + re_mdio_write(sc, 0x06, 0x031e); + re_mdio_write(sc, 0x06, 0x20e6); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe7e0); + re_mdio_write(sc, 0x06, 0xebe0); + re_mdio_write(sc, 0x06, 0xe0fc); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0xfdfd); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69e0); + re_mdio_write(sc, 0x06, 0x8b80); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x22bf); + re_mdio_write(sc, 0x06, 0x47ba); + re_mdio_write(sc, 0x06, 0x0239); + re_mdio_write(sc, 0x06, 0xf4e0); + re_mdio_write(sc, 0x06, 0x8b44); + re_mdio_write(sc, 0x06, 0x1f01); + re_mdio_write(sc, 0x06, 0x9e15); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x44ad); + re_mdio_write(sc, 0x06, 0x2907); + re_mdio_write(sc, 0x06, 0xac28); + re_mdio_write(sc, 0x06, 0x04d1); + re_mdio_write(sc, 0x06, 0x01ae); + re_mdio_write(sc, 0x06, 0x02d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x8342); + re_mdio_write(sc, 0x06, 0x023a); + re_mdio_write(sc, 0x06, 0x21ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x30e0); + re_mdio_write(sc, 0x06, 0xe036); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x37e1); + re_mdio_write(sc, 0x06, 0x8b3f); + re_mdio_write(sc, 0x06, 0x1f10); + re_mdio_write(sc, 0x06, 0x9e23); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x3fac); + re_mdio_write(sc, 0x06, 0x200b); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x0dac); + re_mdio_write(sc, 0x06, 0x250f); + re_mdio_write(sc, 0x06, 0xac27); + re_mdio_write(sc, 0x06, 0x11ae); + re_mdio_write(sc, 0x06, 0x1202); + re_mdio_write(sc, 0x06, 0x2cb5); + re_mdio_write(sc, 0x06, 0xae0d); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0xe7ae); + re_mdio_write(sc, 0x06, 0x0802); + re_mdio_write(sc, 0x06, 0x2cd7); + re_mdio_write(sc, 0x06, 0xae03); + re_mdio_write(sc, 0x06, 0x022c); + re_mdio_write(sc, 0x06, 0xeafc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x6902); + re_mdio_write(sc, 0x06, 0x8304); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x14e1); + re_mdio_write(sc, 0x06, 0xe015); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x08d1); + re_mdio_write(sc, 0x06, 0x1ebf); + re_mdio_write(sc, 0x06, 0x2d47); + re_mdio_write(sc, 0x06, 0x023a); + re_mdio_write(sc, 0x06, 0x21ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x2fd0); + re_mdio_write(sc, 0x06, 0x0b02); + re_mdio_write(sc, 0x06, 0x3826); + re_mdio_write(sc, 0x06, 0x5882); + re_mdio_write(sc, 0x06, 0x7882); + re_mdio_write(sc, 0x06, 0x9f24); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x32e1); + re_mdio_write(sc, 0x06, 0x8b33); + re_mdio_write(sc, 0x06, 0x1f10); + re_mdio_write(sc, 0x06, 0x9e1a); + re_mdio_write(sc, 0x06, 0x10e4); + re_mdio_write(sc, 0x06, 0x8b32); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x28e1); + re_mdio_write(sc, 0x06, 0xe029); + re_mdio_write(sc, 0x06, 0xf72c); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0x28e5); + re_mdio_write(sc, 0x06, 0xe029); + re_mdio_write(sc, 0x06, 0xf62c); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0x28e5); + re_mdio_write(sc, 0x06, 0xe029); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0x4077); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0xbbe0); + re_mdio_write(sc, 0x06, 0x2a00); + re_mdio_write(sc, 0x05, 0xe142); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06,PhyRegValue); + re_mdio_write(sc, 0x05, 0xe140); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x00); + if (PhyRegValue & BIT_7) + break; + } + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue |= BIT_1; + if (sc->RequiredSecLanDonglePatch) + PhyRegValue &= ~(BIT_2); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0003); + re_mdio_write(sc, 0x09, 0xA20F); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0003); + re_mdio_write(sc, 0x01, 0x328A); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0003); + PhyRegValue = re_mdio_read(sc, 0x19); + PhyRegValue &= ~BIT_0; + re_mdio_write(sc, 0x19, PhyRegValue); + PhyRegValue = re_mdio_read(sc, 0x10); + PhyRegValue &= ~BIT_10; + re_mdio_write(sc, 0x10, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); +} + +static void re_set_phy_mcu_8168g_1(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + + re_set_phy_mcu_patch_request(sc); + + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8146); + re_mdio_write(sc, 0x14, 0x2300); + re_mdio_write(sc, 0x13, 0xB820); + re_mdio_write(sc, 0x14, 0x0210); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0xB820); + re_mdio_write(sc, 0x14, 0x0290); + re_mdio_write(sc, 0x13, 0xA012); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xA014); + re_mdio_write(sc, 0x14, 0x2c04); + re_mdio_write(sc, 0x14, 0x2c0c); + re_mdio_write(sc, 0x14, 0x2c6c); + re_mdio_write(sc, 0x14, 0x2d0d); + re_mdio_write(sc, 0x14, 0x31ce); + re_mdio_write(sc, 0x14, 0x506d); + re_mdio_write(sc, 0x14, 0xd708); + re_mdio_write(sc, 0x14, 0x3108); + re_mdio_write(sc, 0x14, 0x106d); + re_mdio_write(sc, 0x14, 0x1560); + re_mdio_write(sc, 0x14, 0x15a9); + re_mdio_write(sc, 0x14, 0x206e); + re_mdio_write(sc, 0x14, 0x175b); + re_mdio_write(sc, 0x14, 0x6062); + re_mdio_write(sc, 0x14, 0xd700); + re_mdio_write(sc, 0x14, 0x5fae); + re_mdio_write(sc, 0x14, 0xd708); + re_mdio_write(sc, 0x14, 0x3107); + re_mdio_write(sc, 0x14, 0x4c1e); + re_mdio_write(sc, 0x14, 0x4169); + re_mdio_write(sc, 0x14, 0x316a); + re_mdio_write(sc, 0x14, 0x0c19); + re_mdio_write(sc, 0x14, 0x31aa); + re_mdio_write(sc, 0x14, 0x0c19); + re_mdio_write(sc, 0x14, 0x2c1b); + re_mdio_write(sc, 0x14, 0x5e62); + re_mdio_write(sc, 0x14, 0x26b5); + re_mdio_write(sc, 0x14, 0x31ab); + re_mdio_write(sc, 0x14, 0x5c1e); + re_mdio_write(sc, 0x14, 0x2c0c); + re_mdio_write(sc, 0x14, 0xc040); + re_mdio_write(sc, 0x14, 0x8808); + re_mdio_write(sc, 0x14, 0xc520); + re_mdio_write(sc, 0x14, 0xc421); + re_mdio_write(sc, 0x14, 0xd05a); + re_mdio_write(sc, 0x14, 0xd19a); + re_mdio_write(sc, 0x14, 0xd709); + re_mdio_write(sc, 0x14, 0x608f); + re_mdio_write(sc, 0x14, 0xd06b); + re_mdio_write(sc, 0x14, 0xd18a); + re_mdio_write(sc, 0x14, 0x2c2c); + re_mdio_write(sc, 0x14, 0xd0be); + re_mdio_write(sc, 0x14, 0xd188); + re_mdio_write(sc, 0x14, 0x2c2c); + re_mdio_write(sc, 0x14, 0xd708); + re_mdio_write(sc, 0x14, 0x4072); + re_mdio_write(sc, 0x14, 0xc104); + re_mdio_write(sc, 0x14, 0x2c3e); + re_mdio_write(sc, 0x14, 0x4076); + re_mdio_write(sc, 0x14, 0xc110); + re_mdio_write(sc, 0x14, 0x2c3e); + re_mdio_write(sc, 0x14, 0x4071); + re_mdio_write(sc, 0x14, 0xc102); + re_mdio_write(sc, 0x14, 0x2c3e); + re_mdio_write(sc, 0x14, 0x4070); + re_mdio_write(sc, 0x14, 0xc101); + re_mdio_write(sc, 0x14, 0x2c3e); + re_mdio_write(sc, 0x14, 0x175b); + re_mdio_write(sc, 0x14, 0xd709); + re_mdio_write(sc, 0x14, 0x3390); + re_mdio_write(sc, 0x14, 0x5c39); + re_mdio_write(sc, 0x14, 0x2c4e); + re_mdio_write(sc, 0x14, 0x175b); + re_mdio_write(sc, 0x14, 0xd708); + re_mdio_write(sc, 0x14, 0x6193); + re_mdio_write(sc, 0x14, 0xd709); + re_mdio_write(sc, 0x14, 0x5f9d); + re_mdio_write(sc, 0x14, 0x408b); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x6042); + re_mdio_write(sc, 0x14, 0xb401); + re_mdio_write(sc, 0x14, 0x175b); + re_mdio_write(sc, 0x14, 0xd708); + re_mdio_write(sc, 0x14, 0x6073); + re_mdio_write(sc, 0x14, 0x5fbc); + re_mdio_write(sc, 0x14, 0x2c4d); + re_mdio_write(sc, 0x14, 0x26ed); + re_mdio_write(sc, 0x14, 0xb280); + re_mdio_write(sc, 0x14, 0xa841); + re_mdio_write(sc, 0x14, 0x9420); + re_mdio_write(sc, 0x14, 0x8710); + re_mdio_write(sc, 0x14, 0xd709); + re_mdio_write(sc, 0x14, 0x42ec); + re_mdio_write(sc, 0x14, 0x606d); + re_mdio_write(sc, 0x14, 0xd207); + re_mdio_write(sc, 0x14, 0x2c57); + re_mdio_write(sc, 0x14, 0xd203); + re_mdio_write(sc, 0x14, 0x33ff); + re_mdio_write(sc, 0x14, 0x563b); + re_mdio_write(sc, 0x14, 0x3275); + re_mdio_write(sc, 0x14, 0x7c5e); + re_mdio_write(sc, 0x14, 0xb240); + re_mdio_write(sc, 0x14, 0xb402); + re_mdio_write(sc, 0x14, 0x263b); + re_mdio_write(sc, 0x14, 0x6096); + re_mdio_write(sc, 0x14, 0xb240); + re_mdio_write(sc, 0x14, 0xb406); + re_mdio_write(sc, 0x14, 0x263b); + re_mdio_write(sc, 0x14, 0x31d7); + re_mdio_write(sc, 0x14, 0x7c67); + re_mdio_write(sc, 0x14, 0xb240); + re_mdio_write(sc, 0x14, 0xb40e); + re_mdio_write(sc, 0x14, 0x263b); + re_mdio_write(sc, 0x14, 0xb410); + re_mdio_write(sc, 0x14, 0x8802); + re_mdio_write(sc, 0x14, 0xb240); + re_mdio_write(sc, 0x14, 0x940e); + re_mdio_write(sc, 0x14, 0x263b); + re_mdio_write(sc, 0x14, 0xba04); + re_mdio_write(sc, 0x14, 0x1cd6); + re_mdio_write(sc, 0x14, 0xa902); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x4045); + re_mdio_write(sc, 0x14, 0xa980); + re_mdio_write(sc, 0x14, 0x3003); + re_mdio_write(sc, 0x14, 0x59b1); + re_mdio_write(sc, 0x14, 0xa540); + re_mdio_write(sc, 0x14, 0xa601); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4043); + re_mdio_write(sc, 0x14, 0xa910); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x60a0); + re_mdio_write(sc, 0x14, 0xca33); + re_mdio_write(sc, 0x14, 0xcb33); + re_mdio_write(sc, 0x14, 0xa941); + re_mdio_write(sc, 0x14, 0x2c82); + re_mdio_write(sc, 0x14, 0xcaff); + re_mdio_write(sc, 0x14, 0xcbff); + re_mdio_write(sc, 0x14, 0xa921); + re_mdio_write(sc, 0x14, 0xce02); + re_mdio_write(sc, 0x14, 0xe070); + re_mdio_write(sc, 0x14, 0x0f10); + re_mdio_write(sc, 0x14, 0xaf01); + re_mdio_write(sc, 0x14, 0x8f01); + re_mdio_write(sc, 0x14, 0x1766); + re_mdio_write(sc, 0x14, 0x8e02); + re_mdio_write(sc, 0x14, 0x1787); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x609c); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cd4); + re_mdio_write(sc, 0x14, 0x1ce9); + re_mdio_write(sc, 0x14, 0xce04); + re_mdio_write(sc, 0x14, 0xe070); + re_mdio_write(sc, 0x14, 0x0f20); + re_mdio_write(sc, 0x14, 0xaf01); + re_mdio_write(sc, 0x14, 0x8f01); + re_mdio_write(sc, 0x14, 0x1766); + re_mdio_write(sc, 0x14, 0x8e04); + re_mdio_write(sc, 0x14, 0x6044); + re_mdio_write(sc, 0x14, 0x2cd4); + re_mdio_write(sc, 0x14, 0xa520); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4043); + re_mdio_write(sc, 0x14, 0x2cc1); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0501); + re_mdio_write(sc, 0x14, 0x1cef); + re_mdio_write(sc, 0x14, 0xb801); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x4060); + re_mdio_write(sc, 0x14, 0x7fc4); + re_mdio_write(sc, 0x14, 0x2cd4); + re_mdio_write(sc, 0x14, 0x1cf5); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0502); + re_mdio_write(sc, 0x14, 0x1cef); + re_mdio_write(sc, 0x14, 0xb802); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x4061); + re_mdio_write(sc, 0x14, 0x7fc4); + re_mdio_write(sc, 0x14, 0x2cd4); + re_mdio_write(sc, 0x14, 0x1cf5); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0504); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6099); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cd4); + re_mdio_write(sc, 0x14, 0xc17f); + re_mdio_write(sc, 0x14, 0xc200); + re_mdio_write(sc, 0x14, 0xc43f); + re_mdio_write(sc, 0x14, 0xcc03); + re_mdio_write(sc, 0x14, 0xa701); + re_mdio_write(sc, 0x14, 0xa510); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4018); + re_mdio_write(sc, 0x14, 0x9910); + re_mdio_write(sc, 0x14, 0x8510); + re_mdio_write(sc, 0x14, 0x2860); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0504); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6099); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cd4); + re_mdio_write(sc, 0x14, 0xa608); + re_mdio_write(sc, 0x14, 0xc17d); + re_mdio_write(sc, 0x14, 0xc200); + re_mdio_write(sc, 0x14, 0xc43f); + re_mdio_write(sc, 0x14, 0xcc03); + re_mdio_write(sc, 0x14, 0xa701); + re_mdio_write(sc, 0x14, 0xa510); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4018); + re_mdio_write(sc, 0x14, 0x9910); + re_mdio_write(sc, 0x14, 0x8510); + re_mdio_write(sc, 0x14, 0x2926); + re_mdio_write(sc, 0x14, 0x1792); + re_mdio_write(sc, 0x14, 0x27db); + re_mdio_write(sc, 0x14, 0xc000); + re_mdio_write(sc, 0x14, 0xc100); + re_mdio_write(sc, 0x14, 0xc200); + re_mdio_write(sc, 0x14, 0xc300); + re_mdio_write(sc, 0x14, 0xc400); + re_mdio_write(sc, 0x14, 0xc500); + re_mdio_write(sc, 0x14, 0xc600); + re_mdio_write(sc, 0x14, 0xc7c1); + re_mdio_write(sc, 0x14, 0xc800); + re_mdio_write(sc, 0x14, 0xcc00); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xca0f); + re_mdio_write(sc, 0x14, 0xcbff); + re_mdio_write(sc, 0x14, 0xa901); + re_mdio_write(sc, 0x14, 0x8902); + re_mdio_write(sc, 0x14, 0xc900); + re_mdio_write(sc, 0x14, 0xca00); + re_mdio_write(sc, 0x14, 0xcb00); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xb804); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x6044); + re_mdio_write(sc, 0x14, 0x9804); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6099); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cd4); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xa510); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6098); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cd4); + re_mdio_write(sc, 0x14, 0x8510); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x3003); + re_mdio_write(sc, 0x14, 0x1d01); + re_mdio_write(sc, 0x14, 0x2d0b); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x60be); + re_mdio_write(sc, 0x14, 0xe060); + re_mdio_write(sc, 0x14, 0x0920); + re_mdio_write(sc, 0x14, 0x1cd6); + re_mdio_write(sc, 0x14, 0x2c89); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x3063); + re_mdio_write(sc, 0x14, 0x1948); + re_mdio_write(sc, 0x14, 0x288a); + re_mdio_write(sc, 0x14, 0x1cd6); + re_mdio_write(sc, 0x14, 0x29bd); + re_mdio_write(sc, 0x14, 0xa802); + re_mdio_write(sc, 0x14, 0xa303); + re_mdio_write(sc, 0x14, 0x843f); + re_mdio_write(sc, 0x14, 0x81ff); + re_mdio_write(sc, 0x14, 0x8208); + re_mdio_write(sc, 0x14, 0xa201); + re_mdio_write(sc, 0x14, 0xc001); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x30a0); + re_mdio_write(sc, 0x14, 0x0d1c); + re_mdio_write(sc, 0x14, 0x30a0); + re_mdio_write(sc, 0x14, 0x3d13); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7f4c); + re_mdio_write(sc, 0x14, 0x2ab6); + re_mdio_write(sc, 0x14, 0xe003); + re_mdio_write(sc, 0x14, 0x0202); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6090); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fac); + re_mdio_write(sc, 0x14, 0x2ab6); + re_mdio_write(sc, 0x14, 0xa20c); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6091); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fac); + re_mdio_write(sc, 0x14, 0x2ab6); + re_mdio_write(sc, 0x14, 0x820e); + re_mdio_write(sc, 0x14, 0xa3e0); + re_mdio_write(sc, 0x14, 0xa520); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x609d); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fac); + re_mdio_write(sc, 0x14, 0x2ab6); + re_mdio_write(sc, 0x14, 0x8520); + re_mdio_write(sc, 0x14, 0x6703); + re_mdio_write(sc, 0x14, 0x2d34); + re_mdio_write(sc, 0x14, 0xa13e); + re_mdio_write(sc, 0x14, 0xc001); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x6046); + re_mdio_write(sc, 0x14, 0x2d0d); + re_mdio_write(sc, 0x14, 0xa43f); + re_mdio_write(sc, 0x14, 0xa101); + re_mdio_write(sc, 0x14, 0xc020); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x3121); + re_mdio_write(sc, 0x14, 0x0d45); + re_mdio_write(sc, 0x14, 0x30c0); + re_mdio_write(sc, 0x14, 0x3d0d); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7f4c); + re_mdio_write(sc, 0x14, 0x2ab6); + re_mdio_write(sc, 0x14, 0xa540); + re_mdio_write(sc, 0x14, 0xc001); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4001); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0501); + re_mdio_write(sc, 0x14, 0x1dac); + re_mdio_write(sc, 0x14, 0xc1c4); + re_mdio_write(sc, 0x14, 0xa268); + re_mdio_write(sc, 0x14, 0xa303); + re_mdio_write(sc, 0x14, 0x8420); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0502); + re_mdio_write(sc, 0x14, 0x1dac); + re_mdio_write(sc, 0x14, 0xc002); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x8208); + re_mdio_write(sc, 0x14, 0x8410); + re_mdio_write(sc, 0x14, 0xa121); + re_mdio_write(sc, 0x14, 0xc002); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x8120); + re_mdio_write(sc, 0x14, 0x8180); + re_mdio_write(sc, 0x14, 0x1d97); + re_mdio_write(sc, 0x14, 0xa180); + re_mdio_write(sc, 0x14, 0xa13a); + re_mdio_write(sc, 0x14, 0x8240); + re_mdio_write(sc, 0x14, 0xa430); + re_mdio_write(sc, 0x14, 0xc010); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x30e1); + re_mdio_write(sc, 0x14, 0x0abc); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7f8c); + re_mdio_write(sc, 0x14, 0x2ab6); + re_mdio_write(sc, 0x14, 0xa480); + re_mdio_write(sc, 0x14, 0xa230); + re_mdio_write(sc, 0x14, 0xa303); + re_mdio_write(sc, 0x14, 0xc001); + re_mdio_write(sc, 0x14, 0xd70c); + re_mdio_write(sc, 0x14, 0x4124); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6120); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x3128); + re_mdio_write(sc, 0x14, 0x3d76); + re_mdio_write(sc, 0x14, 0x2d70); + re_mdio_write(sc, 0x14, 0xa801); + re_mdio_write(sc, 0x14, 0x2d6c); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0xe018); + re_mdio_write(sc, 0x14, 0x0208); + re_mdio_write(sc, 0x14, 0xa1f8); + re_mdio_write(sc, 0x14, 0x8480); + re_mdio_write(sc, 0x14, 0xc004); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x6046); + re_mdio_write(sc, 0x14, 0x2d0d); + re_mdio_write(sc, 0x14, 0xa43f); + re_mdio_write(sc, 0x14, 0xa105); + re_mdio_write(sc, 0x14, 0x8228); + re_mdio_write(sc, 0x14, 0xc004); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x81bc); + re_mdio_write(sc, 0x14, 0xa220); + re_mdio_write(sc, 0x14, 0x1d97); + re_mdio_write(sc, 0x14, 0x8220); + re_mdio_write(sc, 0x14, 0xa1bc); + re_mdio_write(sc, 0x14, 0xc040); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x30e1); + re_mdio_write(sc, 0x14, 0x0abc); + re_mdio_write(sc, 0x14, 0x30e1); + re_mdio_write(sc, 0x14, 0x3d0d); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7f4c); + re_mdio_write(sc, 0x14, 0x2ab6); + re_mdio_write(sc, 0x14, 0xa802); + re_mdio_write(sc, 0x14, 0xd70c); + re_mdio_write(sc, 0x14, 0x4244); + re_mdio_write(sc, 0x14, 0xa301); + re_mdio_write(sc, 0x14, 0xc004); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x3128); + re_mdio_write(sc, 0x14, 0x3da5); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x5f80); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x3109); + re_mdio_write(sc, 0x14, 0x3da7); + re_mdio_write(sc, 0x14, 0x2dab); + re_mdio_write(sc, 0x14, 0xa801); + re_mdio_write(sc, 0x14, 0x2d9a); + re_mdio_write(sc, 0x14, 0xa802); + re_mdio_write(sc, 0x14, 0xc004); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xa510); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x609a); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fac); + re_mdio_write(sc, 0x14, 0x2ab6); + re_mdio_write(sc, 0x14, 0x8510); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x13, 0xA01A); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xA006); + re_mdio_write(sc, 0x14, 0x0ad6); + re_mdio_write(sc, 0x13, 0xA004); + re_mdio_write(sc, 0x14, 0x07f5); + re_mdio_write(sc, 0x13, 0xA002); + re_mdio_write(sc, 0x14, 0x06a9); + re_mdio_write(sc, 0x13, 0xA000); + re_mdio_write(sc, 0x14, 0xf069); + re_mdio_write(sc, 0x13, 0xB820); + re_mdio_write(sc, 0x14, 0x0210); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x83a0); + re_mdio_write(sc, 0x14, 0xaf83); + re_mdio_write(sc, 0x14, 0xacaf); + re_mdio_write(sc, 0x14, 0x83b8); + re_mdio_write(sc, 0x14, 0xaf83); + re_mdio_write(sc, 0x14, 0xcdaf); + re_mdio_write(sc, 0x14, 0x83d3); + re_mdio_write(sc, 0x14, 0x0204); + re_mdio_write(sc, 0x14, 0x9a02); + re_mdio_write(sc, 0x14, 0x09a9); + re_mdio_write(sc, 0x14, 0x0284); + re_mdio_write(sc, 0x14, 0x61af); + re_mdio_write(sc, 0x14, 0x02fc); + re_mdio_write(sc, 0x14, 0xad20); + re_mdio_write(sc, 0x14, 0x0302); + re_mdio_write(sc, 0x14, 0x867c); + re_mdio_write(sc, 0x14, 0xad21); + re_mdio_write(sc, 0x14, 0x0302); + re_mdio_write(sc, 0x14, 0x85c9); + re_mdio_write(sc, 0x14, 0xad22); + re_mdio_write(sc, 0x14, 0x0302); + re_mdio_write(sc, 0x14, 0x1bc0); + re_mdio_write(sc, 0x14, 0xaf17); + re_mdio_write(sc, 0x14, 0xe302); + re_mdio_write(sc, 0x14, 0x8703); + re_mdio_write(sc, 0x14, 0xaf18); + re_mdio_write(sc, 0x14, 0x6201); + re_mdio_write(sc, 0x14, 0x06e0); + re_mdio_write(sc, 0x14, 0x8148); + re_mdio_write(sc, 0x14, 0xaf3c); + re_mdio_write(sc, 0x14, 0x69f8); + re_mdio_write(sc, 0x14, 0xf9fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0x10f7); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0x131f); + re_mdio_write(sc, 0x14, 0xd104); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0xf302); + re_mdio_write(sc, 0x14, 0x4259); + re_mdio_write(sc, 0x14, 0x0287); + re_mdio_write(sc, 0x14, 0x88bf); + re_mdio_write(sc, 0x14, 0x87cf); + re_mdio_write(sc, 0x14, 0xd7b8); + re_mdio_write(sc, 0x14, 0x22d0); + re_mdio_write(sc, 0x14, 0x0c02); + re_mdio_write(sc, 0x14, 0x4252); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0xcda0); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0xce8b); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0xd1f5); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0xd2a9); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0xd30a); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0xf010); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0xf38f); + re_mdio_write(sc, 0x14, 0xee81); + re_mdio_write(sc, 0x14, 0x011e); + re_mdio_write(sc, 0x14, 0xee81); + re_mdio_write(sc, 0x14, 0x0b4a); + re_mdio_write(sc, 0x14, 0xee81); + re_mdio_write(sc, 0x14, 0x0c7c); + re_mdio_write(sc, 0x14, 0xee81); + re_mdio_write(sc, 0x14, 0x127f); + re_mdio_write(sc, 0x14, 0xd100); + re_mdio_write(sc, 0x14, 0x0210); + re_mdio_write(sc, 0x14, 0xb5ee); + re_mdio_write(sc, 0x14, 0x8088); + re_mdio_write(sc, 0x14, 0xa4ee); + re_mdio_write(sc, 0x14, 0x8089); + re_mdio_write(sc, 0x14, 0x44ee); + re_mdio_write(sc, 0x14, 0x809a); + re_mdio_write(sc, 0x14, 0xa4ee); + re_mdio_write(sc, 0x14, 0x809b); + re_mdio_write(sc, 0x14, 0x44ee); + re_mdio_write(sc, 0x14, 0x809c); + re_mdio_write(sc, 0x14, 0xa7ee); + re_mdio_write(sc, 0x14, 0x80a5); + re_mdio_write(sc, 0x14, 0xa7d2); + re_mdio_write(sc, 0x14, 0x0002); + re_mdio_write(sc, 0x14, 0x0e66); + re_mdio_write(sc, 0x14, 0x0285); + re_mdio_write(sc, 0x14, 0xc0ee); + re_mdio_write(sc, 0x14, 0x87fc); + re_mdio_write(sc, 0x14, 0x00e0); + re_mdio_write(sc, 0x14, 0x8245); + re_mdio_write(sc, 0x14, 0xf622); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x45ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfdfc); + re_mdio_write(sc, 0x14, 0x0402); + re_mdio_write(sc, 0x14, 0x847a); + re_mdio_write(sc, 0x14, 0x0284); + re_mdio_write(sc, 0x14, 0xb302); + re_mdio_write(sc, 0x14, 0x0cab); + re_mdio_write(sc, 0x14, 0x020c); + re_mdio_write(sc, 0x14, 0xc402); + re_mdio_write(sc, 0x14, 0x0cef); + re_mdio_write(sc, 0x14, 0x020d); + re_mdio_write(sc, 0x14, 0x0802); + re_mdio_write(sc, 0x14, 0x0d33); + re_mdio_write(sc, 0x14, 0x020c); + re_mdio_write(sc, 0x14, 0x3d04); + re_mdio_write(sc, 0x14, 0xf8fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xe182); + re_mdio_write(sc, 0x14, 0x2fac); + re_mdio_write(sc, 0x14, 0x291a); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x24ac); + re_mdio_write(sc, 0x14, 0x2102); + re_mdio_write(sc, 0x14, 0xae22); + re_mdio_write(sc, 0x14, 0x0210); + re_mdio_write(sc, 0x14, 0x57f6); + re_mdio_write(sc, 0x14, 0x21e4); + re_mdio_write(sc, 0x14, 0x8224); + re_mdio_write(sc, 0x14, 0xd101); + re_mdio_write(sc, 0x14, 0xbf44); + re_mdio_write(sc, 0x14, 0xd202); + re_mdio_write(sc, 0x14, 0x4259); + re_mdio_write(sc, 0x14, 0xae10); + re_mdio_write(sc, 0x14, 0x0212); + re_mdio_write(sc, 0x14, 0x4cf6); + re_mdio_write(sc, 0x14, 0x29e5); + re_mdio_write(sc, 0x14, 0x822f); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x24f6); + re_mdio_write(sc, 0x14, 0x21e4); + re_mdio_write(sc, 0x14, 0x8224); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefc); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xe182); + re_mdio_write(sc, 0x14, 0x2fac); + re_mdio_write(sc, 0x14, 0x2a18); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x24ac); + re_mdio_write(sc, 0x14, 0x2202); + re_mdio_write(sc, 0x14, 0xae26); + re_mdio_write(sc, 0x14, 0x0284); + re_mdio_write(sc, 0x14, 0xf802); + re_mdio_write(sc, 0x14, 0x8565); + re_mdio_write(sc, 0x14, 0xd101); + re_mdio_write(sc, 0x14, 0xbf44); + re_mdio_write(sc, 0x14, 0xd502); + re_mdio_write(sc, 0x14, 0x4259); + re_mdio_write(sc, 0x14, 0xae0e); + re_mdio_write(sc, 0x14, 0x0284); + re_mdio_write(sc, 0x14, 0xea02); + re_mdio_write(sc, 0x14, 0x85a9); + re_mdio_write(sc, 0x14, 0xe182); + re_mdio_write(sc, 0x14, 0x2ff6); + re_mdio_write(sc, 0x14, 0x2ae5); + re_mdio_write(sc, 0x14, 0x822f); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x24f6); + re_mdio_write(sc, 0x14, 0x22e4); + re_mdio_write(sc, 0x14, 0x8224); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf9e2); + re_mdio_write(sc, 0x14, 0x8011); + re_mdio_write(sc, 0x14, 0xad31); + re_mdio_write(sc, 0x14, 0x05d2); + re_mdio_write(sc, 0x14, 0x0002); + re_mdio_write(sc, 0x14, 0x0e66); + re_mdio_write(sc, 0x14, 0xfd04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69e0); + re_mdio_write(sc, 0x14, 0x8011); + re_mdio_write(sc, 0x14, 0xad21); + re_mdio_write(sc, 0x14, 0x5cbf); + re_mdio_write(sc, 0x14, 0x43be); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x97ac); + re_mdio_write(sc, 0x14, 0x281b); + re_mdio_write(sc, 0x14, 0xbf43); + re_mdio_write(sc, 0x14, 0xc102); + re_mdio_write(sc, 0x14, 0x4297); + re_mdio_write(sc, 0x14, 0xac28); + re_mdio_write(sc, 0x14, 0x12bf); + re_mdio_write(sc, 0x14, 0x43c7); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x97ac); + re_mdio_write(sc, 0x14, 0x2804); + re_mdio_write(sc, 0x14, 0xd300); + re_mdio_write(sc, 0x14, 0xae07); + re_mdio_write(sc, 0x14, 0xd306); + re_mdio_write(sc, 0x14, 0xaf85); + re_mdio_write(sc, 0x14, 0x56d3); + re_mdio_write(sc, 0x14, 0x03e0); + re_mdio_write(sc, 0x14, 0x8011); + re_mdio_write(sc, 0x14, 0xad26); + re_mdio_write(sc, 0x14, 0x25bf); + re_mdio_write(sc, 0x14, 0x4559); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x97e2); + re_mdio_write(sc, 0x14, 0x8073); + re_mdio_write(sc, 0x14, 0x0d21); + re_mdio_write(sc, 0x14, 0xf637); + re_mdio_write(sc, 0x14, 0x0d11); + re_mdio_write(sc, 0x14, 0xf62f); + re_mdio_write(sc, 0x14, 0x1b21); + re_mdio_write(sc, 0x14, 0xaa02); + re_mdio_write(sc, 0x14, 0xae10); + re_mdio_write(sc, 0x14, 0xe280); + re_mdio_write(sc, 0x14, 0x740d); + re_mdio_write(sc, 0x14, 0x21f6); + re_mdio_write(sc, 0x14, 0x371b); + re_mdio_write(sc, 0x14, 0x21aa); + re_mdio_write(sc, 0x14, 0x0313); + re_mdio_write(sc, 0x14, 0xae02); + re_mdio_write(sc, 0x14, 0x2b02); + re_mdio_write(sc, 0x14, 0x020e); + re_mdio_write(sc, 0x14, 0x5102); + re_mdio_write(sc, 0x14, 0x0e66); + re_mdio_write(sc, 0x14, 0x020f); + re_mdio_write(sc, 0x14, 0xa3ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfdfc); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xf9fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xe080); + re_mdio_write(sc, 0x14, 0x12ad); + re_mdio_write(sc, 0x14, 0x2733); + re_mdio_write(sc, 0x14, 0xbf43); + re_mdio_write(sc, 0x14, 0xbe02); + re_mdio_write(sc, 0x14, 0x4297); + re_mdio_write(sc, 0x14, 0xac28); + re_mdio_write(sc, 0x14, 0x09bf); + re_mdio_write(sc, 0x14, 0x43c1); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x97ad); + re_mdio_write(sc, 0x14, 0x2821); + re_mdio_write(sc, 0x14, 0xbf45); + re_mdio_write(sc, 0x14, 0x5902); + re_mdio_write(sc, 0x14, 0x4297); + re_mdio_write(sc, 0x14, 0xe387); + re_mdio_write(sc, 0x14, 0xffd2); + re_mdio_write(sc, 0x14, 0x001b); + re_mdio_write(sc, 0x14, 0x45ac); + re_mdio_write(sc, 0x14, 0x2711); + re_mdio_write(sc, 0x14, 0xe187); + re_mdio_write(sc, 0x14, 0xfebf); + re_mdio_write(sc, 0x14, 0x87e4); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x590d); + re_mdio_write(sc, 0x14, 0x11bf); + re_mdio_write(sc, 0x14, 0x87e7); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x59ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfdfc); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69d1); + re_mdio_write(sc, 0x14, 0x00bf); + re_mdio_write(sc, 0x14, 0x87e4); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x59bf); + re_mdio_write(sc, 0x14, 0x87e7); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x59ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xee87); + re_mdio_write(sc, 0x14, 0xff46); + re_mdio_write(sc, 0x14, 0xee87); + re_mdio_write(sc, 0x14, 0xfe01); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69e0); + re_mdio_write(sc, 0x14, 0x8241); + re_mdio_write(sc, 0x14, 0xa000); + re_mdio_write(sc, 0x14, 0x0502); + re_mdio_write(sc, 0x14, 0x85eb); + re_mdio_write(sc, 0x14, 0xae0e); + re_mdio_write(sc, 0x14, 0xa001); + re_mdio_write(sc, 0x14, 0x0502); + re_mdio_write(sc, 0x14, 0x1a5a); + re_mdio_write(sc, 0x14, 0xae06); + re_mdio_write(sc, 0x14, 0xa002); + re_mdio_write(sc, 0x14, 0x0302); + re_mdio_write(sc, 0x14, 0x1ae6); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefc); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xf9fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x29f6); + re_mdio_write(sc, 0x14, 0x21e4); + re_mdio_write(sc, 0x14, 0x8229); + re_mdio_write(sc, 0x14, 0xe080); + re_mdio_write(sc, 0x14, 0x10ac); + re_mdio_write(sc, 0x14, 0x2202); + re_mdio_write(sc, 0x14, 0xae76); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x27f7); + re_mdio_write(sc, 0x14, 0x21e4); + re_mdio_write(sc, 0x14, 0x8227); + re_mdio_write(sc, 0x14, 0xbf43); + re_mdio_write(sc, 0x14, 0x1302); + re_mdio_write(sc, 0x14, 0x4297); + re_mdio_write(sc, 0x14, 0xef21); + re_mdio_write(sc, 0x14, 0xbf43); + re_mdio_write(sc, 0x14, 0x1602); + re_mdio_write(sc, 0x14, 0x4297); + re_mdio_write(sc, 0x14, 0x0c11); + re_mdio_write(sc, 0x14, 0x1e21); + re_mdio_write(sc, 0x14, 0xbf43); + re_mdio_write(sc, 0x14, 0x1902); + re_mdio_write(sc, 0x14, 0x4297); + re_mdio_write(sc, 0x14, 0x0c12); + re_mdio_write(sc, 0x14, 0x1e21); + re_mdio_write(sc, 0x14, 0xe682); + re_mdio_write(sc, 0x14, 0x43a2); + re_mdio_write(sc, 0x14, 0x000a); + re_mdio_write(sc, 0x14, 0xe182); + re_mdio_write(sc, 0x14, 0x27f6); + re_mdio_write(sc, 0x14, 0x29e5); + re_mdio_write(sc, 0x14, 0x8227); + re_mdio_write(sc, 0x14, 0xae42); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x44f7); + re_mdio_write(sc, 0x14, 0x21e4); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0x0246); + re_mdio_write(sc, 0x14, 0xaebf); + re_mdio_write(sc, 0x14, 0x4325); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x97ef); + re_mdio_write(sc, 0x14, 0x21bf); + re_mdio_write(sc, 0x14, 0x431c); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x970c); + re_mdio_write(sc, 0x14, 0x121e); + re_mdio_write(sc, 0x14, 0x21bf); + re_mdio_write(sc, 0x14, 0x431f); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x970c); + re_mdio_write(sc, 0x14, 0x131e); + re_mdio_write(sc, 0x14, 0x21bf); + re_mdio_write(sc, 0x14, 0x4328); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x970c); + re_mdio_write(sc, 0x14, 0x141e); + re_mdio_write(sc, 0x14, 0x21bf); + re_mdio_write(sc, 0x14, 0x44b1); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x970c); + re_mdio_write(sc, 0x14, 0x161e); + re_mdio_write(sc, 0x14, 0x21e6); + re_mdio_write(sc, 0x14, 0x8242); + re_mdio_write(sc, 0x14, 0xee82); + re_mdio_write(sc, 0x14, 0x4101); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x46a0); + re_mdio_write(sc, 0x14, 0x0005); + re_mdio_write(sc, 0x14, 0x0286); + re_mdio_write(sc, 0x14, 0x96ae); + re_mdio_write(sc, 0x14, 0x06a0); + re_mdio_write(sc, 0x14, 0x0103); + re_mdio_write(sc, 0x14, 0x0219); + re_mdio_write(sc, 0x14, 0x19ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x29f6); + re_mdio_write(sc, 0x14, 0x20e4); + re_mdio_write(sc, 0x14, 0x8229); + re_mdio_write(sc, 0x14, 0xe080); + re_mdio_write(sc, 0x14, 0x10ac); + re_mdio_write(sc, 0x14, 0x2102); + re_mdio_write(sc, 0x14, 0xae54); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x27f7); + re_mdio_write(sc, 0x14, 0x20e4); + re_mdio_write(sc, 0x14, 0x8227); + re_mdio_write(sc, 0x14, 0xbf42); + re_mdio_write(sc, 0x14, 0xe602); + re_mdio_write(sc, 0x14, 0x4297); + re_mdio_write(sc, 0x14, 0xac28); + re_mdio_write(sc, 0x14, 0x22bf); + re_mdio_write(sc, 0x14, 0x430d); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x97e5); + re_mdio_write(sc, 0x14, 0x8247); + re_mdio_write(sc, 0x14, 0xac28); + re_mdio_write(sc, 0x14, 0x20d1); + re_mdio_write(sc, 0x14, 0x03bf); + re_mdio_write(sc, 0x14, 0x4307); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x59ee); + re_mdio_write(sc, 0x14, 0x8246); + re_mdio_write(sc, 0x14, 0x00e1); + re_mdio_write(sc, 0x14, 0x8227); + re_mdio_write(sc, 0x14, 0xf628); + re_mdio_write(sc, 0x14, 0xe582); + re_mdio_write(sc, 0x14, 0x27ae); + re_mdio_write(sc, 0x14, 0x21d1); + re_mdio_write(sc, 0x14, 0x04bf); + re_mdio_write(sc, 0x14, 0x4307); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x59ae); + re_mdio_write(sc, 0x14, 0x08d1); + re_mdio_write(sc, 0x14, 0x05bf); + re_mdio_write(sc, 0x14, 0x4307); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x59e0); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0xf720); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x4402); + re_mdio_write(sc, 0x14, 0x46ae); + re_mdio_write(sc, 0x14, 0xee82); + re_mdio_write(sc, 0x14, 0x4601); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefc); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69e0); + re_mdio_write(sc, 0x14, 0x8013); + re_mdio_write(sc, 0x14, 0xad24); + re_mdio_write(sc, 0x14, 0x1cbf); + re_mdio_write(sc, 0x14, 0x87f0); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x97ad); + re_mdio_write(sc, 0x14, 0x2813); + re_mdio_write(sc, 0x14, 0xe087); + re_mdio_write(sc, 0x14, 0xfca0); + re_mdio_write(sc, 0x14, 0x0005); + re_mdio_write(sc, 0x14, 0x0287); + re_mdio_write(sc, 0x14, 0x36ae); + re_mdio_write(sc, 0x14, 0x10a0); + re_mdio_write(sc, 0x14, 0x0105); + re_mdio_write(sc, 0x14, 0x0287); + re_mdio_write(sc, 0x14, 0x48ae); + re_mdio_write(sc, 0x14, 0x08e0); + re_mdio_write(sc, 0x14, 0x8230); + re_mdio_write(sc, 0x14, 0xf626); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x30ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8e0); + re_mdio_write(sc, 0x14, 0x8245); + re_mdio_write(sc, 0x14, 0xf722); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x4502); + re_mdio_write(sc, 0x14, 0x46ae); + re_mdio_write(sc, 0x14, 0xee87); + re_mdio_write(sc, 0x14, 0xfc01); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xfb02); + re_mdio_write(sc, 0x14, 0x46d3); + re_mdio_write(sc, 0x14, 0xad50); + re_mdio_write(sc, 0x14, 0x2fbf); + re_mdio_write(sc, 0x14, 0x87ed); + re_mdio_write(sc, 0x14, 0xd101); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x59bf); + re_mdio_write(sc, 0x14, 0x87ed); + re_mdio_write(sc, 0x14, 0xd100); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x59e0); + re_mdio_write(sc, 0x14, 0x8245); + re_mdio_write(sc, 0x14, 0xf622); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x4502); + re_mdio_write(sc, 0x14, 0x46ae); + re_mdio_write(sc, 0x14, 0xd100); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0xf002); + re_mdio_write(sc, 0x14, 0x4259); + re_mdio_write(sc, 0x14, 0xee87); + re_mdio_write(sc, 0x14, 0xfc00); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x30f6); + re_mdio_write(sc, 0x14, 0x26e4); + re_mdio_write(sc, 0x14, 0x8230); + re_mdio_write(sc, 0x14, 0xffef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xface); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69fb); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0xb3d7); + re_mdio_write(sc, 0x14, 0x001c); + re_mdio_write(sc, 0x14, 0xd819); + re_mdio_write(sc, 0x14, 0xd919); + re_mdio_write(sc, 0x14, 0xda19); + re_mdio_write(sc, 0x14, 0xdb19); + re_mdio_write(sc, 0x14, 0x07ef); + re_mdio_write(sc, 0x14, 0x9502); + re_mdio_write(sc, 0x14, 0x4259); + re_mdio_write(sc, 0x14, 0x073f); + re_mdio_write(sc, 0x14, 0x0004); + re_mdio_write(sc, 0x14, 0x9fec); + re_mdio_write(sc, 0x14, 0xffef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xc6fe); + re_mdio_write(sc, 0x14, 0xfdfc); + re_mdio_write(sc, 0x14, 0x0400); + re_mdio_write(sc, 0x14, 0x0145); + re_mdio_write(sc, 0x14, 0x7d00); + re_mdio_write(sc, 0x14, 0x0345); + re_mdio_write(sc, 0x14, 0x5c00); + re_mdio_write(sc, 0x14, 0x0143); + re_mdio_write(sc, 0x14, 0x4f00); + re_mdio_write(sc, 0x14, 0x0387); + re_mdio_write(sc, 0x14, 0xdb00); + re_mdio_write(sc, 0x14, 0x0987); + re_mdio_write(sc, 0x14, 0xde00); + re_mdio_write(sc, 0x14, 0x0987); + re_mdio_write(sc, 0x14, 0xe100); + re_mdio_write(sc, 0x14, 0x0087); + re_mdio_write(sc, 0x14, 0xeaa4); + re_mdio_write(sc, 0x14, 0x00b8); + re_mdio_write(sc, 0x14, 0x20c4); + re_mdio_write(sc, 0x14, 0x1600); + re_mdio_write(sc, 0x14, 0x000f); + re_mdio_write(sc, 0x14, 0xf800); + re_mdio_write(sc, 0x14, 0x7098); + re_mdio_write(sc, 0x14, 0xa58a); + re_mdio_write(sc, 0x14, 0xb6a8); + re_mdio_write(sc, 0x14, 0x3e50); + re_mdio_write(sc, 0x14, 0xa83e); + re_mdio_write(sc, 0x14, 0x33bc); + re_mdio_write(sc, 0x14, 0xc622); + re_mdio_write(sc, 0x14, 0xbcc6); + re_mdio_write(sc, 0x14, 0xaaa4); + re_mdio_write(sc, 0x14, 0x42ff); + re_mdio_write(sc, 0x14, 0xc408); + re_mdio_write(sc, 0x14, 0x00c4); + re_mdio_write(sc, 0x14, 0x16a8); + re_mdio_write(sc, 0x14, 0xbcc0); + re_mdio_write(sc, 0x13, 0xb818); + re_mdio_write(sc, 0x14, 0x02f3); + re_mdio_write(sc, 0x13, 0xb81a); + re_mdio_write(sc, 0x14, 0x17d1); + re_mdio_write(sc, 0x13, 0xb81c); + re_mdio_write(sc, 0x14, 0x185a); + re_mdio_write(sc, 0x13, 0xb81e); + re_mdio_write(sc, 0x14, 0x3c66); + re_mdio_write(sc, 0x13, 0xb820); + re_mdio_write(sc, 0x14, 0x021f); + re_mdio_write(sc, 0x13, 0xc416); + re_mdio_write(sc, 0x14, 0x0500); + re_mdio_write(sc, 0x13, 0xb82e); + re_mdio_write(sc, 0x14, 0xfffc); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x0000); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x1f, 0x0B82); + PhyRegValue = re_mdio_read(sc, 0x10); + PhyRegValue &= ~(BIT_9); + re_mdio_write(sc, 0x10, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8146); + re_mdio_write(sc, 0x14, 0x0000); + + re_clear_phy_mcu_patch_request(sc); + if (sc->RequiredSecLanDonglePatch) { + re_mdio_write(sc, 0x1F, 0x0A43); + PhyRegValue = re_mdio_read(sc, 0x11); + PhyRegValue &= ~(BIT_6); + re_mdio_write(sc, 0x11, PhyRegValue); + } +} + +static void re_set_phy_mcu_8168gu_2(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + + re_set_phy_mcu_patch_request(sc); + + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8146); + re_mdio_write(sc, 0x14, 0x0300); + re_mdio_write(sc, 0x13, 0xB82E); + re_mdio_write(sc, 0x14, 0x0001); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0xb820); + re_mdio_write(sc, 0x14, 0x0290); + re_mdio_write(sc, 0x13, 0xa012); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xa014); + re_mdio_write(sc, 0x14, 0x2c04); + re_mdio_write(sc, 0x14, 0x2c07); + re_mdio_write(sc, 0x14, 0x2c07); + re_mdio_write(sc, 0x14, 0x2c07); + re_mdio_write(sc, 0x14, 0xa304); + re_mdio_write(sc, 0x14, 0xa301); + re_mdio_write(sc, 0x14, 0x207e); + re_mdio_write(sc, 0x13, 0xa01a); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xa006); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xa004); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xa002); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xa000); + re_mdio_write(sc, 0x14, 0x107c); + re_mdio_write(sc, 0x13, 0xb820); + re_mdio_write(sc, 0x14, 0x0210); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x0000); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x1f, 0x0B82); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8146); + re_mdio_write(sc, 0x14, 0x0000); + + re_clear_phy_mcu_patch_request(sc); + if (sc->RequiredSecLanDonglePatch) { + re_mdio_write(sc, 0x1F, 0x0A43); + PhyRegValue = re_mdio_read(sc, 0x11); + PhyRegValue &= ~(BIT_6); + re_mdio_write(sc, 0x11, PhyRegValue); + } +} + +static void re_set_phy_mcu_8411b_1(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + + re_set_phy_mcu_patch_request(sc); + + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8146); + re_mdio_write(sc, 0x14, 0x0100); + re_mdio_write(sc, 0x13, 0xB82E); + re_mdio_write(sc, 0x14, 0x0001); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0xb820); + re_mdio_write(sc, 0x14, 0x0290); + re_mdio_write(sc, 0x13, 0xa012); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xa014); + re_mdio_write(sc, 0x14, 0x2c04); + re_mdio_write(sc, 0x14, 0x2c07); + re_mdio_write(sc, 0x14, 0x2c07); + re_mdio_write(sc, 0x14, 0x2c07); + re_mdio_write(sc, 0x14, 0xa304); + re_mdio_write(sc, 0x14, 0xa301); + re_mdio_write(sc, 0x14, 0x207e); + re_mdio_write(sc, 0x13, 0xa01a); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xa006); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xa004); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xa002); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xa000); + re_mdio_write(sc, 0x14, 0x107c); + re_mdio_write(sc, 0x13, 0xb820); + re_mdio_write(sc, 0x14, 0x0210); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x0000); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x1f, 0x0B82); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8146); + re_mdio_write(sc, 0x14, 0x0000); + + re_clear_phy_mcu_patch_request(sc); + if (sc->RequiredSecLanDonglePatch) { + re_mdio_write(sc, 0x1F, 0x0A43); + PhyRegValue = re_mdio_read(sc, 0x11); + PhyRegValue &= ~(BIT_6); + re_mdio_write(sc, 0x11, PhyRegValue); + } +} + +static void re_set_phy_mcu_8168h_1(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + + re_set_phy_mcu_patch_request(sc); + + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8028); + re_mdio_write(sc, 0x14, 0x6200); + re_mdio_write(sc, 0x13, 0xB82E); + re_mdio_write(sc, 0x14, 0x0001); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0xB820); + re_mdio_write(sc, 0x14, 0x0290); + re_mdio_write(sc, 0x13, 0xA012); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xA014); + re_mdio_write(sc, 0x14, 0x2c04); + re_mdio_write(sc, 0x14, 0x2c10); + re_mdio_write(sc, 0x14, 0x2c10); + re_mdio_write(sc, 0x14, 0x2c10); + re_mdio_write(sc, 0x14, 0xa210); + re_mdio_write(sc, 0x14, 0xa101); + re_mdio_write(sc, 0x14, 0xce10); + re_mdio_write(sc, 0x14, 0xe070); + re_mdio_write(sc, 0x14, 0x0f40); + re_mdio_write(sc, 0x14, 0xaf01); + re_mdio_write(sc, 0x14, 0x8f01); + re_mdio_write(sc, 0x14, 0x183e); + re_mdio_write(sc, 0x14, 0x8e10); + re_mdio_write(sc, 0x14, 0x8101); + re_mdio_write(sc, 0x14, 0x8210); + re_mdio_write(sc, 0x14, 0x28da); + re_mdio_write(sc, 0x13, 0xA01A); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xA006); + re_mdio_write(sc, 0x14, 0x0017); + re_mdio_write(sc, 0x13, 0xA004); + re_mdio_write(sc, 0x14, 0x0015); + re_mdio_write(sc, 0x13, 0xA002); + re_mdio_write(sc, 0x14, 0x0013); + re_mdio_write(sc, 0x13, 0xA000); + re_mdio_write(sc, 0x14, 0x18d1); + re_mdio_write(sc, 0x13, 0xB820); + re_mdio_write(sc, 0x14, 0x0210); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x0000); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x1f, 0x0B82); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8028); + re_mdio_write(sc, 0x14, 0x0000); + + re_clear_phy_mcu_patch_request(sc); + if (sc->RequiredSecLanDonglePatch) { + re_mdio_write(sc, 0x1F, 0x0A43); + PhyRegValue = re_mdio_read(sc, 0x11); + PhyRegValue &= ~(BIT_6); + re_mdio_write(sc, 0x11, PhyRegValue); + } +} + +static void re_set_phy_mcu_8168h_2(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + + re_set_phy_mcu_patch_request(sc); + + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8028); + re_mdio_write(sc, 0x14, 0x6201); + re_mdio_write(sc, 0x13, 0xB82E); + re_mdio_write(sc, 0x14, 0x0001); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0xB820); + re_mdio_write(sc, 0x14, 0x0290); + re_mdio_write(sc, 0x13, 0xA012); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xA014); + re_mdio_write(sc, 0x14, 0x2c04); + re_mdio_write(sc, 0x14, 0x2c09); + re_mdio_write(sc, 0x14, 0x2c0d); + re_mdio_write(sc, 0x14, 0x2c12); + re_mdio_write(sc, 0x14, 0xad01); + re_mdio_write(sc, 0x14, 0xad01); + re_mdio_write(sc, 0x14, 0xad01); + re_mdio_write(sc, 0x14, 0xad01); + re_mdio_write(sc, 0x14, 0x236c); + re_mdio_write(sc, 0x14, 0xd03c); + re_mdio_write(sc, 0x14, 0xd1aa); + re_mdio_write(sc, 0x14, 0xc010); + re_mdio_write(sc, 0x14, 0x2745); + re_mdio_write(sc, 0x14, 0x33de); + re_mdio_write(sc, 0x14, 0x16ba); + re_mdio_write(sc, 0x14, 0x31ee); + re_mdio_write(sc, 0x14, 0x2712); + re_mdio_write(sc, 0x14, 0x274e); + re_mdio_write(sc, 0x14, 0xc2bb); + re_mdio_write(sc, 0x14, 0xd500); + re_mdio_write(sc, 0x14, 0xc426); + re_mdio_write(sc, 0x14, 0xd01d); + re_mdio_write(sc, 0x14, 0xd1c3); + re_mdio_write(sc, 0x14, 0x401c); + re_mdio_write(sc, 0x14, 0xd501); + re_mdio_write(sc, 0x14, 0xc2b3); + re_mdio_write(sc, 0x14, 0xd500); + re_mdio_write(sc, 0x14, 0xd00b); + re_mdio_write(sc, 0x14, 0xd1c3); + re_mdio_write(sc, 0x14, 0x401c); + re_mdio_write(sc, 0x14, 0x241a); + re_mdio_write(sc, 0x13, 0xA01A); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xA006); + re_mdio_write(sc, 0x14, 0x0414); + re_mdio_write(sc, 0x13, 0xA004); + re_mdio_write(sc, 0x14, 0x074c); + re_mdio_write(sc, 0x13, 0xA002); + re_mdio_write(sc, 0x14, 0x0744); + re_mdio_write(sc, 0x13, 0xA000); + re_mdio_write(sc, 0x14, 0xf36b); + re_mdio_write(sc, 0x13, 0xB820); + re_mdio_write(sc, 0x14, 0x0210); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8323); + re_mdio_write(sc, 0x14, 0xaf83); + re_mdio_write(sc, 0x14, 0x2faf); + re_mdio_write(sc, 0x14, 0x853d); + re_mdio_write(sc, 0x14, 0xaf85); + re_mdio_write(sc, 0x14, 0x3daf); + re_mdio_write(sc, 0x14, 0x853d); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x45ad); + re_mdio_write(sc, 0x14, 0x2052); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7ae3); + re_mdio_write(sc, 0x14, 0x85fe); + re_mdio_write(sc, 0x14, 0x1a03); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x85f6); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7a1b); + re_mdio_write(sc, 0x14, 0x03e4); + re_mdio_write(sc, 0x14, 0x85fa); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7be3); + re_mdio_write(sc, 0x14, 0x85fe); + re_mdio_write(sc, 0x14, 0x1a03); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x85f7); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7b1b); + re_mdio_write(sc, 0x14, 0x03e4); + re_mdio_write(sc, 0x14, 0x85fb); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7ce3); + re_mdio_write(sc, 0x14, 0x85fe); + re_mdio_write(sc, 0x14, 0x1a03); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x85f8); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7c1b); + re_mdio_write(sc, 0x14, 0x03e4); + re_mdio_write(sc, 0x14, 0x85fc); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7de3); + re_mdio_write(sc, 0x14, 0x85fe); + re_mdio_write(sc, 0x14, 0x1a03); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x85f9); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7d1b); + re_mdio_write(sc, 0x14, 0x03e4); + re_mdio_write(sc, 0x14, 0x85fd); + re_mdio_write(sc, 0x14, 0xae50); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7ee3); + re_mdio_write(sc, 0x14, 0x85ff); + re_mdio_write(sc, 0x14, 0x1a03); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x85f6); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7e1b); + re_mdio_write(sc, 0x14, 0x03e4); + re_mdio_write(sc, 0x14, 0x85fa); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7fe3); + re_mdio_write(sc, 0x14, 0x85ff); + re_mdio_write(sc, 0x14, 0x1a03); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x85f7); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7f1b); + re_mdio_write(sc, 0x14, 0x03e4); + re_mdio_write(sc, 0x14, 0x85fb); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x80e3); + re_mdio_write(sc, 0x14, 0x85ff); + re_mdio_write(sc, 0x14, 0x1a03); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x85f8); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x801b); + re_mdio_write(sc, 0x14, 0x03e4); + re_mdio_write(sc, 0x14, 0x85fc); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x81e3); + re_mdio_write(sc, 0x14, 0x85ff); + re_mdio_write(sc, 0x14, 0x1a03); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x85f9); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x811b); + re_mdio_write(sc, 0x14, 0x03e4); + re_mdio_write(sc, 0x14, 0x85fd); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xf6ad); + re_mdio_write(sc, 0x14, 0x2404); + re_mdio_write(sc, 0x14, 0xee85); + re_mdio_write(sc, 0x14, 0xf610); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xf7ad); + re_mdio_write(sc, 0x14, 0x2404); + re_mdio_write(sc, 0x14, 0xee85); + re_mdio_write(sc, 0x14, 0xf710); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xf8ad); + re_mdio_write(sc, 0x14, 0x2404); + re_mdio_write(sc, 0x14, 0xee85); + re_mdio_write(sc, 0x14, 0xf810); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xf9ad); + re_mdio_write(sc, 0x14, 0x2404); + re_mdio_write(sc, 0x14, 0xee85); + re_mdio_write(sc, 0x14, 0xf910); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xfaad); + re_mdio_write(sc, 0x14, 0x2704); + re_mdio_write(sc, 0x14, 0xee85); + re_mdio_write(sc, 0x14, 0xfa00); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xfbad); + re_mdio_write(sc, 0x14, 0x2704); + re_mdio_write(sc, 0x14, 0xee85); + re_mdio_write(sc, 0x14, 0xfb00); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xfcad); + re_mdio_write(sc, 0x14, 0x2704); + re_mdio_write(sc, 0x14, 0xee85); + re_mdio_write(sc, 0x14, 0xfc00); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xfdad); + re_mdio_write(sc, 0x14, 0x2704); + re_mdio_write(sc, 0x14, 0xee85); + re_mdio_write(sc, 0x14, 0xfd00); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x44ad); + re_mdio_write(sc, 0x14, 0x203f); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xf6e4); + re_mdio_write(sc, 0x14, 0x8288); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xfae4); + re_mdio_write(sc, 0x14, 0x8289); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x440d); + re_mdio_write(sc, 0x14, 0x0458); + re_mdio_write(sc, 0x14, 0x01bf); + re_mdio_write(sc, 0x14, 0x8264); + re_mdio_write(sc, 0x14, 0x0215); + re_mdio_write(sc, 0x14, 0x38bf); + re_mdio_write(sc, 0x14, 0x824e); + re_mdio_write(sc, 0x14, 0x0213); + re_mdio_write(sc, 0x14, 0x06a0); + re_mdio_write(sc, 0x14, 0x010f); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x44f6); + re_mdio_write(sc, 0x14, 0x20e4); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0x580f); + re_mdio_write(sc, 0x14, 0xe582); + re_mdio_write(sc, 0x14, 0x5aae); + re_mdio_write(sc, 0x14, 0x0ebf); + re_mdio_write(sc, 0x14, 0x825e); + re_mdio_write(sc, 0x14, 0xe382); + re_mdio_write(sc, 0x14, 0x44f7); + re_mdio_write(sc, 0x14, 0x3ce7); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0x0212); + re_mdio_write(sc, 0x14, 0xf0ad); + re_mdio_write(sc, 0x14, 0x213f); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xf7e4); + re_mdio_write(sc, 0x14, 0x8288); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xfbe4); + re_mdio_write(sc, 0x14, 0x8289); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x440d); + re_mdio_write(sc, 0x14, 0x0558); + re_mdio_write(sc, 0x14, 0x01bf); + re_mdio_write(sc, 0x14, 0x826b); + re_mdio_write(sc, 0x14, 0x0215); + re_mdio_write(sc, 0x14, 0x38bf); + re_mdio_write(sc, 0x14, 0x824f); + re_mdio_write(sc, 0x14, 0x0213); + re_mdio_write(sc, 0x14, 0x06a0); + re_mdio_write(sc, 0x14, 0x010f); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x44f6); + re_mdio_write(sc, 0x14, 0x21e4); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0x580f); + re_mdio_write(sc, 0x14, 0xe582); + re_mdio_write(sc, 0x14, 0x5bae); + re_mdio_write(sc, 0x14, 0x0ebf); + re_mdio_write(sc, 0x14, 0x8265); + re_mdio_write(sc, 0x14, 0xe382); + re_mdio_write(sc, 0x14, 0x44f7); + re_mdio_write(sc, 0x14, 0x3de7); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0x0212); + re_mdio_write(sc, 0x14, 0xf0ad); + re_mdio_write(sc, 0x14, 0x223f); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xf8e4); + re_mdio_write(sc, 0x14, 0x8288); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xfce4); + re_mdio_write(sc, 0x14, 0x8289); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x440d); + re_mdio_write(sc, 0x14, 0x0658); + re_mdio_write(sc, 0x14, 0x01bf); + re_mdio_write(sc, 0x14, 0x8272); + re_mdio_write(sc, 0x14, 0x0215); + re_mdio_write(sc, 0x14, 0x38bf); + re_mdio_write(sc, 0x14, 0x8250); + re_mdio_write(sc, 0x14, 0x0213); + re_mdio_write(sc, 0x14, 0x06a0); + re_mdio_write(sc, 0x14, 0x010f); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x44f6); + re_mdio_write(sc, 0x14, 0x22e4); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0x580f); + re_mdio_write(sc, 0x14, 0xe582); + re_mdio_write(sc, 0x14, 0x5cae); + re_mdio_write(sc, 0x14, 0x0ebf); + re_mdio_write(sc, 0x14, 0x826c); + re_mdio_write(sc, 0x14, 0xe382); + re_mdio_write(sc, 0x14, 0x44f7); + re_mdio_write(sc, 0x14, 0x3ee7); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0x0212); + re_mdio_write(sc, 0x14, 0xf0ad); + re_mdio_write(sc, 0x14, 0x233f); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xf9e4); + re_mdio_write(sc, 0x14, 0x8288); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xfde4); + re_mdio_write(sc, 0x14, 0x8289); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x440d); + re_mdio_write(sc, 0x14, 0x0758); + re_mdio_write(sc, 0x14, 0x01bf); + re_mdio_write(sc, 0x14, 0x8279); + re_mdio_write(sc, 0x14, 0x0215); + re_mdio_write(sc, 0x14, 0x38bf); + re_mdio_write(sc, 0x14, 0x8251); + re_mdio_write(sc, 0x14, 0x0213); + re_mdio_write(sc, 0x14, 0x06a0); + re_mdio_write(sc, 0x14, 0x010f); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x44f6); + re_mdio_write(sc, 0x14, 0x23e4); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0x580f); + re_mdio_write(sc, 0x14, 0xe582); + re_mdio_write(sc, 0x14, 0x5dae); + re_mdio_write(sc, 0x14, 0x0ebf); + re_mdio_write(sc, 0x14, 0x8273); + re_mdio_write(sc, 0x14, 0xe382); + re_mdio_write(sc, 0x14, 0x44f7); + re_mdio_write(sc, 0x14, 0x3fe7); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0x0212); + re_mdio_write(sc, 0x14, 0xf0ee); + re_mdio_write(sc, 0x14, 0x8288); + re_mdio_write(sc, 0x14, 0x10ee); + re_mdio_write(sc, 0x14, 0x8289); + re_mdio_write(sc, 0x14, 0x00af); + re_mdio_write(sc, 0x14, 0x14aa); + re_mdio_write(sc, 0x13, 0xb818); + re_mdio_write(sc, 0x14, 0x13cf); + re_mdio_write(sc, 0x13, 0xb81a); + re_mdio_write(sc, 0x14, 0xfffd); + re_mdio_write(sc, 0x13, 0xb81c); + re_mdio_write(sc, 0x14, 0xfffd); + re_mdio_write(sc, 0x13, 0xb81e); + re_mdio_write(sc, 0x14, 0xfffd); + re_mdio_write(sc, 0x13, 0xb832); + re_mdio_write(sc, 0x14, 0x0001); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x0000); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x1f, 0x0B82); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8028); + re_mdio_write(sc, 0x14, 0x0000); + + re_clear_phy_mcu_patch_request(sc); + if (sc->RequiredSecLanDonglePatch) { + re_mdio_write(sc, 0x1F, 0x0A43); + PhyRegValue = re_mdio_read(sc, 0x11); + PhyRegValue &= ~(BIT_6); + re_mdio_write(sc, 0x11, PhyRegValue); + } +} + +static void re_set_phy_mcu_8168h_3(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + + re_set_phy_mcu_patch_request(sc); + + + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8042); + re_mdio_write(sc, 0x14, 0x3800); + re_mdio_write(sc, 0x13, 0xB82E); + re_mdio_write(sc, 0x14, 0x0001); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0xB820); + re_mdio_write(sc, 0x14, 0x0090); + re_mdio_write(sc, 0x13, 0xA016); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xA012); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xA014); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x8010); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x8014); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x8022); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x8022); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x8022); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x8022); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x8022); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x8022); + re_mdio_write(sc, 0x14, 0x2b5d); + re_mdio_write(sc, 0x14, 0x0c68); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x0b3c); + re_mdio_write(sc, 0x14, 0xc2bb); + re_mdio_write(sc, 0x14, 0xd500); + re_mdio_write(sc, 0x14, 0xc426); + re_mdio_write(sc, 0x14, 0xd01d); + re_mdio_write(sc, 0x14, 0xd1c3); + re_mdio_write(sc, 0x14, 0x401c); + re_mdio_write(sc, 0x14, 0xd501); + re_mdio_write(sc, 0x14, 0xc2b3); + re_mdio_write(sc, 0x14, 0xd500); + re_mdio_write(sc, 0x14, 0xd00b); + re_mdio_write(sc, 0x14, 0xd1c3); + re_mdio_write(sc, 0x14, 0x401c); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x0478); + re_mdio_write(sc, 0x13, 0xA026); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xA024); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xA022); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xA020); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xA006); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xA004); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xA002); + re_mdio_write(sc, 0x14, 0x0472); + re_mdio_write(sc, 0x13, 0xA000); + re_mdio_write(sc, 0x14, 0x0b3a); + re_mdio_write(sc, 0x13, 0xA008); + re_mdio_write(sc, 0x14, 0x0300); + re_mdio_write(sc, 0x13, 0xB820); + re_mdio_write(sc, 0x14, 0x0010); + + + re_mdio_write(sc, 0x13, 0x83f3); + re_mdio_write(sc, 0x14, 0xaf84); + re_mdio_write(sc, 0x14, 0x0baf); + re_mdio_write(sc, 0x14, 0x8466); + re_mdio_write(sc, 0x14, 0xaf84); + re_mdio_write(sc, 0x14, 0xcdaf); + re_mdio_write(sc, 0x14, 0x873c); + re_mdio_write(sc, 0x14, 0xaf87); + re_mdio_write(sc, 0x14, 0x3faf); + re_mdio_write(sc, 0x14, 0x8760); + re_mdio_write(sc, 0x14, 0xaf87); + re_mdio_write(sc, 0x14, 0x60af); + re_mdio_write(sc, 0x14, 0x8760); + re_mdio_write(sc, 0x14, 0xef79); + re_mdio_write(sc, 0x14, 0xfb89); + re_mdio_write(sc, 0x14, 0xe987); + re_mdio_write(sc, 0x14, 0xffd7); + re_mdio_write(sc, 0x14, 0x0017); + re_mdio_write(sc, 0x14, 0xd400); + re_mdio_write(sc, 0x14, 0x051c); + re_mdio_write(sc, 0x14, 0x421a); + re_mdio_write(sc, 0x14, 0x741b); + re_mdio_write(sc, 0x14, 0x97e9); + re_mdio_write(sc, 0x14, 0x87fe); + re_mdio_write(sc, 0x14, 0xffef); + re_mdio_write(sc, 0x14, 0x97e0); + re_mdio_write(sc, 0x14, 0x82aa); + re_mdio_write(sc, 0x14, 0xa000); + re_mdio_write(sc, 0x14, 0x08ef); + re_mdio_write(sc, 0x14, 0x46dc); + re_mdio_write(sc, 0x14, 0x19dd); + re_mdio_write(sc, 0x14, 0xaf1a); + re_mdio_write(sc, 0x14, 0x37a0); + re_mdio_write(sc, 0x14, 0x012d); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0xa7ac); + re_mdio_write(sc, 0x14, 0x2013); + re_mdio_write(sc, 0x14, 0xe087); + re_mdio_write(sc, 0x14, 0xffe1); + re_mdio_write(sc, 0x14, 0x87fe); + re_mdio_write(sc, 0x14, 0xac27); + re_mdio_write(sc, 0x14, 0x05a1); + re_mdio_write(sc, 0x14, 0x0807); + re_mdio_write(sc, 0x14, 0xae0f); + re_mdio_write(sc, 0x14, 0xa107); + re_mdio_write(sc, 0x14, 0x02ae); + re_mdio_write(sc, 0x14, 0x0aef); + re_mdio_write(sc, 0x14, 0x4619); + re_mdio_write(sc, 0x14, 0x19dc); + re_mdio_write(sc, 0x14, 0x19dd); + re_mdio_write(sc, 0x14, 0xaf1a); + re_mdio_write(sc, 0x14, 0x37d8); + re_mdio_write(sc, 0x14, 0x19d9); + re_mdio_write(sc, 0x14, 0x19dc); + re_mdio_write(sc, 0x14, 0x19dd); + re_mdio_write(sc, 0x14, 0xaf1a); + re_mdio_write(sc, 0x14, 0x3719); + re_mdio_write(sc, 0x14, 0x19ae); + re_mdio_write(sc, 0x14, 0xcfbf); + re_mdio_write(sc, 0x14, 0x878a); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdc3c); + re_mdio_write(sc, 0x14, 0x0005); + re_mdio_write(sc, 0x14, 0xaaf5); + re_mdio_write(sc, 0x14, 0x0249); + re_mdio_write(sc, 0x14, 0xcaef); + re_mdio_write(sc, 0x14, 0x67d7); + re_mdio_write(sc, 0x14, 0x0014); + re_mdio_write(sc, 0x14, 0x0249); + re_mdio_write(sc, 0x14, 0xe5ad); + re_mdio_write(sc, 0x14, 0x50f7); + re_mdio_write(sc, 0x14, 0xd400); + re_mdio_write(sc, 0x14, 0x01bf); + re_mdio_write(sc, 0x14, 0x46a7); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0x98bf); + re_mdio_write(sc, 0x14, 0x465c); + re_mdio_write(sc, 0x14, 0x024a); + re_mdio_write(sc, 0x14, 0x5fd4); + re_mdio_write(sc, 0x14, 0x0003); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x9c02); + re_mdio_write(sc, 0x14, 0x4498); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x9902); + re_mdio_write(sc, 0x14, 0x4a5f); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x8d02); + re_mdio_write(sc, 0x14, 0x4a5f); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x9002); + re_mdio_write(sc, 0x14, 0x44dc); + re_mdio_write(sc, 0x14, 0xad28); + re_mdio_write(sc, 0x14, 0xf7bf); + re_mdio_write(sc, 0x14, 0x8796); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdcad); + re_mdio_write(sc, 0x14, 0x28f7); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x9302); + re_mdio_write(sc, 0x14, 0x4a5f); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x9302); + re_mdio_write(sc, 0x14, 0x4a56); + re_mdio_write(sc, 0x14, 0xbf46); + re_mdio_write(sc, 0x14, 0x5c02); + re_mdio_write(sc, 0x14, 0x4a56); + re_mdio_write(sc, 0x14, 0xbf45); + re_mdio_write(sc, 0x14, 0x21af); + re_mdio_write(sc, 0x14, 0x020e); + re_mdio_write(sc, 0x14, 0xee82); + re_mdio_write(sc, 0x14, 0x5000); + re_mdio_write(sc, 0x14, 0x0284); + re_mdio_write(sc, 0x14, 0xdd02); + re_mdio_write(sc, 0x14, 0x8521); + re_mdio_write(sc, 0x14, 0x0285); + re_mdio_write(sc, 0x14, 0x36af); + re_mdio_write(sc, 0x14, 0x03d2); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xfafb); + re_mdio_write(sc, 0x14, 0xef59); + re_mdio_write(sc, 0x14, 0xbf45); + re_mdio_write(sc, 0x14, 0x3002); + re_mdio_write(sc, 0x14, 0x44dc); + re_mdio_write(sc, 0x14, 0x3c00); + re_mdio_write(sc, 0x14, 0x03aa); + re_mdio_write(sc, 0x14, 0x2cbf); + re_mdio_write(sc, 0x14, 0x8790); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdcad); + re_mdio_write(sc, 0x14, 0x2823); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x9602); + re_mdio_write(sc, 0x14, 0x44dc); + re_mdio_write(sc, 0x14, 0xad28); + re_mdio_write(sc, 0x14, 0x1a02); + re_mdio_write(sc, 0x14, 0x49ca); + re_mdio_write(sc, 0x14, 0xef67); + re_mdio_write(sc, 0x14, 0xd700); + re_mdio_write(sc, 0x14, 0x0202); + re_mdio_write(sc, 0x14, 0x49e5); + re_mdio_write(sc, 0x14, 0xad50); + re_mdio_write(sc, 0x14, 0xf7bf); + re_mdio_write(sc, 0x14, 0x8793); + re_mdio_write(sc, 0x14, 0x024a); + re_mdio_write(sc, 0x14, 0x5fbf); + re_mdio_write(sc, 0x14, 0x8793); + re_mdio_write(sc, 0x14, 0x024a); + re_mdio_write(sc, 0x14, 0x56ef); + re_mdio_write(sc, 0x14, 0x95ff); + re_mdio_write(sc, 0x14, 0xfefd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xe080); + re_mdio_write(sc, 0x14, 0x15ad); + re_mdio_write(sc, 0x14, 0x2406); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x8702); + re_mdio_write(sc, 0x14, 0x4a56); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefc); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xe087); + re_mdio_write(sc, 0x14, 0xf9e1); + re_mdio_write(sc, 0x14, 0x87fa); + re_mdio_write(sc, 0x14, 0x1b10); + re_mdio_write(sc, 0x14, 0x9f1e); + re_mdio_write(sc, 0x14, 0xee87); + re_mdio_write(sc, 0x14, 0xf900); + re_mdio_write(sc, 0x14, 0xe080); + re_mdio_write(sc, 0x14, 0x15ac); + re_mdio_write(sc, 0x14, 0x2606); + re_mdio_write(sc, 0x14, 0xee87); + re_mdio_write(sc, 0x14, 0xf700); + re_mdio_write(sc, 0x14, 0xae12); + re_mdio_write(sc, 0x14, 0x0286); + re_mdio_write(sc, 0x14, 0x9d02); + re_mdio_write(sc, 0x14, 0x8565); + re_mdio_write(sc, 0x14, 0x0285); + re_mdio_write(sc, 0x14, 0x9d02); + re_mdio_write(sc, 0x14, 0x8660); + re_mdio_write(sc, 0x14, 0xae04); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x87f9); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69fa); + re_mdio_write(sc, 0x14, 0xbf45); + re_mdio_write(sc, 0x14, 0x3002); + re_mdio_write(sc, 0x14, 0x44dc); + re_mdio_write(sc, 0x14, 0xa103); + re_mdio_write(sc, 0x14, 0x22e0); + re_mdio_write(sc, 0x14, 0x87eb); + re_mdio_write(sc, 0x14, 0xe187); + re_mdio_write(sc, 0x14, 0xecef); + re_mdio_write(sc, 0x14, 0x64bf); + re_mdio_write(sc, 0x14, 0x876f); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdc1b); + re_mdio_write(sc, 0x14, 0x46aa); + re_mdio_write(sc, 0x14, 0x0abf); + re_mdio_write(sc, 0x14, 0x8772); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdc1b); + re_mdio_write(sc, 0x14, 0x46ab); + re_mdio_write(sc, 0x14, 0x06bf); + re_mdio_write(sc, 0x14, 0x876c); + re_mdio_write(sc, 0x14, 0x024a); + re_mdio_write(sc, 0x14, 0x5ffe); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xef59); + re_mdio_write(sc, 0x14, 0xf9bf); + re_mdio_write(sc, 0x14, 0x4530); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdca1); + re_mdio_write(sc, 0x14, 0x0310); + re_mdio_write(sc, 0x14, 0xe087); + re_mdio_write(sc, 0x14, 0xf7ac); + re_mdio_write(sc, 0x14, 0x2605); + re_mdio_write(sc, 0x14, 0x0285); + re_mdio_write(sc, 0x14, 0xc9ae); + re_mdio_write(sc, 0x14, 0x0d02); + re_mdio_write(sc, 0x14, 0x8613); + re_mdio_write(sc, 0x14, 0xae08); + re_mdio_write(sc, 0x14, 0xe287); + re_mdio_write(sc, 0x14, 0xf7f6); + re_mdio_write(sc, 0x14, 0x36e6); + re_mdio_write(sc, 0x14, 0x87f7); + re_mdio_write(sc, 0x14, 0xfdef); + re_mdio_write(sc, 0x14, 0x95fd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xfafb); + re_mdio_write(sc, 0x14, 0xef79); + re_mdio_write(sc, 0x14, 0xfbbf); + re_mdio_write(sc, 0x14, 0x876f); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdcef); + re_mdio_write(sc, 0x14, 0x64e2); + re_mdio_write(sc, 0x14, 0x87e9); + re_mdio_write(sc, 0x14, 0xe387); + re_mdio_write(sc, 0x14, 0xea1b); + re_mdio_write(sc, 0x14, 0x659e); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x87e9); + re_mdio_write(sc, 0x14, 0xe587); + re_mdio_write(sc, 0x14, 0xeae2); + re_mdio_write(sc, 0x14, 0x87f7); + re_mdio_write(sc, 0x14, 0xf636); + re_mdio_write(sc, 0x14, 0xe687); + re_mdio_write(sc, 0x14, 0xf7ae); + re_mdio_write(sc, 0x14, 0x19e2); + re_mdio_write(sc, 0x14, 0x87f7); + re_mdio_write(sc, 0x14, 0xf736); + re_mdio_write(sc, 0x14, 0xe687); + re_mdio_write(sc, 0x14, 0xf700); + re_mdio_write(sc, 0x14, 0x00ae); + re_mdio_write(sc, 0x14, 0x0200); + re_mdio_write(sc, 0x14, 0x0002); + re_mdio_write(sc, 0x14, 0x49ca); + re_mdio_write(sc, 0x14, 0xef57); + re_mdio_write(sc, 0x14, 0xe687); + re_mdio_write(sc, 0x14, 0xe7e7); + re_mdio_write(sc, 0x14, 0x87e8); + re_mdio_write(sc, 0x14, 0xffef); + re_mdio_write(sc, 0x14, 0x97ff); + re_mdio_write(sc, 0x14, 0xfefd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xfafb); + re_mdio_write(sc, 0x14, 0xef79); + re_mdio_write(sc, 0x14, 0xfbe2); + re_mdio_write(sc, 0x14, 0x87e7); + re_mdio_write(sc, 0x14, 0xe387); + re_mdio_write(sc, 0x14, 0xe8ef); + re_mdio_write(sc, 0x14, 0x65e2); + re_mdio_write(sc, 0x14, 0x87fb); + re_mdio_write(sc, 0x14, 0xe387); + re_mdio_write(sc, 0x14, 0xfcef); + re_mdio_write(sc, 0x14, 0x7502); + re_mdio_write(sc, 0x14, 0x49e5); + re_mdio_write(sc, 0x14, 0xac50); + re_mdio_write(sc, 0x14, 0x1abf); + re_mdio_write(sc, 0x14, 0x876f); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdcef); + re_mdio_write(sc, 0x14, 0x64e2); + re_mdio_write(sc, 0x14, 0x87e9); + re_mdio_write(sc, 0x14, 0xe387); + re_mdio_write(sc, 0x14, 0xea1b); + re_mdio_write(sc, 0x14, 0x659e); + re_mdio_write(sc, 0x14, 0x16e4); + re_mdio_write(sc, 0x14, 0x87e9); + re_mdio_write(sc, 0x14, 0xe587); + re_mdio_write(sc, 0x14, 0xeaae); + re_mdio_write(sc, 0x14, 0x06bf); + re_mdio_write(sc, 0x14, 0x876c); + re_mdio_write(sc, 0x14, 0x024a); + re_mdio_write(sc, 0x14, 0x5fe2); + re_mdio_write(sc, 0x14, 0x87f7); + re_mdio_write(sc, 0x14, 0xf636); + re_mdio_write(sc, 0x14, 0xe687); + re_mdio_write(sc, 0x14, 0xf7ff); + re_mdio_write(sc, 0x14, 0xef97); + re_mdio_write(sc, 0x14, 0xfffe); + re_mdio_write(sc, 0x14, 0xfdfc); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xf9fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x6602); + re_mdio_write(sc, 0x14, 0x44dc); + re_mdio_write(sc, 0x14, 0xad28); + re_mdio_write(sc, 0x14, 0x29bf); + re_mdio_write(sc, 0x14, 0x8763); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdcef); + re_mdio_write(sc, 0x14, 0x54bf); + re_mdio_write(sc, 0x14, 0x8760); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdcac); + re_mdio_write(sc, 0x14, 0x290d); + re_mdio_write(sc, 0x14, 0xac28); + re_mdio_write(sc, 0x14, 0x05a3); + re_mdio_write(sc, 0x14, 0x020c); + re_mdio_write(sc, 0x14, 0xae10); + re_mdio_write(sc, 0x14, 0xa303); + re_mdio_write(sc, 0x14, 0x07ae); + re_mdio_write(sc, 0x14, 0x0ba3); + re_mdio_write(sc, 0x14, 0x0402); + re_mdio_write(sc, 0x14, 0xae06); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x6c02); + re_mdio_write(sc, 0x14, 0x4a5f); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xfafb); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xfae0); + re_mdio_write(sc, 0x14, 0x8015); + re_mdio_write(sc, 0x14, 0xad25); + re_mdio_write(sc, 0x14, 0x41d2); + re_mdio_write(sc, 0x14, 0x0002); + re_mdio_write(sc, 0x14, 0x86f3); + re_mdio_write(sc, 0x14, 0xe087); + re_mdio_write(sc, 0x14, 0xebe1); + re_mdio_write(sc, 0x14, 0x87ec); + re_mdio_write(sc, 0x14, 0x1b46); + re_mdio_write(sc, 0x14, 0xab26); + re_mdio_write(sc, 0x14, 0xd40b); + re_mdio_write(sc, 0x14, 0xff1b); + re_mdio_write(sc, 0x14, 0x46aa); + re_mdio_write(sc, 0x14, 0x1fac); + re_mdio_write(sc, 0x14, 0x3204); + re_mdio_write(sc, 0x14, 0xef32); + re_mdio_write(sc, 0x14, 0xae02); + re_mdio_write(sc, 0x14, 0xd304); + re_mdio_write(sc, 0x14, 0x0c31); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0xeb1a); + re_mdio_write(sc, 0x14, 0x93d8); + re_mdio_write(sc, 0x14, 0x19d9); + re_mdio_write(sc, 0x14, 0x1b46); + re_mdio_write(sc, 0x14, 0xab0e); + re_mdio_write(sc, 0x14, 0x19d8); + re_mdio_write(sc, 0x14, 0x19d9); + re_mdio_write(sc, 0x14, 0x1b46); + re_mdio_write(sc, 0x14, 0xaa06); + re_mdio_write(sc, 0x14, 0x12a2); + re_mdio_write(sc, 0x14, 0x08c9); + re_mdio_write(sc, 0x14, 0xae06); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x6902); + re_mdio_write(sc, 0x14, 0x4a5f); + re_mdio_write(sc, 0x14, 0xfeef); + re_mdio_write(sc, 0x14, 0x96ff); + re_mdio_write(sc, 0x14, 0xfefd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8fb); + re_mdio_write(sc, 0x14, 0xef79); + re_mdio_write(sc, 0x14, 0xa200); + re_mdio_write(sc, 0x14, 0x05bf); + re_mdio_write(sc, 0x14, 0x876f); + re_mdio_write(sc, 0x14, 0xae33); + re_mdio_write(sc, 0x14, 0xa201); + re_mdio_write(sc, 0x14, 0x05bf); + re_mdio_write(sc, 0x14, 0x8772); + re_mdio_write(sc, 0x14, 0xae2b); + re_mdio_write(sc, 0x14, 0xa202); + re_mdio_write(sc, 0x14, 0x05bf); + re_mdio_write(sc, 0x14, 0x8775); + re_mdio_write(sc, 0x14, 0xae23); + re_mdio_write(sc, 0x14, 0xa203); + re_mdio_write(sc, 0x14, 0x05bf); + re_mdio_write(sc, 0x14, 0x8778); + re_mdio_write(sc, 0x14, 0xae1b); + re_mdio_write(sc, 0x14, 0xa204); + re_mdio_write(sc, 0x14, 0x05bf); + re_mdio_write(sc, 0x14, 0x877b); + re_mdio_write(sc, 0x14, 0xae13); + re_mdio_write(sc, 0x14, 0xa205); + re_mdio_write(sc, 0x14, 0x05bf); + re_mdio_write(sc, 0x14, 0x877e); + re_mdio_write(sc, 0x14, 0xae0b); + re_mdio_write(sc, 0x14, 0xa206); + re_mdio_write(sc, 0x14, 0x05bf); + re_mdio_write(sc, 0x14, 0x8781); + re_mdio_write(sc, 0x14, 0xae03); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x8402); + re_mdio_write(sc, 0x14, 0x44dc); + re_mdio_write(sc, 0x14, 0xef64); + re_mdio_write(sc, 0x14, 0xef97); + re_mdio_write(sc, 0x14, 0xfffc); + re_mdio_write(sc, 0x14, 0x04af); + re_mdio_write(sc, 0x14, 0x00ed); + re_mdio_write(sc, 0x14, 0x0220); + re_mdio_write(sc, 0x14, 0xa5f8); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69bf); + re_mdio_write(sc, 0x14, 0x4554); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdce0); + re_mdio_write(sc, 0x14, 0x87ff); + re_mdio_write(sc, 0x14, 0x1f01); + re_mdio_write(sc, 0x14, 0x9e06); + re_mdio_write(sc, 0x14, 0xe587); + re_mdio_write(sc, 0x14, 0xff02); + re_mdio_write(sc, 0x14, 0x4b05); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefc); + re_mdio_write(sc, 0x14, 0xaf03); + re_mdio_write(sc, 0x14, 0x8c54); + re_mdio_write(sc, 0x14, 0xa434); + re_mdio_write(sc, 0x14, 0x74a6); + re_mdio_write(sc, 0x14, 0x0022); + re_mdio_write(sc, 0x14, 0xa434); + re_mdio_write(sc, 0x14, 0x11b8); + re_mdio_write(sc, 0x14, 0x4222); + re_mdio_write(sc, 0x14, 0xb842); + re_mdio_write(sc, 0x14, 0xf0a2); + re_mdio_write(sc, 0x14, 0x00f0); + re_mdio_write(sc, 0x14, 0xa202); + re_mdio_write(sc, 0x14, 0xf0a2); + re_mdio_write(sc, 0x14, 0x04f0); + re_mdio_write(sc, 0x14, 0xa206); + re_mdio_write(sc, 0x14, 0xf0a2); + re_mdio_write(sc, 0x14, 0x08f0); + re_mdio_write(sc, 0x14, 0xa20a); + re_mdio_write(sc, 0x14, 0xf0a2); + re_mdio_write(sc, 0x14, 0x0cf0); + re_mdio_write(sc, 0x14, 0xa20e); + re_mdio_write(sc, 0x14, 0x55b8); + re_mdio_write(sc, 0x14, 0x20d9); + re_mdio_write(sc, 0x14, 0xc608); + re_mdio_write(sc, 0x14, 0xaac4); + re_mdio_write(sc, 0x14, 0x3000); + re_mdio_write(sc, 0x14, 0xc614); + re_mdio_write(sc, 0x14, 0x33c4); + re_mdio_write(sc, 0x14, 0x1a88); + re_mdio_write(sc, 0x14, 0xc42e); + re_mdio_write(sc, 0x14, 0x22c4); + re_mdio_write(sc, 0x14, 0x2e54); + re_mdio_write(sc, 0x14, 0xc41a); + re_mdio_write(sc, 0x13, 0xb818); + re_mdio_write(sc, 0x14, 0x1a01); + re_mdio_write(sc, 0x13, 0xb81a); + re_mdio_write(sc, 0x14, 0x020b); + re_mdio_write(sc, 0x13, 0xb81c); + re_mdio_write(sc, 0x14, 0x03ce); + re_mdio_write(sc, 0x13, 0xb81e); + re_mdio_write(sc, 0x14, 0x00e7); + re_mdio_write(sc, 0x13, 0xb846); + re_mdio_write(sc, 0x14, 0x0389); + re_mdio_write(sc, 0x13, 0xb848); + re_mdio_write(sc, 0x14, 0xffff); + re_mdio_write(sc, 0x13, 0xb84a); + re_mdio_write(sc, 0x14, 0xffff); + re_mdio_write(sc, 0x13, 0xb84c); + re_mdio_write(sc, 0x14, 0xffff); + re_mdio_write(sc, 0x13, 0xb832); + re_mdio_write(sc, 0x14, 0x001f); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x0000); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x1f, 0x0B82); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8042); + re_mdio_write(sc, 0x14, 0x0000); + + re_clear_phy_mcu_patch_request(sc); + + if (sc->RequiredSecLanDonglePatch) { + re_mdio_write(sc, 0x1F, 0x0A43); + PhyRegValue = re_mdio_read(sc, 0x11); + PhyRegValue &= ~(BIT_6); + re_mdio_write(sc, 0x11, PhyRegValue); + } +} + +static void re_set_phy_mcu_8168ep_1(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + + re_set_phy_mcu_patch_request(sc); + + re_mdio_write(sc,0x1f, 0x0A43); + re_mdio_write(sc,0x13, 0x8146); + re_mdio_write(sc,0x14, 0x2700); + re_mdio_write(sc,0x13, 0xB82E); + re_mdio_write(sc,0x14, 0x0001); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0xb820); + re_mdio_write(sc, 0x14, 0x0090); + re_mdio_write(sc, 0x13, 0xa012); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xa014); + re_mdio_write(sc, 0x14, 0x2c04); + re_mdio_write(sc, 0x14, 0x2c1b); + re_mdio_write(sc, 0x14, 0x2c65); + re_mdio_write(sc, 0x14, 0x2d14); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x4092); + re_mdio_write(sc, 0x14, 0xba04); + re_mdio_write(sc, 0x14, 0x3084); + re_mdio_write(sc, 0x14, 0x1d04); + re_mdio_write(sc, 0x14, 0x1cdd); + re_mdio_write(sc, 0x14, 0x1ce8); + re_mdio_write(sc, 0x14, 0xaeff); + re_mdio_write(sc, 0x14, 0xaf02); + re_mdio_write(sc, 0x14, 0x8f02); + re_mdio_write(sc, 0x14, 0x8eff); + re_mdio_write(sc, 0x14, 0xce01); + re_mdio_write(sc, 0x14, 0xe070); + re_mdio_write(sc, 0x14, 0x0f00); + re_mdio_write(sc, 0x14, 0xaf01); + re_mdio_write(sc, 0x14, 0x8f01); + re_mdio_write(sc, 0x14, 0xd712); + re_mdio_write(sc, 0x14, 0x5fe8); + re_mdio_write(sc, 0x14, 0xaf02); + re_mdio_write(sc, 0x14, 0x8f02); + re_mdio_write(sc, 0x14, 0x8e01); + re_mdio_write(sc, 0x14, 0x1cf2); + re_mdio_write(sc, 0x14, 0x2825); + re_mdio_write(sc, 0x14, 0xd05a); + re_mdio_write(sc, 0x14, 0xd19a); + re_mdio_write(sc, 0x14, 0xd709); + re_mdio_write(sc, 0x14, 0x608f); + re_mdio_write(sc, 0x14, 0xd06b); + re_mdio_write(sc, 0x14, 0xd18a); + re_mdio_write(sc, 0x14, 0x2c25); + re_mdio_write(sc, 0x14, 0xd0be); + re_mdio_write(sc, 0x14, 0xd188); + re_mdio_write(sc, 0x14, 0x2c25); + re_mdio_write(sc, 0x14, 0xd708); + re_mdio_write(sc, 0x14, 0x4072); + re_mdio_write(sc, 0x14, 0xc104); + re_mdio_write(sc, 0x14, 0x2c37); + re_mdio_write(sc, 0x14, 0x4076); + re_mdio_write(sc, 0x14, 0xc110); + re_mdio_write(sc, 0x14, 0x2c37); + re_mdio_write(sc, 0x14, 0x4071); + re_mdio_write(sc, 0x14, 0xc102); + re_mdio_write(sc, 0x14, 0x2c37); + re_mdio_write(sc, 0x14, 0x4070); + re_mdio_write(sc, 0x14, 0xc101); + re_mdio_write(sc, 0x14, 0x2c37); + re_mdio_write(sc, 0x14, 0x1786); + re_mdio_write(sc, 0x14, 0xd709); + re_mdio_write(sc, 0x14, 0x3390); + re_mdio_write(sc, 0x14, 0x5c32); + re_mdio_write(sc, 0x14, 0x2c47); + re_mdio_write(sc, 0x14, 0x1786); + re_mdio_write(sc, 0x14, 0xd708); + re_mdio_write(sc, 0x14, 0x6193); + re_mdio_write(sc, 0x14, 0xd709); + re_mdio_write(sc, 0x14, 0x5f9d); + re_mdio_write(sc, 0x14, 0x408b); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x6042); + re_mdio_write(sc, 0x14, 0xb401); + re_mdio_write(sc, 0x14, 0x1786); + re_mdio_write(sc, 0x14, 0xd708); + re_mdio_write(sc, 0x14, 0x6073); + re_mdio_write(sc, 0x14, 0x5fbc); + re_mdio_write(sc, 0x14, 0x2c46); + re_mdio_write(sc, 0x14, 0x26fe); + re_mdio_write(sc, 0x14, 0xb280); + re_mdio_write(sc, 0x14, 0xa841); + re_mdio_write(sc, 0x14, 0x94e0); + re_mdio_write(sc, 0x14, 0x8710); + re_mdio_write(sc, 0x14, 0xd709); + re_mdio_write(sc, 0x14, 0x42ec); + re_mdio_write(sc, 0x14, 0x606d); + re_mdio_write(sc, 0x14, 0xd207); + re_mdio_write(sc, 0x14, 0x2c50); + re_mdio_write(sc, 0x14, 0xd203); + re_mdio_write(sc, 0x14, 0x33ff); + re_mdio_write(sc, 0x14, 0x5647); + re_mdio_write(sc, 0x14, 0x3275); + re_mdio_write(sc, 0x14, 0x7c57); + re_mdio_write(sc, 0x14, 0xb240); + re_mdio_write(sc, 0x14, 0xb402); + re_mdio_write(sc, 0x14, 0x2647); + re_mdio_write(sc, 0x14, 0x6096); + re_mdio_write(sc, 0x14, 0xb240); + re_mdio_write(sc, 0x14, 0xb406); + re_mdio_write(sc, 0x14, 0x2647); + re_mdio_write(sc, 0x14, 0x31d7); + re_mdio_write(sc, 0x14, 0x7c60); + re_mdio_write(sc, 0x14, 0xb240); + re_mdio_write(sc, 0x14, 0xb40e); + re_mdio_write(sc, 0x14, 0x2647); + re_mdio_write(sc, 0x14, 0xb410); + re_mdio_write(sc, 0x14, 0x8802); + re_mdio_write(sc, 0x14, 0xb240); + re_mdio_write(sc, 0x14, 0x940e); + re_mdio_write(sc, 0x14, 0x2647); + re_mdio_write(sc, 0x14, 0xba04); + re_mdio_write(sc, 0x14, 0x1cdd); + re_mdio_write(sc, 0x14, 0xa902); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x4045); + re_mdio_write(sc, 0x14, 0xa980); + re_mdio_write(sc, 0x14, 0x3003); + re_mdio_write(sc, 0x14, 0x5a19); + re_mdio_write(sc, 0x14, 0xa540); + re_mdio_write(sc, 0x14, 0xa601); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4043); + re_mdio_write(sc, 0x14, 0xa910); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x60a0); + re_mdio_write(sc, 0x14, 0xca33); + re_mdio_write(sc, 0x14, 0xcb33); + re_mdio_write(sc, 0x14, 0xa941); + re_mdio_write(sc, 0x14, 0x2c7b); + re_mdio_write(sc, 0x14, 0xcaff); + re_mdio_write(sc, 0x14, 0xcbff); + re_mdio_write(sc, 0x14, 0xa921); + re_mdio_write(sc, 0x14, 0xce02); + re_mdio_write(sc, 0x14, 0xe070); + re_mdio_write(sc, 0x14, 0x0f10); + re_mdio_write(sc, 0x14, 0xaf01); + re_mdio_write(sc, 0x14, 0x8f01); + re_mdio_write(sc, 0x14, 0x1791); + re_mdio_write(sc, 0x14, 0x8e02); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x41a3); + re_mdio_write(sc, 0x14, 0xa140); + re_mdio_write(sc, 0x14, 0xa220); + re_mdio_write(sc, 0x14, 0xce10); + re_mdio_write(sc, 0x14, 0xe070); + re_mdio_write(sc, 0x14, 0x0f40); + re_mdio_write(sc, 0x14, 0xaf01); + re_mdio_write(sc, 0x14, 0x8f01); + re_mdio_write(sc, 0x14, 0x1791); + re_mdio_write(sc, 0x14, 0x8e10); + re_mdio_write(sc, 0x14, 0x8140); + re_mdio_write(sc, 0x14, 0x8220); + re_mdio_write(sc, 0x14, 0xa301); + re_mdio_write(sc, 0x14, 0x17b2); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x609c); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cdb); + re_mdio_write(sc, 0x14, 0x1cf0); + re_mdio_write(sc, 0x14, 0xce04); + re_mdio_write(sc, 0x14, 0xe070); + re_mdio_write(sc, 0x14, 0x0f20); + re_mdio_write(sc, 0x14, 0xaf01); + re_mdio_write(sc, 0x14, 0x8f01); + re_mdio_write(sc, 0x14, 0x1791); + re_mdio_write(sc, 0x14, 0x8e04); + re_mdio_write(sc, 0x14, 0x6044); + re_mdio_write(sc, 0x14, 0x2cdb); + re_mdio_write(sc, 0x14, 0xa520); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4043); + re_mdio_write(sc, 0x14, 0x2cc8); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0501); + re_mdio_write(sc, 0x14, 0x1cf6); + re_mdio_write(sc, 0x14, 0xb801); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x4060); + re_mdio_write(sc, 0x14, 0x7fc4); + re_mdio_write(sc, 0x14, 0x2cdb); + re_mdio_write(sc, 0x14, 0x1cfc); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0502); + re_mdio_write(sc, 0x14, 0x1cf6); + re_mdio_write(sc, 0x14, 0xb802); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x4061); + re_mdio_write(sc, 0x14, 0x7fc4); + re_mdio_write(sc, 0x14, 0x2cdb); + re_mdio_write(sc, 0x14, 0x1cfc); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0504); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6099); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cdb); + re_mdio_write(sc, 0x14, 0xc17f); + re_mdio_write(sc, 0x14, 0xc200); + re_mdio_write(sc, 0x14, 0xc43f); + re_mdio_write(sc, 0x14, 0xcc03); + re_mdio_write(sc, 0x14, 0xa701); + re_mdio_write(sc, 0x14, 0xa510); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4018); + re_mdio_write(sc, 0x14, 0x9910); + re_mdio_write(sc, 0x14, 0x8510); + re_mdio_write(sc, 0x14, 0x28a1); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0504); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6099); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cdb); + re_mdio_write(sc, 0x14, 0xa608); + re_mdio_write(sc, 0x14, 0xc17d); + re_mdio_write(sc, 0x14, 0xc200); + re_mdio_write(sc, 0x14, 0xc43f); + re_mdio_write(sc, 0x14, 0xcc03); + re_mdio_write(sc, 0x14, 0xa701); + re_mdio_write(sc, 0x14, 0xa510); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4018); + re_mdio_write(sc, 0x14, 0x9910); + re_mdio_write(sc, 0x14, 0x8510); + re_mdio_write(sc, 0x14, 0x298e); + re_mdio_write(sc, 0x14, 0x17bd); + re_mdio_write(sc, 0x14, 0x2815); + re_mdio_write(sc, 0x14, 0xc000); + re_mdio_write(sc, 0x14, 0xc100); + re_mdio_write(sc, 0x14, 0xc200); + re_mdio_write(sc, 0x14, 0xc300); + re_mdio_write(sc, 0x14, 0xc400); + re_mdio_write(sc, 0x14, 0xc500); + re_mdio_write(sc, 0x14, 0xc600); + re_mdio_write(sc, 0x14, 0xc7c1); + re_mdio_write(sc, 0x14, 0xc800); + re_mdio_write(sc, 0x14, 0xcc00); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xca0f); + re_mdio_write(sc, 0x14, 0xcbff); + re_mdio_write(sc, 0x14, 0xa901); + re_mdio_write(sc, 0x14, 0x8902); + re_mdio_write(sc, 0x14, 0xc900); + re_mdio_write(sc, 0x14, 0xca00); + re_mdio_write(sc, 0x14, 0xcb00); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xb804); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x6044); + re_mdio_write(sc, 0x14, 0x9804); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6099); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cdb); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xa510); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6098); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cdb); + re_mdio_write(sc, 0x14, 0x8510); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x3003); + re_mdio_write(sc, 0x14, 0x1d08); + re_mdio_write(sc, 0x14, 0x2d12); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x60be); + re_mdio_write(sc, 0x14, 0xe060); + re_mdio_write(sc, 0x14, 0x0920); + re_mdio_write(sc, 0x14, 0x1cdd); + re_mdio_write(sc, 0x14, 0x2c90); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x3063); + re_mdio_write(sc, 0x14, 0x19b0); + re_mdio_write(sc, 0x14, 0x28d5); + re_mdio_write(sc, 0x14, 0x1cdd); + re_mdio_write(sc, 0x14, 0x2a25); + re_mdio_write(sc, 0x14, 0xa802); + re_mdio_write(sc, 0x14, 0xa303); + re_mdio_write(sc, 0x14, 0x843f); + re_mdio_write(sc, 0x14, 0x81ff); + re_mdio_write(sc, 0x14, 0x8208); + re_mdio_write(sc, 0x14, 0xa201); + re_mdio_write(sc, 0x14, 0xc001); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x30a0); + re_mdio_write(sc, 0x14, 0x0d23); + re_mdio_write(sc, 0x14, 0x30a0); + re_mdio_write(sc, 0x14, 0x3d1a); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7f4c); + re_mdio_write(sc, 0x14, 0x2b1e); + re_mdio_write(sc, 0x14, 0xe003); + re_mdio_write(sc, 0x14, 0x0202); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6090); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fac); + re_mdio_write(sc, 0x14, 0x2b1e); + re_mdio_write(sc, 0x14, 0xa20c); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6091); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fac); + re_mdio_write(sc, 0x14, 0x2b1e); + re_mdio_write(sc, 0x14, 0x820e); + re_mdio_write(sc, 0x14, 0xa3e0); + re_mdio_write(sc, 0x14, 0xa520); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x609d); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fac); + re_mdio_write(sc, 0x14, 0x2b1e); + re_mdio_write(sc, 0x14, 0x8520); + re_mdio_write(sc, 0x14, 0x6703); + re_mdio_write(sc, 0x14, 0x2d3b); + re_mdio_write(sc, 0x14, 0xa13e); + re_mdio_write(sc, 0x14, 0xc001); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x6046); + re_mdio_write(sc, 0x14, 0x2d14); + re_mdio_write(sc, 0x14, 0xa43f); + re_mdio_write(sc, 0x14, 0xa101); + re_mdio_write(sc, 0x14, 0xc020); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x3121); + re_mdio_write(sc, 0x14, 0x0d4c); + re_mdio_write(sc, 0x14, 0x30c0); + re_mdio_write(sc, 0x14, 0x3d14); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7f4c); + re_mdio_write(sc, 0x14, 0x2b1e); + re_mdio_write(sc, 0x14, 0xa540); + re_mdio_write(sc, 0x14, 0xc001); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4001); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0501); + re_mdio_write(sc, 0x14, 0x1db3); + re_mdio_write(sc, 0x14, 0xc1c4); + re_mdio_write(sc, 0x14, 0xa268); + re_mdio_write(sc, 0x14, 0xa303); + re_mdio_write(sc, 0x14, 0x8420); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0502); + re_mdio_write(sc, 0x14, 0x1db3); + re_mdio_write(sc, 0x14, 0xc002); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x8208); + re_mdio_write(sc, 0x14, 0x8410); + re_mdio_write(sc, 0x14, 0xa121); + re_mdio_write(sc, 0x14, 0xc002); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x8120); + re_mdio_write(sc, 0x14, 0x8180); + re_mdio_write(sc, 0x14, 0x1d9e); + re_mdio_write(sc, 0x14, 0xa180); + re_mdio_write(sc, 0x14, 0xa13a); + re_mdio_write(sc, 0x14, 0x8240); + re_mdio_write(sc, 0x14, 0xa430); + re_mdio_write(sc, 0x14, 0xc010); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x30e1); + re_mdio_write(sc, 0x14, 0x0b24); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7f8c); + re_mdio_write(sc, 0x14, 0x2b1e); + re_mdio_write(sc, 0x14, 0xa480); + re_mdio_write(sc, 0x14, 0xa230); + re_mdio_write(sc, 0x14, 0xa303); + re_mdio_write(sc, 0x14, 0xc001); + re_mdio_write(sc, 0x14, 0xd70c); + re_mdio_write(sc, 0x14, 0x4124); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6120); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x3128); + re_mdio_write(sc, 0x14, 0x3d7d); + re_mdio_write(sc, 0x14, 0x2d77); + re_mdio_write(sc, 0x14, 0xa801); + re_mdio_write(sc, 0x14, 0x2d73); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0xe018); + re_mdio_write(sc, 0x14, 0x0208); + re_mdio_write(sc, 0x14, 0xa1f8); + re_mdio_write(sc, 0x14, 0x8480); + re_mdio_write(sc, 0x14, 0xc004); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x6046); + re_mdio_write(sc, 0x14, 0x2d14); + re_mdio_write(sc, 0x14, 0xa43f); + re_mdio_write(sc, 0x14, 0xa105); + re_mdio_write(sc, 0x14, 0x8228); + re_mdio_write(sc, 0x14, 0xc004); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x81bc); + re_mdio_write(sc, 0x14, 0xa220); + re_mdio_write(sc, 0x14, 0x1d9e); + re_mdio_write(sc, 0x14, 0x8220); + re_mdio_write(sc, 0x14, 0xa1bc); + re_mdio_write(sc, 0x14, 0xc040); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x30e1); + re_mdio_write(sc, 0x14, 0x0b24); + re_mdio_write(sc, 0x14, 0x30e1); + re_mdio_write(sc, 0x14, 0x3d14); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7f4c); + re_mdio_write(sc, 0x14, 0x2b1e); + re_mdio_write(sc, 0x14, 0xa802); + re_mdio_write(sc, 0x14, 0xd70c); + re_mdio_write(sc, 0x14, 0x4244); + re_mdio_write(sc, 0x14, 0xa301); + re_mdio_write(sc, 0x14, 0xc004); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x3128); + re_mdio_write(sc, 0x14, 0x3dac); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x5f80); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x3109); + re_mdio_write(sc, 0x14, 0x3dae); + re_mdio_write(sc, 0x14, 0x2db2); + re_mdio_write(sc, 0x14, 0xa801); + re_mdio_write(sc, 0x14, 0x2da1); + re_mdio_write(sc, 0x14, 0xa802); + re_mdio_write(sc, 0x14, 0xc004); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xa510); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x609a); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fac); + re_mdio_write(sc, 0x14, 0x2b1e); + re_mdio_write(sc, 0x14, 0x8510); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x13, 0xa01a); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xa006); + re_mdio_write(sc, 0x14, 0x0b3e); + re_mdio_write(sc, 0x13, 0xa004); + re_mdio_write(sc, 0x14, 0x0828); + re_mdio_write(sc, 0x13, 0xa002); + re_mdio_write(sc, 0x14, 0x06dd); + re_mdio_write(sc, 0x13, 0xa000); + re_mdio_write(sc, 0x14, 0xf815); + re_mdio_write(sc, 0x13, 0xb820); + re_mdio_write(sc, 0x14, 0x0010); + + + re_mdio_write(sc,0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x83b0); + re_mdio_write(sc, 0x14, 0xaf83); + re_mdio_write(sc, 0x14, 0xbcaf); + re_mdio_write(sc, 0x14, 0x83c8); + re_mdio_write(sc, 0x14, 0xaf83); + re_mdio_write(sc, 0x14, 0xddaf); + re_mdio_write(sc, 0x14, 0x83e0); + re_mdio_write(sc, 0x14, 0x0204); + re_mdio_write(sc, 0x14, 0xa102); + re_mdio_write(sc, 0x14, 0x09b4); + re_mdio_write(sc, 0x14, 0x0284); + re_mdio_write(sc, 0x14, 0x62af); + re_mdio_write(sc, 0x14, 0x02ec); + re_mdio_write(sc, 0x14, 0xad20); + re_mdio_write(sc, 0x14, 0x0302); + re_mdio_write(sc, 0x14, 0x867d); + re_mdio_write(sc, 0x14, 0xad21); + re_mdio_write(sc, 0x14, 0x0302); + re_mdio_write(sc, 0x14, 0x85ca); + re_mdio_write(sc, 0x14, 0xad22); + re_mdio_write(sc, 0x14, 0x0302); + re_mdio_write(sc, 0x14, 0x1bce); + re_mdio_write(sc, 0x14, 0xaf18); + re_mdio_write(sc, 0x14, 0x11af); + re_mdio_write(sc, 0x14, 0x1811); + re_mdio_write(sc, 0x14, 0x0106); + re_mdio_write(sc, 0x14, 0xe081); + re_mdio_write(sc, 0x14, 0x48af); + re_mdio_write(sc, 0x14, 0x3b1f); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69ee); + re_mdio_write(sc, 0x14, 0x8010); + re_mdio_write(sc, 0x14, 0xf7d1); + re_mdio_write(sc, 0x14, 0x04bf); + re_mdio_write(sc, 0x14, 0x8776); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x0a02); + re_mdio_write(sc, 0x14, 0x8704); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x4fd7); + re_mdio_write(sc, 0x14, 0xb822); + re_mdio_write(sc, 0x14, 0xd00c); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x03ee); + re_mdio_write(sc, 0x14, 0x80cd); + re_mdio_write(sc, 0x14, 0xa0ee); + re_mdio_write(sc, 0x14, 0x80ce); + re_mdio_write(sc, 0x14, 0x8bee); + re_mdio_write(sc, 0x14, 0x80d1); + re_mdio_write(sc, 0x14, 0xf5ee); + re_mdio_write(sc, 0x14, 0x80d2); + re_mdio_write(sc, 0x14, 0xa9ee); + re_mdio_write(sc, 0x14, 0x80d3); + re_mdio_write(sc, 0x14, 0x0aee); + re_mdio_write(sc, 0x14, 0x80f0); + re_mdio_write(sc, 0x14, 0x10ee); + re_mdio_write(sc, 0x14, 0x80f3); + re_mdio_write(sc, 0x14, 0x8fee); + re_mdio_write(sc, 0x14, 0x8101); + re_mdio_write(sc, 0x14, 0x1eee); + re_mdio_write(sc, 0x14, 0x810b); + re_mdio_write(sc, 0x14, 0x4aee); + re_mdio_write(sc, 0x14, 0x810c); + re_mdio_write(sc, 0x14, 0x7cee); + re_mdio_write(sc, 0x14, 0x8112); + re_mdio_write(sc, 0x14, 0x7fd1); + re_mdio_write(sc, 0x14, 0x0002); + re_mdio_write(sc, 0x14, 0x10e3); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0x8892); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0x8922); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0x9a80); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0x9b22); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0x9ca7); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0xa010); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0xa5a7); + re_mdio_write(sc, 0x14, 0xd200); + re_mdio_write(sc, 0x14, 0x020e); + re_mdio_write(sc, 0x14, 0x4b02); + re_mdio_write(sc, 0x14, 0x85c1); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0x0284); + re_mdio_write(sc, 0x14, 0x7b02); + re_mdio_write(sc, 0x14, 0x84b4); + re_mdio_write(sc, 0x14, 0x020c); + re_mdio_write(sc, 0x14, 0x9202); + re_mdio_write(sc, 0x14, 0x0cab); + re_mdio_write(sc, 0x14, 0x020c); + re_mdio_write(sc, 0x14, 0xd602); + re_mdio_write(sc, 0x14, 0x0cef); + re_mdio_write(sc, 0x14, 0x020d); + re_mdio_write(sc, 0x14, 0x1a02); + re_mdio_write(sc, 0x14, 0x0c24); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69e1); + re_mdio_write(sc, 0x14, 0x8234); + re_mdio_write(sc, 0x14, 0xac29); + re_mdio_write(sc, 0x14, 0x1ae0); + re_mdio_write(sc, 0x14, 0x8229); + re_mdio_write(sc, 0x14, 0xac21); + re_mdio_write(sc, 0x14, 0x02ae); + re_mdio_write(sc, 0x14, 0x2202); + re_mdio_write(sc, 0x14, 0x1085); + re_mdio_write(sc, 0x14, 0xf621); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x29d1); + re_mdio_write(sc, 0x14, 0x01bf); + re_mdio_write(sc, 0x14, 0x4364); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x0aae); + re_mdio_write(sc, 0x14, 0x1002); + re_mdio_write(sc, 0x14, 0x127a); + re_mdio_write(sc, 0x14, 0xf629); + re_mdio_write(sc, 0x14, 0xe582); + re_mdio_write(sc, 0x14, 0x34e0); + re_mdio_write(sc, 0x14, 0x8229); + re_mdio_write(sc, 0x14, 0xf621); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x29ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8e1); + re_mdio_write(sc, 0x14, 0x8234); + re_mdio_write(sc, 0x14, 0xac2a); + re_mdio_write(sc, 0x14, 0x18e0); + re_mdio_write(sc, 0x14, 0x8229); + re_mdio_write(sc, 0x14, 0xac22); + re_mdio_write(sc, 0x14, 0x02ae); + re_mdio_write(sc, 0x14, 0x2602); + re_mdio_write(sc, 0x14, 0x84f9); + re_mdio_write(sc, 0x14, 0x0285); + re_mdio_write(sc, 0x14, 0x66d1); + re_mdio_write(sc, 0x14, 0x01bf); + re_mdio_write(sc, 0x14, 0x4367); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x0aae); + re_mdio_write(sc, 0x14, 0x0e02); + re_mdio_write(sc, 0x14, 0x84eb); + re_mdio_write(sc, 0x14, 0x0285); + re_mdio_write(sc, 0x14, 0xaae1); + re_mdio_write(sc, 0x14, 0x8234); + re_mdio_write(sc, 0x14, 0xf62a); + re_mdio_write(sc, 0x14, 0xe582); + re_mdio_write(sc, 0x14, 0x34e0); + re_mdio_write(sc, 0x14, 0x8229); + re_mdio_write(sc, 0x14, 0xf622); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x29fc); + re_mdio_write(sc, 0x14, 0x04f9); + re_mdio_write(sc, 0x14, 0xe280); + re_mdio_write(sc, 0x14, 0x11ad); + re_mdio_write(sc, 0x14, 0x3105); + re_mdio_write(sc, 0x14, 0xd200); + re_mdio_write(sc, 0x14, 0x020e); + re_mdio_write(sc, 0x14, 0x4bfd); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xf9fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xe080); + re_mdio_write(sc, 0x14, 0x11ad); + re_mdio_write(sc, 0x14, 0x215c); + re_mdio_write(sc, 0x14, 0xbf42); + re_mdio_write(sc, 0x14, 0x5002); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0xac28); + re_mdio_write(sc, 0x14, 0x1bbf); + re_mdio_write(sc, 0x14, 0x4253); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x48ac); + re_mdio_write(sc, 0x14, 0x2812); + re_mdio_write(sc, 0x14, 0xbf42); + re_mdio_write(sc, 0x14, 0x5902); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0xac28); + re_mdio_write(sc, 0x14, 0x04d3); + re_mdio_write(sc, 0x14, 0x00ae); + re_mdio_write(sc, 0x14, 0x07d3); + re_mdio_write(sc, 0x14, 0x06af); + re_mdio_write(sc, 0x14, 0x8557); + re_mdio_write(sc, 0x14, 0xd303); + re_mdio_write(sc, 0x14, 0xe080); + re_mdio_write(sc, 0x14, 0x11ad); + re_mdio_write(sc, 0x14, 0x2625); + re_mdio_write(sc, 0x14, 0xbf43); + re_mdio_write(sc, 0x14, 0xeb02); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0xe280); + re_mdio_write(sc, 0x14, 0x730d); + re_mdio_write(sc, 0x14, 0x21f6); + re_mdio_write(sc, 0x14, 0x370d); + re_mdio_write(sc, 0x14, 0x11f6); + re_mdio_write(sc, 0x14, 0x2f1b); + re_mdio_write(sc, 0x14, 0x21aa); + re_mdio_write(sc, 0x14, 0x02ae); + re_mdio_write(sc, 0x14, 0x10e2); + re_mdio_write(sc, 0x14, 0x8074); + re_mdio_write(sc, 0x14, 0x0d21); + re_mdio_write(sc, 0x14, 0xf637); + re_mdio_write(sc, 0x14, 0x1b21); + re_mdio_write(sc, 0x14, 0xaa03); + re_mdio_write(sc, 0x14, 0x13ae); + re_mdio_write(sc, 0x14, 0x022b); + re_mdio_write(sc, 0x14, 0x0202); + re_mdio_write(sc, 0x14, 0x0e36); + re_mdio_write(sc, 0x14, 0x020e); + re_mdio_write(sc, 0x14, 0x4b02); + re_mdio_write(sc, 0x14, 0x0f91); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69e0); + re_mdio_write(sc, 0x14, 0x8012); + re_mdio_write(sc, 0x14, 0xad27); + re_mdio_write(sc, 0x14, 0x33bf); + re_mdio_write(sc, 0x14, 0x4250); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x48ac); + re_mdio_write(sc, 0x14, 0x2809); + re_mdio_write(sc, 0x14, 0xbf42); + re_mdio_write(sc, 0x14, 0x5302); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0xad28); + re_mdio_write(sc, 0x14, 0x21bf); + re_mdio_write(sc, 0x14, 0x43eb); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x48e3); + re_mdio_write(sc, 0x14, 0x87ff); + re_mdio_write(sc, 0x14, 0xd200); + re_mdio_write(sc, 0x14, 0x1b45); + re_mdio_write(sc, 0x14, 0xac27); + re_mdio_write(sc, 0x14, 0x11e1); + re_mdio_write(sc, 0x14, 0x87fe); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x6702); + re_mdio_write(sc, 0x14, 0x410a); + re_mdio_write(sc, 0x14, 0x0d11); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x6a02); + re_mdio_write(sc, 0x14, 0x410a); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xd100); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x6702); + re_mdio_write(sc, 0x14, 0x410a); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x6a02); + re_mdio_write(sc, 0x14, 0x410a); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefc); + re_mdio_write(sc, 0x14, 0x04ee); + re_mdio_write(sc, 0x14, 0x87ff); + re_mdio_write(sc, 0x14, 0x46ee); + re_mdio_write(sc, 0x14, 0x87fe); + re_mdio_write(sc, 0x14, 0x0104); + re_mdio_write(sc, 0x14, 0xf8fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x46a0); + re_mdio_write(sc, 0x14, 0x0005); + re_mdio_write(sc, 0x14, 0x0285); + re_mdio_write(sc, 0x14, 0xecae); + re_mdio_write(sc, 0x14, 0x0ea0); + re_mdio_write(sc, 0x14, 0x0105); + re_mdio_write(sc, 0x14, 0x021a); + re_mdio_write(sc, 0x14, 0x68ae); + re_mdio_write(sc, 0x14, 0x06a0); + re_mdio_write(sc, 0x14, 0x0203); + re_mdio_write(sc, 0x14, 0x021a); + re_mdio_write(sc, 0x14, 0xf4ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69e0); + re_mdio_write(sc, 0x14, 0x822e); + re_mdio_write(sc, 0x14, 0xf621); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x2ee0); + re_mdio_write(sc, 0x14, 0x8010); + re_mdio_write(sc, 0x14, 0xac22); + re_mdio_write(sc, 0x14, 0x02ae); + re_mdio_write(sc, 0x14, 0x76e0); + re_mdio_write(sc, 0x14, 0x822c); + re_mdio_write(sc, 0x14, 0xf721); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x2cbf); + re_mdio_write(sc, 0x14, 0x41a5); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x48ef); + re_mdio_write(sc, 0x14, 0x21bf); + re_mdio_write(sc, 0x14, 0x41a8); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x480c); + re_mdio_write(sc, 0x14, 0x111e); + re_mdio_write(sc, 0x14, 0x21bf); + re_mdio_write(sc, 0x14, 0x41ab); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x480c); + re_mdio_write(sc, 0x14, 0x121e); + re_mdio_write(sc, 0x14, 0x21e6); + re_mdio_write(sc, 0x14, 0x8248); + re_mdio_write(sc, 0x14, 0xa200); + re_mdio_write(sc, 0x14, 0x0ae1); + re_mdio_write(sc, 0x14, 0x822c); + re_mdio_write(sc, 0x14, 0xf629); + re_mdio_write(sc, 0x14, 0xe582); + re_mdio_write(sc, 0x14, 0x2cae); + re_mdio_write(sc, 0x14, 0x42e0); + re_mdio_write(sc, 0x14, 0x8249); + re_mdio_write(sc, 0x14, 0xf721); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x4902); + re_mdio_write(sc, 0x14, 0x4520); + re_mdio_write(sc, 0x14, 0xbf41); + re_mdio_write(sc, 0x14, 0xb702); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0xef21); + re_mdio_write(sc, 0x14, 0xbf41); + re_mdio_write(sc, 0x14, 0xae02); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0x0c12); + re_mdio_write(sc, 0x14, 0x1e21); + re_mdio_write(sc, 0x14, 0xbf41); + re_mdio_write(sc, 0x14, 0xb102); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0x0c13); + re_mdio_write(sc, 0x14, 0x1e21); + re_mdio_write(sc, 0x14, 0xbf41); + re_mdio_write(sc, 0x14, 0xba02); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0x0c14); + re_mdio_write(sc, 0x14, 0x1e21); + re_mdio_write(sc, 0x14, 0xbf43); + re_mdio_write(sc, 0x14, 0x4602); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0x0c16); + re_mdio_write(sc, 0x14, 0x1e21); + re_mdio_write(sc, 0x14, 0xe682); + re_mdio_write(sc, 0x14, 0x47ee); + re_mdio_write(sc, 0x14, 0x8246); + re_mdio_write(sc, 0x14, 0x01ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfdfc); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69e0); + re_mdio_write(sc, 0x14, 0x824b); + re_mdio_write(sc, 0x14, 0xa000); + re_mdio_write(sc, 0x14, 0x0502); + re_mdio_write(sc, 0x14, 0x8697); + re_mdio_write(sc, 0x14, 0xae06); + re_mdio_write(sc, 0x14, 0xa001); + re_mdio_write(sc, 0x14, 0x0302); + re_mdio_write(sc, 0x14, 0x1937); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefc); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69e0); + re_mdio_write(sc, 0x14, 0x822e); + re_mdio_write(sc, 0x14, 0xf620); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x2ee0); + re_mdio_write(sc, 0x14, 0x8010); + re_mdio_write(sc, 0x14, 0xac21); + re_mdio_write(sc, 0x14, 0x02ae); + re_mdio_write(sc, 0x14, 0x54e0); + re_mdio_write(sc, 0x14, 0x822c); + re_mdio_write(sc, 0x14, 0xf720); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x2cbf); + re_mdio_write(sc, 0x14, 0x4175); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x48ac); + re_mdio_write(sc, 0x14, 0x2822); + re_mdio_write(sc, 0x14, 0xbf41); + re_mdio_write(sc, 0x14, 0x9f02); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0xe582); + re_mdio_write(sc, 0x14, 0x4cac); + re_mdio_write(sc, 0x14, 0x2820); + re_mdio_write(sc, 0x14, 0xd103); + re_mdio_write(sc, 0x14, 0xbf41); + re_mdio_write(sc, 0x14, 0x9902); + re_mdio_write(sc, 0x14, 0x410a); + re_mdio_write(sc, 0x14, 0xee82); + re_mdio_write(sc, 0x14, 0x4b00); + re_mdio_write(sc, 0x14, 0xe182); + re_mdio_write(sc, 0x14, 0x2cf6); + re_mdio_write(sc, 0x14, 0x28e5); + re_mdio_write(sc, 0x14, 0x822c); + re_mdio_write(sc, 0x14, 0xae21); + re_mdio_write(sc, 0x14, 0xd104); + re_mdio_write(sc, 0x14, 0xbf41); + re_mdio_write(sc, 0x14, 0x9902); + re_mdio_write(sc, 0x14, 0x410a); + re_mdio_write(sc, 0x14, 0xae08); + re_mdio_write(sc, 0x14, 0xd105); + re_mdio_write(sc, 0x14, 0xbf41); + re_mdio_write(sc, 0x14, 0x9902); + re_mdio_write(sc, 0x14, 0x410a); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x49f7); + re_mdio_write(sc, 0x14, 0x20e4); + re_mdio_write(sc, 0x14, 0x8249); + re_mdio_write(sc, 0x14, 0x0245); + re_mdio_write(sc, 0x14, 0x20ee); + re_mdio_write(sc, 0x14, 0x824b); + re_mdio_write(sc, 0x14, 0x01ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xface); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69fb); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x2fd7); + re_mdio_write(sc, 0x14, 0x0020); + re_mdio_write(sc, 0x14, 0xd819); + re_mdio_write(sc, 0x14, 0xd919); + re_mdio_write(sc, 0x14, 0xda19); + re_mdio_write(sc, 0x14, 0xdb19); + re_mdio_write(sc, 0x14, 0x07ef); + re_mdio_write(sc, 0x14, 0x9502); + re_mdio_write(sc, 0x14, 0x410a); + re_mdio_write(sc, 0x14, 0x073f); + re_mdio_write(sc, 0x14, 0x0004); + re_mdio_write(sc, 0x14, 0x9fec); + re_mdio_write(sc, 0x14, 0xffef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xc6fe); + re_mdio_write(sc, 0x14, 0xfdfc); + re_mdio_write(sc, 0x14, 0x0400); + re_mdio_write(sc, 0x14, 0x0144); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x14, 0x0343); + re_mdio_write(sc, 0x14, 0xee00); + re_mdio_write(sc, 0x14, 0x0087); + re_mdio_write(sc, 0x14, 0x5b00); + re_mdio_write(sc, 0x14, 0x0141); + re_mdio_write(sc, 0x14, 0xe100); + re_mdio_write(sc, 0x14, 0x0387); + re_mdio_write(sc, 0x14, 0x5e00); + re_mdio_write(sc, 0x14, 0x0987); + re_mdio_write(sc, 0x14, 0x6100); + re_mdio_write(sc, 0x14, 0x0987); + re_mdio_write(sc, 0x14, 0x6400); + re_mdio_write(sc, 0x14, 0x0087); + re_mdio_write(sc, 0x14, 0x6da4); + re_mdio_write(sc, 0x14, 0x00b8); + re_mdio_write(sc, 0x14, 0x20c4); + re_mdio_write(sc, 0x14, 0x1600); + re_mdio_write(sc, 0x14, 0x000f); + re_mdio_write(sc, 0x14, 0xf800); + re_mdio_write(sc, 0x14, 0x7000); + re_mdio_write(sc, 0x14, 0xb82e); + re_mdio_write(sc, 0x14, 0x98a5); + re_mdio_write(sc, 0x14, 0x8ab6); + re_mdio_write(sc, 0x14, 0xa83e); + re_mdio_write(sc, 0x14, 0x50a8); + re_mdio_write(sc, 0x14, 0x3e33); + re_mdio_write(sc, 0x14, 0xbcc6); + re_mdio_write(sc, 0x14, 0x22bc); + re_mdio_write(sc, 0x14, 0xc6aa); + re_mdio_write(sc, 0x14, 0xa442); + re_mdio_write(sc, 0x14, 0xffc4); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xc416); + re_mdio_write(sc, 0x14, 0xa8bc); + re_mdio_write(sc, 0x14, 0xc000); + re_mdio_write(sc, 0x13, 0xb818); + re_mdio_write(sc, 0x14, 0x02e3); + re_mdio_write(sc, 0x13, 0xb81a); + re_mdio_write(sc, 0x14, 0x17ff); + re_mdio_write(sc, 0x13, 0xb81e); + re_mdio_write(sc, 0x14, 0x3b1c); + re_mdio_write(sc, 0x13, 0xb820); + re_mdio_write(sc, 0x14, 0x021b); + re_mdio_write(sc, 0x1f, 0x0000); + + + re_mdio_write(sc,0x1F, 0x0A43); + re_mdio_write(sc,0x13, 0x0000); + re_mdio_write(sc,0x14, 0x0000); + re_mdio_write(sc,0x1f, 0x0B82); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + re_mdio_write(sc,0x17, PhyRegValue); + re_mdio_write(sc,0x1f, 0x0A43); + re_mdio_write(sc,0x13, 0x8146); + re_mdio_write(sc,0x14, 0x0000); + + re_clear_phy_mcu_patch_request(sc); +} + +static void re_set_phy_mcu_8168ep_2(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + + re_set_phy_mcu_patch_request(sc); + + re_mdio_write(sc,0x1f, 0x0A43); + re_mdio_write(sc,0x13, 0x8146); + re_mdio_write(sc,0x14, 0x8700); + re_mdio_write(sc,0x13, 0xB82E); + re_mdio_write(sc,0x14, 0x0001); + + re_mdio_write(sc, 0x1F, 0x0A43); + + re_mdio_write(sc, 0x13, 0x83DD); + re_mdio_write(sc, 0x14, 0xAF83); + re_mdio_write(sc, 0x14, 0xE9AF); + re_mdio_write(sc, 0x14, 0x83EE); + re_mdio_write(sc, 0x14, 0xAF83); + re_mdio_write(sc, 0x14, 0xF1A1); + re_mdio_write(sc, 0x14, 0x83F4); + re_mdio_write(sc, 0x14, 0xD149); + re_mdio_write(sc, 0x14, 0xAF06); + re_mdio_write(sc, 0x14, 0x47AF); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x14, 0xAF00); + re_mdio_write(sc, 0x14, 0x00AF); + re_mdio_write(sc, 0x14, 0x0000); + + re_mdio_write(sc, 0x13, 0xB818); + re_mdio_write(sc, 0x14, 0x0645); + + re_mdio_write(sc, 0x13, 0xB81A); + re_mdio_write(sc, 0x14, 0x0000); + + re_mdio_write(sc, 0x13, 0xB81C); + re_mdio_write(sc, 0x14, 0x0000); + + re_mdio_write(sc, 0x13, 0xB81E); + re_mdio_write(sc, 0x14, 0x0000); + + re_mdio_write(sc, 0x13, 0xB832); + re_mdio_write(sc, 0x14, 0x0001); + + re_mdio_write(sc,0x1F, 0x0A43); + re_mdio_write(sc,0x13, 0x0000); + re_mdio_write(sc,0x14, 0x0000); + re_mdio_write(sc,0x1f, 0x0B82); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + re_mdio_write(sc,0x17, PhyRegValue); + re_mdio_write(sc,0x1f, 0x0A43); + re_mdio_write(sc,0x13, 0x8146); + re_mdio_write(sc,0x14, 0x0000); + + re_clear_phy_mcu_patch_request(sc); +} + +static void +re_real_set_phy_mcu_8125a_1(struct re_softc *sc) +{ + re_acquire_phy_mcu_patch_key_lock(sc); + + + re_set_eth_ocp_phy_bit(sc, 0xB820, BIT_7); + + + re_real_ocp_phy_write(sc, 0xA436, 0xA016); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA012); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA014); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8013); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8021); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x802f); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x803d); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8042); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8051); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8051); + re_real_ocp_phy_write(sc, 0xA438, 0xa088); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0a50); + re_real_ocp_phy_write(sc, 0xA438, 0x8008); + re_real_ocp_phy_write(sc, 0xA438, 0xd014); + re_real_ocp_phy_write(sc, 0xA438, 0xd1a3); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x401a); + re_real_ocp_phy_write(sc, 0xA438, 0xd707); + re_real_ocp_phy_write(sc, 0xA438, 0x40c2); + re_real_ocp_phy_write(sc, 0xA438, 0x60a6); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x5f8b); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0a86); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0a6c); + re_real_ocp_phy_write(sc, 0xA438, 0x8080); + re_real_ocp_phy_write(sc, 0xA438, 0xd019); + re_real_ocp_phy_write(sc, 0xA438, 0xd1a2); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x401a); + re_real_ocp_phy_write(sc, 0xA438, 0xd707); + re_real_ocp_phy_write(sc, 0xA438, 0x40c4); + re_real_ocp_phy_write(sc, 0xA438, 0x60a6); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x5f8b); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0a86); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0a84); + re_real_ocp_phy_write(sc, 0xA438, 0xd503); + re_real_ocp_phy_write(sc, 0xA438, 0x8970); + re_real_ocp_phy_write(sc, 0xA438, 0x0c07); + re_real_ocp_phy_write(sc, 0xA438, 0x0901); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0xcf09); + re_real_ocp_phy_write(sc, 0xA438, 0xd705); + re_real_ocp_phy_write(sc, 0xA438, 0x4000); + re_real_ocp_phy_write(sc, 0xA438, 0xceff); + re_real_ocp_phy_write(sc, 0xA438, 0xaf0a); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x1213); + re_real_ocp_phy_write(sc, 0xA438, 0x8401); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x8580); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x1253); + re_real_ocp_phy_write(sc, 0xA438, 0xd064); + re_real_ocp_phy_write(sc, 0xA438, 0xd181); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x4018); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0xc50f); + re_real_ocp_phy_write(sc, 0xA438, 0xd706); + re_real_ocp_phy_write(sc, 0xA438, 0x2c59); + re_real_ocp_phy_write(sc, 0xA438, 0x804d); + re_real_ocp_phy_write(sc, 0xA438, 0xc60f); + re_real_ocp_phy_write(sc, 0xA438, 0xf002); + re_real_ocp_phy_write(sc, 0xA438, 0xc605); + re_real_ocp_phy_write(sc, 0xA438, 0xae02); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x10fd); + re_real_ocp_phy_write(sc, 0xA436, 0xA026); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xA024); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xA022); + re_real_ocp_phy_write(sc, 0xA438, 0x10f4); + re_real_ocp_phy_write(sc, 0xA436, 0xA020); + re_real_ocp_phy_write(sc, 0xA438, 0x1252); + re_real_ocp_phy_write(sc, 0xA436, 0xA006); + re_real_ocp_phy_write(sc, 0xA438, 0x1206); + re_real_ocp_phy_write(sc, 0xA436, 0xA004); + re_real_ocp_phy_write(sc, 0xA438, 0x0a78); + re_real_ocp_phy_write(sc, 0xA436, 0xA002); + re_real_ocp_phy_write(sc, 0xA438, 0x0a60); + re_real_ocp_phy_write(sc, 0xA436, 0xA000); + re_real_ocp_phy_write(sc, 0xA438, 0x0a4f); + re_real_ocp_phy_write(sc, 0xA436, 0xA008); + re_real_ocp_phy_write(sc, 0xA438, 0x3f00); + + + re_real_ocp_phy_write(sc, 0xA436, 0xA016); + re_real_ocp_phy_write(sc, 0xA438, 0x0010); + re_real_ocp_phy_write(sc, 0xA436, 0xA012); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA014); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8066); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x807c); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8089); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x808e); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x80a0); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x80b2); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x80c2); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x62db); + re_real_ocp_phy_write(sc, 0xA438, 0x655c); + re_real_ocp_phy_write(sc, 0xA438, 0xd73e); + re_real_ocp_phy_write(sc, 0xA438, 0x60e9); + re_real_ocp_phy_write(sc, 0xA438, 0x614a); + re_real_ocp_phy_write(sc, 0xA438, 0x61ab); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0501); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0503); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0505); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0509); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x653c); + re_real_ocp_phy_write(sc, 0xA438, 0xd73e); + re_real_ocp_phy_write(sc, 0xA438, 0x60e9); + re_real_ocp_phy_write(sc, 0xA438, 0x614a); + re_real_ocp_phy_write(sc, 0xA438, 0x61ab); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0503); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0502); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0506); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x050a); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0xd73e); + re_real_ocp_phy_write(sc, 0xA438, 0x60e9); + re_real_ocp_phy_write(sc, 0xA438, 0x614a); + re_real_ocp_phy_write(sc, 0xA438, 0x61ab); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0505); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0506); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0504); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x050c); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0xd73e); + re_real_ocp_phy_write(sc, 0xA438, 0x60e9); + re_real_ocp_phy_write(sc, 0xA438, 0x614a); + re_real_ocp_phy_write(sc, 0xA438, 0x61ab); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0509); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x050a); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x050c); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0508); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0xd73e); + re_real_ocp_phy_write(sc, 0xA438, 0x60e9); + re_real_ocp_phy_write(sc, 0xA438, 0x614a); + re_real_ocp_phy_write(sc, 0xA438, 0x61ab); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0501); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0321); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0502); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0321); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0504); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0321); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0508); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0321); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x0346); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0x8208); + re_real_ocp_phy_write(sc, 0xA438, 0x609d); + re_real_ocp_phy_write(sc, 0xA438, 0xa50f); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x001a); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0503); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x001a); + re_real_ocp_phy_write(sc, 0xA438, 0x607d); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x00ab); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x00ab); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x60fd); + re_real_ocp_phy_write(sc, 0xA438, 0xa50f); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0xaa0f); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x017b); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0503); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0a05); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x017b); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x60fd); + re_real_ocp_phy_write(sc, 0xA438, 0xa50f); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0xaa0f); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x01e0); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0503); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0a05); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x01e0); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x60fd); + re_real_ocp_phy_write(sc, 0xA438, 0xa50f); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0xaa0f); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0231); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0503); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0a05); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0231); + re_real_ocp_phy_write(sc, 0xA436, 0xA08E); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xA08C); + re_real_ocp_phy_write(sc, 0xA438, 0x0221); + re_real_ocp_phy_write(sc, 0xA436, 0xA08A); + re_real_ocp_phy_write(sc, 0xA438, 0x01ce); + re_real_ocp_phy_write(sc, 0xA436, 0xA088); + re_real_ocp_phy_write(sc, 0xA438, 0x0169); + re_real_ocp_phy_write(sc, 0xA436, 0xA086); + re_real_ocp_phy_write(sc, 0xA438, 0x00a6); + re_real_ocp_phy_write(sc, 0xA436, 0xA084); + re_real_ocp_phy_write(sc, 0xA438, 0x000d); + re_real_ocp_phy_write(sc, 0xA436, 0xA082); + re_real_ocp_phy_write(sc, 0xA438, 0x0308); + re_real_ocp_phy_write(sc, 0xA436, 0xA080); + re_real_ocp_phy_write(sc, 0xA438, 0x029f); + re_real_ocp_phy_write(sc, 0xA436, 0xA090); + re_real_ocp_phy_write(sc, 0xA438, 0x007f); + + + re_real_ocp_phy_write(sc, 0xA436, 0xA016); + re_real_ocp_phy_write(sc, 0xA438, 0x0020); + re_real_ocp_phy_write(sc, 0xA436, 0xA012); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA014); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8017); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x801b); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8029); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8054); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x805a); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8064); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x80a7); + re_real_ocp_phy_write(sc, 0xA438, 0x9430); + re_real_ocp_phy_write(sc, 0xA438, 0x9480); + re_real_ocp_phy_write(sc, 0xA438, 0xb408); + re_real_ocp_phy_write(sc, 0xA438, 0xd120); + re_real_ocp_phy_write(sc, 0xA438, 0xd057); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x064b); + re_real_ocp_phy_write(sc, 0xA438, 0xcb80); + re_real_ocp_phy_write(sc, 0xA438, 0x9906); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0567); + re_real_ocp_phy_write(sc, 0xA438, 0xcb94); + re_real_ocp_phy_write(sc, 0xA438, 0x8190); + re_real_ocp_phy_write(sc, 0xA438, 0x82a0); + re_real_ocp_phy_write(sc, 0xA438, 0x800a); + re_real_ocp_phy_write(sc, 0xA438, 0x8406); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0x8dff); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07e4); + re_real_ocp_phy_write(sc, 0xA438, 0xa840); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0773); + re_real_ocp_phy_write(sc, 0xA438, 0xcb91); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x4063); + re_real_ocp_phy_write(sc, 0xA438, 0xd139); + re_real_ocp_phy_write(sc, 0xA438, 0xf002); + re_real_ocp_phy_write(sc, 0xA438, 0xd140); + re_real_ocp_phy_write(sc, 0xA438, 0xd040); + re_real_ocp_phy_write(sc, 0xA438, 0xb404); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0d00); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07dc); + re_real_ocp_phy_write(sc, 0xA438, 0xa610); + re_real_ocp_phy_write(sc, 0xA438, 0xa110); + re_real_ocp_phy_write(sc, 0xA438, 0xa2a0); + re_real_ocp_phy_write(sc, 0xA438, 0xa404); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x4045); + re_real_ocp_phy_write(sc, 0xA438, 0xa180); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x405d); + re_real_ocp_phy_write(sc, 0xA438, 0xa720); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x0742); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07ec); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x5f74); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x0742); + re_real_ocp_phy_write(sc, 0xA438, 0xd702); + re_real_ocp_phy_write(sc, 0xA438, 0x7fb6); + re_real_ocp_phy_write(sc, 0xA438, 0x8190); + re_real_ocp_phy_write(sc, 0xA438, 0x82a0); + re_real_ocp_phy_write(sc, 0xA438, 0x8404); + re_real_ocp_phy_write(sc, 0xA438, 0x8610); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0d01); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07dc); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x064b); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07c0); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x5fa7); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0481); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x94bc); + re_real_ocp_phy_write(sc, 0xA438, 0x870c); + re_real_ocp_phy_write(sc, 0xA438, 0xa190); + re_real_ocp_phy_write(sc, 0xA438, 0xa00a); + re_real_ocp_phy_write(sc, 0xA438, 0xa280); + re_real_ocp_phy_write(sc, 0xA438, 0xa404); + re_real_ocp_phy_write(sc, 0xA438, 0x8220); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x078e); + re_real_ocp_phy_write(sc, 0xA438, 0xcb92); + re_real_ocp_phy_write(sc, 0xA438, 0xa840); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x4063); + re_real_ocp_phy_write(sc, 0xA438, 0xd140); + re_real_ocp_phy_write(sc, 0xA438, 0xf002); + re_real_ocp_phy_write(sc, 0xA438, 0xd150); + re_real_ocp_phy_write(sc, 0xA438, 0xd040); + re_real_ocp_phy_write(sc, 0xA438, 0xd703); + re_real_ocp_phy_write(sc, 0xA438, 0x60a0); + re_real_ocp_phy_write(sc, 0xA438, 0x6121); + re_real_ocp_phy_write(sc, 0xA438, 0x61a2); + re_real_ocp_phy_write(sc, 0xA438, 0x6223); + re_real_ocp_phy_write(sc, 0xA438, 0xf02f); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d10); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0xf00f); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d20); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0xf00a); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d30); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0xf005); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d40); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07e4); + re_real_ocp_phy_write(sc, 0xA438, 0xa610); + re_real_ocp_phy_write(sc, 0xA438, 0xa008); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x4046); + re_real_ocp_phy_write(sc, 0xA438, 0xa002); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x405d); + re_real_ocp_phy_write(sc, 0xA438, 0xa720); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x0742); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07f7); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x5f74); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x0742); + re_real_ocp_phy_write(sc, 0xA438, 0xd702); + re_real_ocp_phy_write(sc, 0xA438, 0x7fb5); + re_real_ocp_phy_write(sc, 0xA438, 0x800a); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d00); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07e4); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x3ad4); + re_real_ocp_phy_write(sc, 0xA438, 0x0537); + re_real_ocp_phy_write(sc, 0xA438, 0x8610); + re_real_ocp_phy_write(sc, 0xA438, 0x8840); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x064b); + re_real_ocp_phy_write(sc, 0xA438, 0x8301); + re_real_ocp_phy_write(sc, 0xA438, 0x800a); + re_real_ocp_phy_write(sc, 0xA438, 0x8190); + re_real_ocp_phy_write(sc, 0xA438, 0x82a0); + re_real_ocp_phy_write(sc, 0xA438, 0x8404); + re_real_ocp_phy_write(sc, 0xA438, 0xa70c); + re_real_ocp_phy_write(sc, 0xA438, 0x9402); + re_real_ocp_phy_write(sc, 0xA438, 0x890c); + re_real_ocp_phy_write(sc, 0xA438, 0x8840); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x064b); + re_real_ocp_phy_write(sc, 0xA436, 0xA10E); + re_real_ocp_phy_write(sc, 0xA438, 0x0642); + re_real_ocp_phy_write(sc, 0xA436, 0xA10C); + re_real_ocp_phy_write(sc, 0xA438, 0x0686); + re_real_ocp_phy_write(sc, 0xA436, 0xA10A); + re_real_ocp_phy_write(sc, 0xA438, 0x0788); + re_real_ocp_phy_write(sc, 0xA436, 0xA108); + re_real_ocp_phy_write(sc, 0xA438, 0x047b); + re_real_ocp_phy_write(sc, 0xA436, 0xA106); + re_real_ocp_phy_write(sc, 0xA438, 0x065c); + re_real_ocp_phy_write(sc, 0xA436, 0xA104); + re_real_ocp_phy_write(sc, 0xA438, 0x0769); + re_real_ocp_phy_write(sc, 0xA436, 0xA102); + re_real_ocp_phy_write(sc, 0xA438, 0x0565); + re_real_ocp_phy_write(sc, 0xA436, 0xA100); + re_real_ocp_phy_write(sc, 0xA438, 0x06f9); + re_real_ocp_phy_write(sc, 0xA436, 0xA110); + re_real_ocp_phy_write(sc, 0xA438, 0x00ff); + + + re_real_ocp_phy_write(sc, 0xA436, 0xb87c); + re_real_ocp_phy_write(sc, 0xA438, 0x8530); + re_real_ocp_phy_write(sc, 0xA436, 0xb87e); + re_real_ocp_phy_write(sc, 0xA438, 0xaf85); + re_real_ocp_phy_write(sc, 0xA438, 0x3caf); + re_real_ocp_phy_write(sc, 0xA438, 0x8593); + re_real_ocp_phy_write(sc, 0xA438, 0xaf85); + re_real_ocp_phy_write(sc, 0xA438, 0x9caf); + re_real_ocp_phy_write(sc, 0xA438, 0x85a5); + re_real_ocp_phy_write(sc, 0xA438, 0xbf86); + re_real_ocp_phy_write(sc, 0xA438, 0xd702); + re_real_ocp_phy_write(sc, 0xA438, 0x5afb); + re_real_ocp_phy_write(sc, 0xA438, 0xe083); + re_real_ocp_phy_write(sc, 0xA438, 0xfb0c); + re_real_ocp_phy_write(sc, 0xA438, 0x020d); + re_real_ocp_phy_write(sc, 0xA438, 0x021b); + re_real_ocp_phy_write(sc, 0xA438, 0x10bf); + re_real_ocp_phy_write(sc, 0xA438, 0x86d7); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x86da); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xfbe0); + re_real_ocp_phy_write(sc, 0xA438, 0x83fc); + re_real_ocp_phy_write(sc, 0xA438, 0x0c02); + re_real_ocp_phy_write(sc, 0xA438, 0x0d02); + re_real_ocp_phy_write(sc, 0xA438, 0x1b10); + re_real_ocp_phy_write(sc, 0xA438, 0xbf86); + re_real_ocp_phy_write(sc, 0xA438, 0xda02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf86); + re_real_ocp_phy_write(sc, 0xA438, 0xdd02); + re_real_ocp_phy_write(sc, 0xA438, 0x5afb); + re_real_ocp_phy_write(sc, 0xA438, 0xe083); + re_real_ocp_phy_write(sc, 0xA438, 0xfd0c); + re_real_ocp_phy_write(sc, 0xA438, 0x020d); + re_real_ocp_phy_write(sc, 0xA438, 0x021b); + re_real_ocp_phy_write(sc, 0xA438, 0x10bf); + re_real_ocp_phy_write(sc, 0xA438, 0x86dd); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x86e0); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xfbe0); + re_real_ocp_phy_write(sc, 0xA438, 0x83fe); + re_real_ocp_phy_write(sc, 0xA438, 0x0c02); + re_real_ocp_phy_write(sc, 0xA438, 0x0d02); + re_real_ocp_phy_write(sc, 0xA438, 0x1b10); + re_real_ocp_phy_write(sc, 0xA438, 0xbf86); + re_real_ocp_phy_write(sc, 0xA438, 0xe002); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xaf2f); + re_real_ocp_phy_write(sc, 0xA438, 0xbd02); + re_real_ocp_phy_write(sc, 0xA438, 0x2cac); + re_real_ocp_phy_write(sc, 0xA438, 0x0286); + re_real_ocp_phy_write(sc, 0xA438, 0x65af); + re_real_ocp_phy_write(sc, 0xA438, 0x212b); + re_real_ocp_phy_write(sc, 0xA438, 0x022c); + re_real_ocp_phy_write(sc, 0xA438, 0x6002); + re_real_ocp_phy_write(sc, 0xA438, 0x86b6); + re_real_ocp_phy_write(sc, 0xA438, 0xaf21); + re_real_ocp_phy_write(sc, 0xA438, 0x0cd1); + re_real_ocp_phy_write(sc, 0xA438, 0x03bf); + re_real_ocp_phy_write(sc, 0xA438, 0x8710); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x870d); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x8719); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x8716); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x871f); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x871c); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x8728); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x8725); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x8707); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xfbad); + re_real_ocp_phy_write(sc, 0xA438, 0x281c); + re_real_ocp_phy_write(sc, 0xA438, 0xd100); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x0a02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x1302); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x2202); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x2b02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xae1a); + re_real_ocp_phy_write(sc, 0xA438, 0xd101); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x0a02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x1302); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x2202); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x2b02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xd101); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x3402); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x3102); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x3d02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x3a02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x4302); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x4002); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x4c02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x4902); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xd100); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x2e02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x3702); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x4602); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x4f02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xaf35); + re_real_ocp_phy_write(sc, 0xA438, 0x7ff8); + re_real_ocp_phy_write(sc, 0xA438, 0xfaef); + re_real_ocp_phy_write(sc, 0xA438, 0x69bf); + re_real_ocp_phy_write(sc, 0xA438, 0x86e3); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xfbbf); + re_real_ocp_phy_write(sc, 0xA438, 0x86fb); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x86e6); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xfbbf); + re_real_ocp_phy_write(sc, 0xA438, 0x86fe); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x86e9); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xfbbf); + re_real_ocp_phy_write(sc, 0xA438, 0x8701); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x86ec); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xfbbf); + re_real_ocp_phy_write(sc, 0xA438, 0x8704); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x86ef); + re_real_ocp_phy_write(sc, 0xA438, 0x0262); + re_real_ocp_phy_write(sc, 0xA438, 0x7cbf); + re_real_ocp_phy_write(sc, 0xA438, 0x86f2); + re_real_ocp_phy_write(sc, 0xA438, 0x0262); + re_real_ocp_phy_write(sc, 0xA438, 0x7cbf); + re_real_ocp_phy_write(sc, 0xA438, 0x86f5); + re_real_ocp_phy_write(sc, 0xA438, 0x0262); + re_real_ocp_phy_write(sc, 0xA438, 0x7cbf); + re_real_ocp_phy_write(sc, 0xA438, 0x86f8); + re_real_ocp_phy_write(sc, 0xA438, 0x0262); + re_real_ocp_phy_write(sc, 0xA438, 0x7cef); + re_real_ocp_phy_write(sc, 0xA438, 0x96fe); + re_real_ocp_phy_write(sc, 0xA438, 0xfc04); + re_real_ocp_phy_write(sc, 0xA438, 0xf8fa); + re_real_ocp_phy_write(sc, 0xA438, 0xef69); + re_real_ocp_phy_write(sc, 0xA438, 0xbf86); + re_real_ocp_phy_write(sc, 0xA438, 0xef02); + re_real_ocp_phy_write(sc, 0xA438, 0x6273); + re_real_ocp_phy_write(sc, 0xA438, 0xbf86); + re_real_ocp_phy_write(sc, 0xA438, 0xf202); + re_real_ocp_phy_write(sc, 0xA438, 0x6273); + re_real_ocp_phy_write(sc, 0xA438, 0xbf86); + re_real_ocp_phy_write(sc, 0xA438, 0xf502); + re_real_ocp_phy_write(sc, 0xA438, 0x6273); + re_real_ocp_phy_write(sc, 0xA438, 0xbf86); + re_real_ocp_phy_write(sc, 0xA438, 0xf802); + re_real_ocp_phy_write(sc, 0xA438, 0x6273); + re_real_ocp_phy_write(sc, 0xA438, 0xef96); + re_real_ocp_phy_write(sc, 0xA438, 0xfefc); + re_real_ocp_phy_write(sc, 0xA438, 0x0420); + re_real_ocp_phy_write(sc, 0xA438, 0xb540); + re_real_ocp_phy_write(sc, 0xA438, 0x53b5); + re_real_ocp_phy_write(sc, 0xA438, 0x4086); + re_real_ocp_phy_write(sc, 0xA438, 0xb540); + re_real_ocp_phy_write(sc, 0xA438, 0xb9b5); + re_real_ocp_phy_write(sc, 0xA438, 0x40c8); + re_real_ocp_phy_write(sc, 0xA438, 0xb03a); + re_real_ocp_phy_write(sc, 0xA438, 0xc8b0); + re_real_ocp_phy_write(sc, 0xA438, 0xbac8); + re_real_ocp_phy_write(sc, 0xA438, 0xb13a); + re_real_ocp_phy_write(sc, 0xA438, 0xc8b1); + re_real_ocp_phy_write(sc, 0xA438, 0xba77); + re_real_ocp_phy_write(sc, 0xA438, 0xbd26); + re_real_ocp_phy_write(sc, 0xA438, 0xffbd); + re_real_ocp_phy_write(sc, 0xA438, 0x2677); + re_real_ocp_phy_write(sc, 0xA438, 0xbd28); + re_real_ocp_phy_write(sc, 0xA438, 0xffbd); + re_real_ocp_phy_write(sc, 0xA438, 0x2840); + re_real_ocp_phy_write(sc, 0xA438, 0xbd26); + re_real_ocp_phy_write(sc, 0xA438, 0xc8bd); + re_real_ocp_phy_write(sc, 0xA438, 0x2640); + re_real_ocp_phy_write(sc, 0xA438, 0xbd28); + re_real_ocp_phy_write(sc, 0xA438, 0xc8bd); + re_real_ocp_phy_write(sc, 0xA438, 0x28bb); + re_real_ocp_phy_write(sc, 0xA438, 0xa430); + re_real_ocp_phy_write(sc, 0xA438, 0x98b0); + re_real_ocp_phy_write(sc, 0xA438, 0x1eba); + re_real_ocp_phy_write(sc, 0xA438, 0xb01e); + re_real_ocp_phy_write(sc, 0xA438, 0xdcb0); + re_real_ocp_phy_write(sc, 0xA438, 0x1e98); + re_real_ocp_phy_write(sc, 0xA438, 0xb09e); + re_real_ocp_phy_write(sc, 0xA438, 0xbab0); + re_real_ocp_phy_write(sc, 0xA438, 0x9edc); + re_real_ocp_phy_write(sc, 0xA438, 0xb09e); + re_real_ocp_phy_write(sc, 0xA438, 0x98b1); + re_real_ocp_phy_write(sc, 0xA438, 0x1eba); + re_real_ocp_phy_write(sc, 0xA438, 0xb11e); + re_real_ocp_phy_write(sc, 0xA438, 0xdcb1); + re_real_ocp_phy_write(sc, 0xA438, 0x1e98); + re_real_ocp_phy_write(sc, 0xA438, 0xb19e); + re_real_ocp_phy_write(sc, 0xA438, 0xbab1); + re_real_ocp_phy_write(sc, 0xA438, 0x9edc); + re_real_ocp_phy_write(sc, 0xA438, 0xb19e); + re_real_ocp_phy_write(sc, 0xA438, 0x11b0); + re_real_ocp_phy_write(sc, 0xA438, 0x1e22); + re_real_ocp_phy_write(sc, 0xA438, 0xb01e); + re_real_ocp_phy_write(sc, 0xA438, 0x33b0); + re_real_ocp_phy_write(sc, 0xA438, 0x1e11); + re_real_ocp_phy_write(sc, 0xA438, 0xb09e); + re_real_ocp_phy_write(sc, 0xA438, 0x22b0); + re_real_ocp_phy_write(sc, 0xA438, 0x9e33); + re_real_ocp_phy_write(sc, 0xA438, 0xb09e); + re_real_ocp_phy_write(sc, 0xA438, 0x11b1); + re_real_ocp_phy_write(sc, 0xA438, 0x1e22); + re_real_ocp_phy_write(sc, 0xA438, 0xb11e); + re_real_ocp_phy_write(sc, 0xA438, 0x33b1); + re_real_ocp_phy_write(sc, 0xA438, 0x1e11); + re_real_ocp_phy_write(sc, 0xA438, 0xb19e); + re_real_ocp_phy_write(sc, 0xA438, 0x22b1); + re_real_ocp_phy_write(sc, 0xA438, 0x9e33); + re_real_ocp_phy_write(sc, 0xA438, 0xb19e); + re_real_ocp_phy_write(sc, 0xA436, 0xb85e); + re_real_ocp_phy_write(sc, 0xA438, 0x2f71); + re_real_ocp_phy_write(sc, 0xA436, 0xb860); + re_real_ocp_phy_write(sc, 0xA438, 0x20d9); + re_real_ocp_phy_write(sc, 0xA436, 0xb862); + re_real_ocp_phy_write(sc, 0xA438, 0x2109); + re_real_ocp_phy_write(sc, 0xA436, 0xb864); + re_real_ocp_phy_write(sc, 0xA438, 0x34e7); + re_real_ocp_phy_write(sc, 0xA436, 0xb878); + re_real_ocp_phy_write(sc, 0xA438, 0x000f); + + + re_clear_eth_ocp_phy_bit(sc, 0xB820, BIT_7); + + + re_release_phy_mcu_patch_key_lock(sc); +} + +static void +re_set_phy_mcu_8125a_1(struct re_softc *sc) +{ + re_set_phy_mcu_patch_request(sc); + + re_real_set_phy_mcu_8125a_1(sc); + + re_clear_phy_mcu_patch_request(sc); +} + +static void +re_real_set_phy_mcu_8125a_2(struct re_softc *sc) +{ + re_acquire_phy_mcu_patch_key_lock(sc); + + + re_set_eth_ocp_phy_bit(sc, 0xB820, BIT_7); + + + re_real_ocp_phy_write(sc, 0xA436, 0xA016); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA012); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA014); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x808b); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x808f); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8093); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8097); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x809d); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x80a1); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x80aa); + re_real_ocp_phy_write(sc, 0xA438, 0xd718); + re_real_ocp_phy_write(sc, 0xA438, 0x607b); + re_real_ocp_phy_write(sc, 0xA438, 0x40da); + re_real_ocp_phy_write(sc, 0xA438, 0xf00e); + re_real_ocp_phy_write(sc, 0xA438, 0x42da); + re_real_ocp_phy_write(sc, 0xA438, 0xf01e); + re_real_ocp_phy_write(sc, 0xA438, 0xd718); + re_real_ocp_phy_write(sc, 0xA438, 0x615b); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x1456); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x14a4); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x14bc); + re_real_ocp_phy_write(sc, 0xA438, 0xd718); + re_real_ocp_phy_write(sc, 0xA438, 0x5f2e); + re_real_ocp_phy_write(sc, 0xA438, 0xf01c); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x1456); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x14a4); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x14bc); + re_real_ocp_phy_write(sc, 0xA438, 0xd718); + re_real_ocp_phy_write(sc, 0xA438, 0x5f2e); + re_real_ocp_phy_write(sc, 0xA438, 0xf024); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x1456); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x14a4); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x14bc); + re_real_ocp_phy_write(sc, 0xA438, 0xd718); + re_real_ocp_phy_write(sc, 0xA438, 0x5f2e); + re_real_ocp_phy_write(sc, 0xA438, 0xf02c); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x1456); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x14a4); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x14bc); + re_real_ocp_phy_write(sc, 0xA438, 0xd718); + re_real_ocp_phy_write(sc, 0xA438, 0x5f2e); + re_real_ocp_phy_write(sc, 0xA438, 0xf034); + re_real_ocp_phy_write(sc, 0xA438, 0xd719); + re_real_ocp_phy_write(sc, 0xA438, 0x4118); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0xac11); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0xa410); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x4779); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0xac0f); + re_real_ocp_phy_write(sc, 0xA438, 0xae01); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x1444); + re_real_ocp_phy_write(sc, 0xA438, 0xf034); + re_real_ocp_phy_write(sc, 0xA438, 0xd719); + re_real_ocp_phy_write(sc, 0xA438, 0x4118); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0xac22); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0xa420); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x4559); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0xac0f); + re_real_ocp_phy_write(sc, 0xA438, 0xae01); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x1444); + re_real_ocp_phy_write(sc, 0xA438, 0xf023); + re_real_ocp_phy_write(sc, 0xA438, 0xd719); + re_real_ocp_phy_write(sc, 0xA438, 0x4118); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0xac44); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0xa440); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x4339); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0xac0f); + re_real_ocp_phy_write(sc, 0xA438, 0xae01); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x1444); + re_real_ocp_phy_write(sc, 0xA438, 0xf012); + re_real_ocp_phy_write(sc, 0xA438, 0xd719); + re_real_ocp_phy_write(sc, 0xA438, 0x4118); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0xac88); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0xa480); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x4119); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0xac0f); + re_real_ocp_phy_write(sc, 0xA438, 0xae01); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x1444); + re_real_ocp_phy_write(sc, 0xA438, 0xf001); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x1456); + re_real_ocp_phy_write(sc, 0xA438, 0xd718); + re_real_ocp_phy_write(sc, 0xA438, 0x5fac); + re_real_ocp_phy_write(sc, 0xA438, 0xc48f); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x141b); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x121a); + re_real_ocp_phy_write(sc, 0xA438, 0xd0b4); + re_real_ocp_phy_write(sc, 0xA438, 0xd1bb); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0898); + re_real_ocp_phy_write(sc, 0xA438, 0xd0b4); + re_real_ocp_phy_write(sc, 0xA438, 0xd1bb); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0a0e); + re_real_ocp_phy_write(sc, 0xA438, 0xd064); + re_real_ocp_phy_write(sc, 0xA438, 0xd18a); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0b7e); + re_real_ocp_phy_write(sc, 0xA438, 0x401c); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xa804); + re_real_ocp_phy_write(sc, 0xA438, 0x8804); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x053b); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0xa301); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0648); + re_real_ocp_phy_write(sc, 0xA438, 0xc520); + re_real_ocp_phy_write(sc, 0xA438, 0xa201); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x252d); + re_real_ocp_phy_write(sc, 0xA438, 0x1646); + re_real_ocp_phy_write(sc, 0xA438, 0xd708); + re_real_ocp_phy_write(sc, 0xA438, 0x4006); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x1646); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0308); + re_real_ocp_phy_write(sc, 0xA436, 0xA026); + re_real_ocp_phy_write(sc, 0xA438, 0x0307); + re_real_ocp_phy_write(sc, 0xA436, 0xA024); + re_real_ocp_phy_write(sc, 0xA438, 0x1645); + re_real_ocp_phy_write(sc, 0xA436, 0xA022); + re_real_ocp_phy_write(sc, 0xA438, 0x0647); + re_real_ocp_phy_write(sc, 0xA436, 0xA020); + re_real_ocp_phy_write(sc, 0xA438, 0x053a); + re_real_ocp_phy_write(sc, 0xA436, 0xA006); + re_real_ocp_phy_write(sc, 0xA438, 0x0b7c); + re_real_ocp_phy_write(sc, 0xA436, 0xA004); + re_real_ocp_phy_write(sc, 0xA438, 0x0a0c); + re_real_ocp_phy_write(sc, 0xA436, 0xA002); + re_real_ocp_phy_write(sc, 0xA438, 0x0896); + re_real_ocp_phy_write(sc, 0xA436, 0xA000); + re_real_ocp_phy_write(sc, 0xA438, 0x11a1); + re_real_ocp_phy_write(sc, 0xA436, 0xA008); + re_real_ocp_phy_write(sc, 0xA438, 0xff00); + + + re_real_ocp_phy_write(sc, 0xA436, 0xA016); + re_real_ocp_phy_write(sc, 0xA438, 0x0010); + re_real_ocp_phy_write(sc, 0xA436, 0xA012); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA014); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8015); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x801a); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x801a); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x801a); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x801a); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x801a); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x801a); + re_real_ocp_phy_write(sc, 0xA438, 0xad02); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x02d7); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x00ed); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0509); + re_real_ocp_phy_write(sc, 0xA438, 0xc100); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x008f); + re_real_ocp_phy_write(sc, 0xA436, 0xA08E); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xA08C); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xA08A); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xA088); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xA086); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xA084); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xA082); + re_real_ocp_phy_write(sc, 0xA438, 0x008d); + re_real_ocp_phy_write(sc, 0xA436, 0xA080); + re_real_ocp_phy_write(sc, 0xA438, 0x00eb); + re_real_ocp_phy_write(sc, 0xA436, 0xA090); + re_real_ocp_phy_write(sc, 0xA438, 0x0103); + + + re_real_ocp_phy_write(sc, 0xA436, 0xA016); + re_real_ocp_phy_write(sc, 0xA438, 0x0020); + re_real_ocp_phy_write(sc, 0xA436, 0xA012); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA014); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8014); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8018); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8024); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8051); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8055); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8072); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x80dc); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0xfffd); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0xfffd); + re_real_ocp_phy_write(sc, 0xA438, 0x8301); + re_real_ocp_phy_write(sc, 0xA438, 0x800a); + re_real_ocp_phy_write(sc, 0xA438, 0x8190); + re_real_ocp_phy_write(sc, 0xA438, 0x82a0); + re_real_ocp_phy_write(sc, 0xA438, 0x8404); + re_real_ocp_phy_write(sc, 0xA438, 0xa70c); + re_real_ocp_phy_write(sc, 0xA438, 0x9402); + re_real_ocp_phy_write(sc, 0xA438, 0x890c); + re_real_ocp_phy_write(sc, 0xA438, 0x8840); + re_real_ocp_phy_write(sc, 0xA438, 0xa380); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x066e); + re_real_ocp_phy_write(sc, 0xA438, 0xcb91); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x4063); + re_real_ocp_phy_write(sc, 0xA438, 0xd139); + re_real_ocp_phy_write(sc, 0xA438, 0xf002); + re_real_ocp_phy_write(sc, 0xA438, 0xd140); + re_real_ocp_phy_write(sc, 0xA438, 0xd040); + re_real_ocp_phy_write(sc, 0xA438, 0xb404); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0d00); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07e0); + re_real_ocp_phy_write(sc, 0xA438, 0xa610); + re_real_ocp_phy_write(sc, 0xA438, 0xa110); + re_real_ocp_phy_write(sc, 0xA438, 0xa2a0); + re_real_ocp_phy_write(sc, 0xA438, 0xa404); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x4085); + re_real_ocp_phy_write(sc, 0xA438, 0xa180); + re_real_ocp_phy_write(sc, 0xA438, 0xa404); + re_real_ocp_phy_write(sc, 0xA438, 0x8280); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x405d); + re_real_ocp_phy_write(sc, 0xA438, 0xa720); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x0743); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07f0); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x5f74); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x0743); + re_real_ocp_phy_write(sc, 0xA438, 0xd702); + re_real_ocp_phy_write(sc, 0xA438, 0x7fb6); + re_real_ocp_phy_write(sc, 0xA438, 0x8190); + re_real_ocp_phy_write(sc, 0xA438, 0x82a0); + re_real_ocp_phy_write(sc, 0xA438, 0x8404); + re_real_ocp_phy_write(sc, 0xA438, 0x8610); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0d01); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07e0); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x066e); + re_real_ocp_phy_write(sc, 0xA438, 0xd158); + re_real_ocp_phy_write(sc, 0xA438, 0xd04d); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x03d4); + re_real_ocp_phy_write(sc, 0xA438, 0x94bc); + re_real_ocp_phy_write(sc, 0xA438, 0x870c); + re_real_ocp_phy_write(sc, 0xA438, 0x8380); + re_real_ocp_phy_write(sc, 0xA438, 0xd10d); + re_real_ocp_phy_write(sc, 0xA438, 0xd040); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07c4); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x5fb4); + re_real_ocp_phy_write(sc, 0xA438, 0xa190); + re_real_ocp_phy_write(sc, 0xA438, 0xa00a); + re_real_ocp_phy_write(sc, 0xA438, 0xa280); + re_real_ocp_phy_write(sc, 0xA438, 0xa404); + re_real_ocp_phy_write(sc, 0xA438, 0xa220); + re_real_ocp_phy_write(sc, 0xA438, 0xd130); + re_real_ocp_phy_write(sc, 0xA438, 0xd040); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07c4); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x5fb4); + re_real_ocp_phy_write(sc, 0xA438, 0xbb80); + re_real_ocp_phy_write(sc, 0xA438, 0xd1c4); + re_real_ocp_phy_write(sc, 0xA438, 0xd074); + re_real_ocp_phy_write(sc, 0xA438, 0xa301); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x604b); + re_real_ocp_phy_write(sc, 0xA438, 0xa90c); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0556); + re_real_ocp_phy_write(sc, 0xA438, 0xcb92); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x4063); + re_real_ocp_phy_write(sc, 0xA438, 0xd116); + re_real_ocp_phy_write(sc, 0xA438, 0xf002); + re_real_ocp_phy_write(sc, 0xA438, 0xd119); + re_real_ocp_phy_write(sc, 0xA438, 0xd040); + re_real_ocp_phy_write(sc, 0xA438, 0xd703); + re_real_ocp_phy_write(sc, 0xA438, 0x60a0); + re_real_ocp_phy_write(sc, 0xA438, 0x6241); + re_real_ocp_phy_write(sc, 0xA438, 0x63e2); + re_real_ocp_phy_write(sc, 0xA438, 0x6583); + re_real_ocp_phy_write(sc, 0xA438, 0xf054); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x611e); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x40da); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d10); + re_real_ocp_phy_write(sc, 0xA438, 0xa010); + re_real_ocp_phy_write(sc, 0xA438, 0x8740); + re_real_ocp_phy_write(sc, 0xA438, 0xf02f); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d50); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0xf02a); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x611e); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x40da); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d20); + re_real_ocp_phy_write(sc, 0xA438, 0xa010); + re_real_ocp_phy_write(sc, 0xA438, 0x8740); + re_real_ocp_phy_write(sc, 0xA438, 0xf021); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d60); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0xf01c); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x611e); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x40da); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d30); + re_real_ocp_phy_write(sc, 0xA438, 0xa010); + re_real_ocp_phy_write(sc, 0xA438, 0x8740); + re_real_ocp_phy_write(sc, 0xA438, 0xf013); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d70); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0xf00e); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x611e); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x40da); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d40); + re_real_ocp_phy_write(sc, 0xA438, 0xa010); + re_real_ocp_phy_write(sc, 0xA438, 0x8740); + re_real_ocp_phy_write(sc, 0xA438, 0xf005); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d80); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07e8); + re_real_ocp_phy_write(sc, 0xA438, 0xa610); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x405d); + re_real_ocp_phy_write(sc, 0xA438, 0xa720); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x5ff4); + re_real_ocp_phy_write(sc, 0xA438, 0xa008); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x4046); + re_real_ocp_phy_write(sc, 0xA438, 0xa002); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x0743); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07fb); + re_real_ocp_phy_write(sc, 0xA438, 0xd703); + re_real_ocp_phy_write(sc, 0xA438, 0x7f6f); + re_real_ocp_phy_write(sc, 0xA438, 0x7f4e); + re_real_ocp_phy_write(sc, 0xA438, 0x7f2d); + re_real_ocp_phy_write(sc, 0xA438, 0x7f0c); + re_real_ocp_phy_write(sc, 0xA438, 0x800a); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d00); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07e8); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x0743); + re_real_ocp_phy_write(sc, 0xA438, 0xd702); + re_real_ocp_phy_write(sc, 0xA438, 0x7fb5); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x3ad4); + re_real_ocp_phy_write(sc, 0xA438, 0x0556); + re_real_ocp_phy_write(sc, 0xA438, 0x8610); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x066e); + re_real_ocp_phy_write(sc, 0xA438, 0xd1f5); + re_real_ocp_phy_write(sc, 0xA438, 0xd049); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x01ec); + re_real_ocp_phy_write(sc, 0xA436, 0xA10E); + re_real_ocp_phy_write(sc, 0xA438, 0x01ea); + re_real_ocp_phy_write(sc, 0xA436, 0xA10C); + re_real_ocp_phy_write(sc, 0xA438, 0x06a9); + re_real_ocp_phy_write(sc, 0xA436, 0xA10A); + re_real_ocp_phy_write(sc, 0xA438, 0x078a); + re_real_ocp_phy_write(sc, 0xA436, 0xA108); + re_real_ocp_phy_write(sc, 0xA438, 0x03d2); + re_real_ocp_phy_write(sc, 0xA436, 0xA106); + re_real_ocp_phy_write(sc, 0xA438, 0x067f); + re_real_ocp_phy_write(sc, 0xA436, 0xA104); + re_real_ocp_phy_write(sc, 0xA438, 0x0665); + re_real_ocp_phy_write(sc, 0xA436, 0xA102); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA100); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA110); + re_real_ocp_phy_write(sc, 0xA438, 0x00fc); + + + re_real_ocp_phy_write(sc, 0xA436, 0xb87c); + re_real_ocp_phy_write(sc, 0xA438, 0x8530); + re_real_ocp_phy_write(sc, 0xA436, 0xb87e); + re_real_ocp_phy_write(sc, 0xA438, 0xaf85); + re_real_ocp_phy_write(sc, 0xA438, 0x3caf); + re_real_ocp_phy_write(sc, 0xA438, 0x8545); + re_real_ocp_phy_write(sc, 0xA438, 0xaf85); + re_real_ocp_phy_write(sc, 0xA438, 0x45af); + re_real_ocp_phy_write(sc, 0xA438, 0x8545); + re_real_ocp_phy_write(sc, 0xA438, 0xee82); + re_real_ocp_phy_write(sc, 0xA438, 0xf900); + re_real_ocp_phy_write(sc, 0xA438, 0x0103); + re_real_ocp_phy_write(sc, 0xA438, 0xaf03); + re_real_ocp_phy_write(sc, 0xA438, 0xb7f8); + re_real_ocp_phy_write(sc, 0xA438, 0xe0a6); + re_real_ocp_phy_write(sc, 0xA438, 0x00e1); + re_real_ocp_phy_write(sc, 0xA438, 0xa601); + re_real_ocp_phy_write(sc, 0xA438, 0xef01); + re_real_ocp_phy_write(sc, 0xA438, 0x58f0); + re_real_ocp_phy_write(sc, 0xA438, 0xa080); + re_real_ocp_phy_write(sc, 0xA438, 0x37a1); + re_real_ocp_phy_write(sc, 0xA438, 0x8402); + re_real_ocp_phy_write(sc, 0xA438, 0xae16); + re_real_ocp_phy_write(sc, 0xA438, 0xa185); + re_real_ocp_phy_write(sc, 0xA438, 0x02ae); + re_real_ocp_phy_write(sc, 0xA438, 0x11a1); + re_real_ocp_phy_write(sc, 0xA438, 0x8702); + re_real_ocp_phy_write(sc, 0xA438, 0xae0c); + re_real_ocp_phy_write(sc, 0xA438, 0xa188); + re_real_ocp_phy_write(sc, 0xA438, 0x02ae); + re_real_ocp_phy_write(sc, 0xA438, 0x07a1); + re_real_ocp_phy_write(sc, 0xA438, 0x8902); + re_real_ocp_phy_write(sc, 0xA438, 0xae02); + re_real_ocp_phy_write(sc, 0xA438, 0xae1c); + re_real_ocp_phy_write(sc, 0xA438, 0xe0b4); + re_real_ocp_phy_write(sc, 0xA438, 0x62e1); + re_real_ocp_phy_write(sc, 0xA438, 0xb463); + re_real_ocp_phy_write(sc, 0xA438, 0x6901); + re_real_ocp_phy_write(sc, 0xA438, 0xe4b4); + re_real_ocp_phy_write(sc, 0xA438, 0x62e5); + re_real_ocp_phy_write(sc, 0xA438, 0xb463); + re_real_ocp_phy_write(sc, 0xA438, 0xe0b4); + re_real_ocp_phy_write(sc, 0xA438, 0x62e1); + re_real_ocp_phy_write(sc, 0xA438, 0xb463); + re_real_ocp_phy_write(sc, 0xA438, 0x6901); + re_real_ocp_phy_write(sc, 0xA438, 0xe4b4); + re_real_ocp_phy_write(sc, 0xA438, 0x62e5); + re_real_ocp_phy_write(sc, 0xA438, 0xb463); + re_real_ocp_phy_write(sc, 0xA438, 0xfc04); + re_real_ocp_phy_write(sc, 0xA436, 0xb85e); + re_real_ocp_phy_write(sc, 0xA438, 0x03b3); + re_real_ocp_phy_write(sc, 0xA436, 0xb860); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xb862); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xb864); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xb878); + re_real_ocp_phy_write(sc, 0xA438, 0x0001); + + + re_clear_eth_ocp_phy_bit(sc, 0xB820, BIT_7); + + + re_release_phy_mcu_patch_key_lock(sc); +} + +static void +re_set_phy_mcu_8125a_2(struct re_softc *sc) +{ + re_set_phy_mcu_patch_request(sc); + + re_real_set_phy_mcu_8125a_2(sc); + + re_clear_phy_mcu_patch_request(sc); +} + +static const u_int16_t phy_mcu_ram_code_8125b_1[] = { + 0xa436, 0x8024, 0xa438, 0x3700, 0xa436, 0xB82E, 0xa438, 0x0001, + 0xb820, 0x0090, 0xa436, 0xA016, 0xa438, 0x0000, 0xa436, 0xA012, + 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, + 0xa438, 0x1800, 0xa438, 0x8025, 0xa438, 0x1800, 0xa438, 0x803a, + 0xa438, 0x1800, 0xa438, 0x8044, 0xa438, 0x1800, 0xa438, 0x8083, + 0xa438, 0x1800, 0xa438, 0x808d, 0xa438, 0x1800, 0xa438, 0x808d, + 0xa438, 0x1800, 0xa438, 0x808d, 0xa438, 0xd712, 0xa438, 0x4077, + 0xa438, 0xd71e, 0xa438, 0x4159, 0xa438, 0xd71e, 0xa438, 0x6099, + 0xa438, 0x7f44, 0xa438, 0x1800, 0xa438, 0x1a14, 0xa438, 0x9040, + 0xa438, 0x9201, 0xa438, 0x1800, 0xa438, 0x1b1a, 0xa438, 0xd71e, + 0xa438, 0x2425, 0xa438, 0x1a14, 0xa438, 0xd71f, 0xa438, 0x3ce5, + 0xa438, 0x1afb, 0xa438, 0x1800, 0xa438, 0x1b00, 0xa438, 0xd712, + 0xa438, 0x4077, 0xa438, 0xd71e, 0xa438, 0x4159, 0xa438, 0xd71e, + 0xa438, 0x60b9, 0xa438, 0x2421, 0xa438, 0x1c17, 0xa438, 0x1800, + 0xa438, 0x1a14, 0xa438, 0x9040, 0xa438, 0x1800, 0xa438, 0x1c2c, + 0xa438, 0xd71e, 0xa438, 0x2425, 0xa438, 0x1a14, 0xa438, 0xd71f, + 0xa438, 0x3ce5, 0xa438, 0x1c0f, 0xa438, 0x1800, 0xa438, 0x1c13, + 0xa438, 0xd702, 0xa438, 0xd501, 0xa438, 0x6072, 0xa438, 0x8401, + 0xa438, 0xf002, 0xa438, 0xa401, 0xa438, 0x1000, 0xa438, 0x146e, + 0xa438, 0x1800, 0xa438, 0x0b77, 0xa438, 0xd703, 0xa438, 0x665d, + 0xa438, 0x653e, 0xa438, 0x641f, 0xa438, 0xd700, 0xa438, 0x62c4, + 0xa438, 0x6185, 0xa438, 0x6066, 0xa438, 0x1800, 0xa438, 0x165a, + 0xa438, 0xc101, 0xa438, 0xcb00, 0xa438, 0x1000, 0xa438, 0x1945, + 0xa438, 0xd700, 0xa438, 0x7fa6, 0xa438, 0x1800, 0xa438, 0x807d, + 0xa438, 0xc102, 0xa438, 0xcb00, 0xa438, 0x1000, 0xa438, 0x1945, + 0xa438, 0xd700, 0xa438, 0x2569, 0xa438, 0x8058, 0xa438, 0x1800, + 0xa438, 0x807d, 0xa438, 0xc104, 0xa438, 0xcb00, 0xa438, 0x1000, + 0xa438, 0x1945, 0xa438, 0xd700, 0xa438, 0x7fa4, 0xa438, 0x1800, + 0xa438, 0x807d, 0xa438, 0xc120, 0xa438, 0xcb00, 0xa438, 0x1000, + 0xa438, 0x1945, 0xa438, 0xd703, 0xa438, 0x7fbf, 0xa438, 0x1800, + 0xa438, 0x807d, 0xa438, 0xc140, 0xa438, 0xcb00, 0xa438, 0x1000, + 0xa438, 0x1945, 0xa438, 0xd703, 0xa438, 0x7fbe, 0xa438, 0x1800, + 0xa438, 0x807d, 0xa438, 0xc180, 0xa438, 0xcb00, 0xa438, 0x1000, + 0xa438, 0x1945, 0xa438, 0xd703, 0xa438, 0x7fbd, 0xa438, 0xc100, + 0xa438, 0xcb00, 0xa438, 0xd708, 0xa438, 0x6018, 0xa438, 0x1800, + 0xa438, 0x165a, 0xa438, 0x1000, 0xa438, 0x14f6, 0xa438, 0xd014, + 0xa438, 0xd1e3, 0xa438, 0x1000, 0xa438, 0x1356, 0xa438, 0xd705, + 0xa438, 0x5fbe, 0xa438, 0x1800, 0xa438, 0x1559, 0xa436, 0xA026, + 0xa438, 0xffff, 0xa436, 0xA024, 0xa438, 0xffff, 0xa436, 0xA022, + 0xa438, 0xffff, 0xa436, 0xA020, 0xa438, 0x1557, 0xa436, 0xA006, + 0xa438, 0x1677, 0xa436, 0xA004, 0xa438, 0x0b75, 0xa436, 0xA002, + 0xa438, 0x1c17, 0xa436, 0xA000, 0xa438, 0x1b04, 0xa436, 0xA008, + 0xa438, 0x1f00, 0xa436, 0xA016, 0xa438, 0x0020, 0xa436, 0xA012, + 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, + 0xa438, 0x1800, 0xa438, 0x817f, 0xa438, 0x1800, 0xa438, 0x82ab, + 0xa438, 0x1800, 0xa438, 0x83f8, 0xa438, 0x1800, 0xa438, 0x8444, + 0xa438, 0x1800, 0xa438, 0x8454, 0xa438, 0x1800, 0xa438, 0x8459, + 0xa438, 0x1800, 0xa438, 0x8465, 0xa438, 0xcb11, 0xa438, 0xa50c, + 0xa438, 0x8310, 0xa438, 0xd701, 0xa438, 0x4076, 0xa438, 0x0c03, + 0xa438, 0x0903, 0xa438, 0xd700, 0xa438, 0x6083, 0xa438, 0x0c1f, + 0xa438, 0x0d00, 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x0d00, + 0xa438, 0x1000, 0xa438, 0x0a7d, 0xa438, 0x1000, 0xa438, 0x0a4d, + 0xa438, 0xcb12, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, + 0xa438, 0x5f84, 0xa438, 0xd102, 0xa438, 0xd040, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xd701, + 0xa438, 0x60f3, 0xa438, 0xd413, 0xa438, 0x1000, 0xa438, 0x0a37, + 0xa438, 0xd410, 0xa438, 0x1000, 0xa438, 0x0a37, 0xa438, 0xcb13, + 0xa438, 0xa108, 0xa438, 0x1000, 0xa438, 0x0a42, 0xa438, 0x8108, + 0xa438, 0xa00a, 0xa438, 0xa910, 0xa438, 0xa780, 0xa438, 0xd14a, + 0xa438, 0xd048, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd701, + 0xa438, 0x6255, 0xa438, 0xd700, 0xa438, 0x5f74, 0xa438, 0x6326, + 0xa438, 0xd702, 0xa438, 0x5f07, 0xa438, 0x800a, 0xa438, 0xa004, + 0xa438, 0x1000, 0xa438, 0x0a42, 0xa438, 0x8004, 0xa438, 0xa001, + 0xa438, 0x1000, 0xa438, 0x0a42, 0xa438, 0x8001, 0xa438, 0x0c03, + 0xa438, 0x0902, 0xa438, 0xffe2, 0xa438, 0x1000, 0xa438, 0x0a5e, + 0xa438, 0xd71f, 0xa438, 0x5fab, 0xa438, 0xba08, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x7f8b, 0xa438, 0x9a08, + 0xa438, 0x800a, 0xa438, 0xd702, 0xa438, 0x6535, 0xa438, 0xd40d, + 0xa438, 0x1000, 0xa438, 0x0a37, 0xa438, 0xcb14, 0xa438, 0xa004, + 0xa438, 0x1000, 0xa438, 0x0a42, 0xa438, 0x8004, 0xa438, 0xa001, + 0xa438, 0x1000, 0xa438, 0x0a42, 0xa438, 0x8001, 0xa438, 0xa00a, + 0xa438, 0xa780, 0xa438, 0xd14a, 0xa438, 0xd048, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0x6206, + 0xa438, 0xd702, 0xa438, 0x5f47, 0xa438, 0x800a, 0xa438, 0xa004, + 0xa438, 0x1000, 0xa438, 0x0a42, 0xa438, 0x8004, 0xa438, 0xa001, + 0xa438, 0x1000, 0xa438, 0x0a42, 0xa438, 0x8001, 0xa438, 0x0c03, + 0xa438, 0x0902, 0xa438, 0x1800, 0xa438, 0x8064, 0xa438, 0x800a, + 0xa438, 0xd40e, 0xa438, 0x1000, 0xa438, 0x0a37, 0xa438, 0xb920, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x5fac, + 0xa438, 0x9920, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, + 0xa438, 0x7f8c, 0xa438, 0xd701, 0xa438, 0x6073, 0xa438, 0xd701, + 0xa438, 0x4216, 0xa438, 0xa004, 0xa438, 0x1000, 0xa438, 0x0a42, + 0xa438, 0x8004, 0xa438, 0xa001, 0xa438, 0x1000, 0xa438, 0x0a42, + 0xa438, 0x8001, 0xa438, 0xd120, 0xa438, 0xd040, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0x8504, + 0xa438, 0xcb21, 0xa438, 0xa301, 0xa438, 0x1000, 0xa438, 0x0a5e, + 0xa438, 0xd700, 0xa438, 0x5f9f, 0xa438, 0x8301, 0xa438, 0xd704, + 0xa438, 0x40e0, 0xa438, 0xd196, 0xa438, 0xd04d, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xcb22, + 0xa438, 0x1000, 0xa438, 0x0a6d, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa640, 0xa438, 0x9503, 0xa438, 0x8910, 0xa438, 0x8720, + 0xa438, 0xd700, 0xa438, 0x6083, 0xa438, 0x0c1f, 0xa438, 0x0d01, + 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x0d01, 0xa438, 0x1000, + 0xa438, 0x0a7d, 0xa438, 0x0c1f, 0xa438, 0x0f14, 0xa438, 0xcb23, + 0xa438, 0x8fc0, 0xa438, 0x1000, 0xa438, 0x0a25, 0xa438, 0xaf40, + 0xa438, 0x1000, 0xa438, 0x0a25, 0xa438, 0x0cc0, 0xa438, 0x0f80, + 0xa438, 0x1000, 0xa438, 0x0a25, 0xa438, 0xafc0, 0xa438, 0x1000, + 0xa438, 0x0a25, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd701, + 0xa438, 0x5dee, 0xa438, 0xcb24, 0xa438, 0x8f1f, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd701, 0xa438, 0x7f6e, 0xa438, 0xa111, + 0xa438, 0xa215, 0xa438, 0xa401, 0xa438, 0x8404, 0xa438, 0xa720, + 0xa438, 0xcb25, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8640, + 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x0b43, 0xa438, 0x1000, + 0xa438, 0x0b86, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xb920, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x5fac, + 0xa438, 0x9920, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, + 0xa438, 0x7f8c, 0xa438, 0xcb26, 0xa438, 0x1000, 0xa438, 0x0a5e, + 0xa438, 0xd71f, 0xa438, 0x5f82, 0xa438, 0x8111, 0xa438, 0x8205, + 0xa438, 0x8404, 0xa438, 0xcb27, 0xa438, 0xd404, 0xa438, 0x1000, + 0xa438, 0x0a37, 0xa438, 0xd700, 0xa438, 0x6083, 0xa438, 0x0c1f, + 0xa438, 0x0d02, 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x0d02, + 0xa438, 0x1000, 0xa438, 0x0a7d, 0xa438, 0xa710, 0xa438, 0xa104, + 0xa438, 0x1000, 0xa438, 0x0a42, 0xa438, 0x8104, 0xa438, 0xa001, + 0xa438, 0x1000, 0xa438, 0x0a42, 0xa438, 0x8001, 0xa438, 0xa120, + 0xa438, 0xaa0f, 0xa438, 0x8110, 0xa438, 0xa284, 0xa438, 0xa404, + 0xa438, 0xa00a, 0xa438, 0xd193, 0xa438, 0xd046, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xcb28, + 0xa438, 0xa110, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd700, + 0xa438, 0x5fa8, 0xa438, 0x8110, 0xa438, 0x8284, 0xa438, 0xa404, + 0xa438, 0x800a, 0xa438, 0x8710, 0xa438, 0xb804, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x7f82, 0xa438, 0x9804, + 0xa438, 0xcb29, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, + 0xa438, 0x5f85, 0xa438, 0xa710, 0xa438, 0xb820, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x7f65, 0xa438, 0x9820, + 0xa438, 0xcb2a, 0xa438, 0xa190, 0xa438, 0xa284, 0xa438, 0xa404, + 0xa438, 0xa00a, 0xa438, 0xd13d, 0xa438, 0xd04a, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x3444, 0xa438, 0x8149, + 0xa438, 0xa220, 0xa438, 0xd1a0, 0xa438, 0xd040, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x3444, 0xa438, 0x8151, + 0xa438, 0xd702, 0xa438, 0x5f51, 0xa438, 0xcb2f, 0xa438, 0xa302, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd708, 0xa438, 0x5f63, + 0xa438, 0xd411, 0xa438, 0x1000, 0xa438, 0x0a37, 0xa438, 0x8302, + 0xa438, 0xd409, 0xa438, 0x1000, 0xa438, 0x0a37, 0xa438, 0xb920, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x5fac, + 0xa438, 0x9920, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, + 0xa438, 0x7f8c, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, + 0xa438, 0x5fa3, 0xa438, 0x8190, 0xa438, 0x82a4, 0xa438, 0x8404, + 0xa438, 0x800a, 0xa438, 0xb808, 0xa438, 0x1000, 0xa438, 0x0a5e, + 0xa438, 0xd71f, 0xa438, 0x7fa3, 0xa438, 0x9808, 0xa438, 0x1800, + 0xa438, 0x0433, 0xa438, 0xcb15, 0xa438, 0xa508, 0xa438, 0xd700, + 0xa438, 0x6083, 0xa438, 0x0c1f, 0xa438, 0x0d01, 0xa438, 0xf003, + 0xa438, 0x0c1f, 0xa438, 0x0d01, 0xa438, 0x1000, 0xa438, 0x0a7d, + 0xa438, 0x1000, 0xa438, 0x0a4d, 0xa438, 0xa301, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x5f9f, 0xa438, 0x8301, + 0xa438, 0xd704, 0xa438, 0x40e0, 0xa438, 0xd115, 0xa438, 0xd04f, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x5fb4, + 0xa438, 0xd413, 0xa438, 0x1000, 0xa438, 0x0a37, 0xa438, 0xcb16, + 0xa438, 0x1000, 0xa438, 0x0a6d, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa640, 0xa438, 0x9503, 0xa438, 0x8720, 0xa438, 0xd17a, + 0xa438, 0xd04c, 0xa438, 0x0c1f, 0xa438, 0x0f14, 0xa438, 0xcb17, + 0xa438, 0x8fc0, 0xa438, 0x1000, 0xa438, 0x0a25, 0xa438, 0xaf40, + 0xa438, 0x1000, 0xa438, 0x0a25, 0xa438, 0x0cc0, 0xa438, 0x0f80, + 0xa438, 0x1000, 0xa438, 0x0a25, 0xa438, 0xafc0, 0xa438, 0x1000, + 0xa438, 0x0a25, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd701, + 0xa438, 0x61ce, 0xa438, 0xd700, 0xa438, 0x5db4, 0xa438, 0xcb18, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8640, 0xa438, 0x9503, + 0xa438, 0xa720, 0xa438, 0x1000, 0xa438, 0x0b43, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xffd6, 0xa438, 0x8f1f, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd701, 0xa438, 0x7f8e, 0xa438, 0xa131, + 0xa438, 0xaa0f, 0xa438, 0xa2d5, 0xa438, 0xa407, 0xa438, 0xa720, + 0xa438, 0x8310, 0xa438, 0xa308, 0xa438, 0x8308, 0xa438, 0xcb19, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8640, 0xa438, 0x9503, + 0xa438, 0x1000, 0xa438, 0x0b43, 0xa438, 0x1000, 0xa438, 0x0b86, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xb920, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x5fac, 0xa438, 0x9920, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x7f8c, + 0xa438, 0xcb1a, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, + 0xa438, 0x5f82, 0xa438, 0x8111, 0xa438, 0x82c5, 0xa438, 0xa404, + 0xa438, 0x8402, 0xa438, 0xb804, 0xa438, 0x1000, 0xa438, 0x0a5e, + 0xa438, 0xd71f, 0xa438, 0x7f82, 0xa438, 0x9804, 0xa438, 0xcb1b, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x5f85, + 0xa438, 0xa710, 0xa438, 0xb820, 0xa438, 0x1000, 0xa438, 0x0a5e, + 0xa438, 0xd71f, 0xa438, 0x7f65, 0xa438, 0x9820, 0xa438, 0xcb1c, + 0xa438, 0xd700, 0xa438, 0x6083, 0xa438, 0x0c1f, 0xa438, 0x0d02, + 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x0d02, 0xa438, 0x1000, + 0xa438, 0x0a7d, 0xa438, 0xa110, 0xa438, 0xa284, 0xa438, 0xa404, + 0xa438, 0x8402, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd700, + 0xa438, 0x5fa8, 0xa438, 0xcb1d, 0xa438, 0xa180, 0xa438, 0xa402, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x5fa8, + 0xa438, 0xa220, 0xa438, 0xd1f5, 0xa438, 0xd049, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x3444, 0xa438, 0x8221, + 0xa438, 0xd702, 0xa438, 0x5f51, 0xa438, 0xb920, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x5fac, 0xa438, 0x9920, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x7f8c, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x5fa3, + 0xa438, 0xa504, 0xa438, 0xd700, 0xa438, 0x6083, 0xa438, 0x0c1f, + 0xa438, 0x0d00, 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x0d00, + 0xa438, 0x1000, 0xa438, 0x0a7d, 0xa438, 0xa00a, 0xa438, 0x8190, + 0xa438, 0x82a4, 0xa438, 0x8402, 0xa438, 0xa404, 0xa438, 0xb808, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x7fa3, + 0xa438, 0x9808, 0xa438, 0xcb2b, 0xa438, 0xcb2c, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x5f84, 0xa438, 0xd14a, + 0xa438, 0xd048, 0xa438, 0xa780, 0xa438, 0xcb2d, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x5f94, 0xa438, 0x6208, + 0xa438, 0xd702, 0xa438, 0x5f27, 0xa438, 0x800a, 0xa438, 0xa004, + 0xa438, 0x1000, 0xa438, 0x0a42, 0xa438, 0x8004, 0xa438, 0xa001, + 0xa438, 0x1000, 0xa438, 0x0a42, 0xa438, 0x8001, 0xa438, 0x0c03, + 0xa438, 0x0902, 0xa438, 0xa00a, 0xa438, 0xffe9, 0xa438, 0xcb2e, + 0xa438, 0xd700, 0xa438, 0x6083, 0xa438, 0x0c1f, 0xa438, 0x0d02, + 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x0d02, 0xa438, 0x1000, + 0xa438, 0x0a7d, 0xa438, 0xa190, 0xa438, 0xa284, 0xa438, 0xa406, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x5fa8, + 0xa438, 0xa220, 0xa438, 0xd1a0, 0xa438, 0xd040, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x3444, 0xa438, 0x827d, + 0xa438, 0xd702, 0xa438, 0x5f51, 0xa438, 0xcb2f, 0xa438, 0xa302, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd708, 0xa438, 0x5f63, + 0xa438, 0xd411, 0xa438, 0x1000, 0xa438, 0x0a37, 0xa438, 0x8302, + 0xa438, 0xd409, 0xa438, 0x1000, 0xa438, 0x0a37, 0xa438, 0xb920, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x5fac, + 0xa438, 0x9920, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, + 0xa438, 0x7f8c, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, + 0xa438, 0x5fa3, 0xa438, 0x8190, 0xa438, 0x82a4, 0xa438, 0x8406, + 0xa438, 0x800a, 0xa438, 0xb808, 0xa438, 0x1000, 0xa438, 0x0a5e, + 0xa438, 0xd71f, 0xa438, 0x7fa3, 0xa438, 0x9808, 0xa438, 0x1800, + 0xa438, 0x0433, 0xa438, 0xcb30, 0xa438, 0x8380, 0xa438, 0xcb31, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x5f86, + 0xa438, 0x9308, 0xa438, 0xb204, 0xa438, 0xb301, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd701, 0xa438, 0x5fa2, 0xa438, 0xb302, + 0xa438, 0x9204, 0xa438, 0xcb32, 0xa438, 0xd408, 0xa438, 0x1000, + 0xa438, 0x0a37, 0xa438, 0xd141, 0xa438, 0xd043, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xd704, + 0xa438, 0x4ccc, 0xa438, 0xd700, 0xa438, 0x4c81, 0xa438, 0xd702, + 0xa438, 0x609e, 0xa438, 0xd1e5, 0xa438, 0xd04d, 0xa438, 0xf003, + 0xa438, 0xd1e5, 0xa438, 0xd04d, 0xa438, 0x1000, 0xa438, 0x0a5e, + 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xd700, 0xa438, 0x6083, + 0xa438, 0x0c1f, 0xa438, 0x0d01, 0xa438, 0xf003, 0xa438, 0x0c1f, + 0xa438, 0x0d01, 0xa438, 0x1000, 0xa438, 0x0a7d, 0xa438, 0x8710, + 0xa438, 0xa108, 0xa438, 0x1000, 0xa438, 0x0a42, 0xa438, 0x8108, + 0xa438, 0xa203, 0xa438, 0x8120, 0xa438, 0x8a0f, 0xa438, 0xa111, + 0xa438, 0x8204, 0xa438, 0xa140, 0xa438, 0x1000, 0xa438, 0x0a42, + 0xa438, 0x8140, 0xa438, 0xd17a, 0xa438, 0xd04b, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xa204, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x5fa7, + 0xa438, 0xb920, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, + 0xa438, 0x5fac, 0xa438, 0x9920, 0xa438, 0x1000, 0xa438, 0x0a5e, + 0xa438, 0xd71f, 0xa438, 0x7f8c, 0xa438, 0xd404, 0xa438, 0x1000, + 0xa438, 0x0a37, 0xa438, 0xd700, 0xa438, 0x6083, 0xa438, 0x0c1f, + 0xa438, 0x0d02, 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x0d02, + 0xa438, 0x1000, 0xa438, 0x0a7d, 0xa438, 0xa710, 0xa438, 0x8101, + 0xa438, 0x8201, 0xa438, 0xa104, 0xa438, 0x1000, 0xa438, 0x0a42, + 0xa438, 0x8104, 0xa438, 0xa120, 0xa438, 0xaa0f, 0xa438, 0x8110, + 0xa438, 0xa284, 0xa438, 0xa404, 0xa438, 0xa00a, 0xa438, 0xd193, + 0xa438, 0xd047, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd700, + 0xa438, 0x5fb4, 0xa438, 0xa110, 0xa438, 0x1000, 0xa438, 0x0a5e, + 0xa438, 0xd700, 0xa438, 0x5fa8, 0xa438, 0xa180, 0xa438, 0xd13d, + 0xa438, 0xd04a, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd700, + 0xa438, 0x5fb4, 0xa438, 0xf024, 0xa438, 0xa710, 0xa438, 0xa00a, + 0xa438, 0x8190, 0xa438, 0x8204, 0xa438, 0xa280, 0xa438, 0xa404, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x5fa7, + 0xa438, 0x8710, 0xa438, 0xb920, 0xa438, 0x1000, 0xa438, 0x0a5e, + 0xa438, 0xd71f, 0xa438, 0x5fac, 0xa438, 0x9920, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x7f8c, 0xa438, 0x800a, + 0xa438, 0x8190, 0xa438, 0x8284, 0xa438, 0x8406, 0xa438, 0xd700, + 0xa438, 0x4121, 0xa438, 0xd701, 0xa438, 0x60f3, 0xa438, 0xd1e5, + 0xa438, 0xd04d, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd700, + 0xa438, 0x5fb4, 0xa438, 0x8710, 0xa438, 0xa00a, 0xa438, 0x8190, + 0xa438, 0x8204, 0xa438, 0xa280, 0xa438, 0xa404, 0xa438, 0xb920, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x5fac, + 0xa438, 0x9920, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, + 0xa438, 0x7f8c, 0xa438, 0xcb33, 0xa438, 0x1000, 0xa438, 0x0a5e, + 0xa438, 0xd71f, 0xa438, 0x5f85, 0xa438, 0xa710, 0xa438, 0xb820, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd71f, 0xa438, 0x7f65, + 0xa438, 0x9820, 0xa438, 0xcb34, 0xa438, 0xa00a, 0xa438, 0xa190, + 0xa438, 0xa284, 0xa438, 0xa404, 0xa438, 0x1000, 0xa438, 0x0a5e, + 0xa438, 0xd700, 0xa438, 0x5fa9, 0xa438, 0xd701, 0xa438, 0x6853, + 0xa438, 0xd700, 0xa438, 0x6083, 0xa438, 0x0c1f, 0xa438, 0x0d00, + 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x0d00, 0xa438, 0x1000, + 0xa438, 0x0a7d, 0xa438, 0x8190, 0xa438, 0x8284, 0xa438, 0xcb35, + 0xa438, 0xd407, 0xa438, 0x1000, 0xa438, 0x0a37, 0xa438, 0x8110, + 0xa438, 0x8204, 0xa438, 0xa280, 0xa438, 0xa00a, 0xa438, 0xd704, + 0xa438, 0x4215, 0xa438, 0xa304, 0xa438, 0x1000, 0xa438, 0x0a5e, + 0xa438, 0xd700, 0xa438, 0x5fb8, 0xa438, 0xd1c3, 0xa438, 0xd043, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x5fb4, + 0xa438, 0x8304, 0xa438, 0xd700, 0xa438, 0x4109, 0xa438, 0xf01e, + 0xa438, 0xcb36, 0xa438, 0xd412, 0xa438, 0x1000, 0xa438, 0x0a37, + 0xa438, 0xd700, 0xa438, 0x6309, 0xa438, 0xd702, 0xa438, 0x42c7, + 0xa438, 0x800a, 0xa438, 0x8180, 0xa438, 0x8280, 0xa438, 0x8404, + 0xa438, 0xa004, 0xa438, 0x1000, 0xa438, 0x0a42, 0xa438, 0x8004, + 0xa438, 0xa001, 0xa438, 0x1000, 0xa438, 0x0a42, 0xa438, 0x8001, + 0xa438, 0x0c03, 0xa438, 0x0902, 0xa438, 0xa00a, 0xa438, 0xd14a, + 0xa438, 0xd048, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd700, + 0xa438, 0x5fb4, 0xa438, 0xd700, 0xa438, 0x6083, 0xa438, 0x0c1f, + 0xa438, 0x0d02, 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x0d02, + 0xa438, 0x1000, 0xa438, 0x0a7d, 0xa438, 0xcc55, 0xa438, 0xcb37, + 0xa438, 0xa00a, 0xa438, 0xa190, 0xa438, 0xa2a4, 0xa438, 0xa404, + 0xa438, 0xd700, 0xa438, 0x6041, 0xa438, 0xa402, 0xa438, 0xd13d, + 0xa438, 0xd04a, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd700, + 0xa438, 0x5fb4, 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd700, + 0xa438, 0x5fa9, 0xa438, 0xd702, 0xa438, 0x5f71, 0xa438, 0xcb38, + 0xa438, 0x8224, 0xa438, 0xa288, 0xa438, 0x8180, 0xa438, 0xa110, + 0xa438, 0xa404, 0xa438, 0x800a, 0xa438, 0xd700, 0xa438, 0x6041, + 0xa438, 0x8402, 0xa438, 0xd415, 0xa438, 0x1000, 0xa438, 0x0a37, + 0xa438, 0xd13d, 0xa438, 0xd04a, 0xa438, 0x1000, 0xa438, 0x0a5e, + 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xcb39, 0xa438, 0xa00a, + 0xa438, 0xa190, 0xa438, 0xa2a0, 0xa438, 0xa404, 0xa438, 0xd700, + 0xa438, 0x6041, 0xa438, 0xa402, 0xa438, 0xd17a, 0xa438, 0xd047, + 0xa438, 0x1000, 0xa438, 0x0a5e, 0xa438, 0xd700, 0xa438, 0x5fb4, + 0xa438, 0x1800, 0xa438, 0x0560, 0xa438, 0xa111, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0xd3f5, + 0xa438, 0xd219, 0xa438, 0x1000, 0xa438, 0x0c31, 0xa438, 0xd708, + 0xa438, 0x5fa5, 0xa438, 0xa215, 0xa438, 0xd30e, 0xa438, 0xd21a, + 0xa438, 0x1000, 0xa438, 0x0c31, 0xa438, 0xd708, 0xa438, 0x63e9, + 0xa438, 0xd708, 0xa438, 0x5f65, 0xa438, 0xd708, 0xa438, 0x7f36, + 0xa438, 0xa004, 0xa438, 0x1000, 0xa438, 0x0c35, 0xa438, 0x8004, + 0xa438, 0xa001, 0xa438, 0x1000, 0xa438, 0x0c35, 0xa438, 0x8001, + 0xa438, 0xd708, 0xa438, 0x4098, 0xa438, 0xd102, 0xa438, 0x9401, + 0xa438, 0xf003, 0xa438, 0xd103, 0xa438, 0xb401, 0xa438, 0x1000, + 0xa438, 0x0c27, 0xa438, 0xa108, 0xa438, 0x1000, 0xa438, 0x0c35, + 0xa438, 0x8108, 0xa438, 0x8110, 0xa438, 0x8294, 0xa438, 0xa202, + 0xa438, 0x1800, 0xa438, 0x0bdb, 0xa438, 0xd39c, 0xa438, 0xd210, + 0xa438, 0x1000, 0xa438, 0x0c31, 0xa438, 0xd708, 0xa438, 0x5fa5, + 0xa438, 0xd39c, 0xa438, 0xd210, 0xa438, 0x1000, 0xa438, 0x0c31, + 0xa438, 0xd708, 0xa438, 0x5fa5, 0xa438, 0x1000, 0xa438, 0x0c31, + 0xa438, 0xd708, 0xa438, 0x29b5, 0xa438, 0x840e, 0xa438, 0xd708, + 0xa438, 0x5f4a, 0xa438, 0x0c1f, 0xa438, 0x1014, 0xa438, 0x1000, + 0xa438, 0x0c31, 0xa438, 0xd709, 0xa438, 0x7fa4, 0xa438, 0x901f, + 0xa438, 0x1800, 0xa438, 0x0c23, 0xa438, 0xcb43, 0xa438, 0xa508, + 0xa438, 0xd701, 0xa438, 0x3699, 0xa438, 0x844a, 0xa438, 0xa504, + 0xa438, 0xa190, 0xa438, 0xa2a0, 0xa438, 0xa404, 0xa438, 0xa00a, + 0xa438, 0xd700, 0xa438, 0x2109, 0xa438, 0x05ea, 0xa438, 0xa402, + 0xa438, 0x1800, 0xa438, 0x05ea, 0xa438, 0xcb90, 0xa438, 0x0cf0, + 0xa438, 0x0ca0, 0xa438, 0x1800, 0xa438, 0x06db, 0xa438, 0xd1ff, + 0xa438, 0xd052, 0xa438, 0xa508, 0xa438, 0x8718, 0xa438, 0xa00a, + 0xa438, 0xa190, 0xa438, 0xa2a0, 0xa438, 0xa404, 0xa438, 0x0cf0, + 0xa438, 0x0c50, 0xa438, 0x1800, 0xa438, 0x09ef, 0xa438, 0x1000, + 0xa438, 0x0a5e, 0xa438, 0xd704, 0xa438, 0x2e70, 0xa438, 0x06da, + 0xa438, 0xd700, 0xa438, 0x5f55, 0xa438, 0xa90c, 0xa438, 0x1800, + 0xa438, 0x0645, 0xa436, 0xA10E, 0xa438, 0x0644, 0xa436, 0xA10C, + 0xa438, 0x09e9, 0xa436, 0xA10A, 0xa438, 0x06da, 0xa436, 0xA108, + 0xa438, 0x05e1, 0xa436, 0xA106, 0xa438, 0x0be4, 0xa436, 0xA104, + 0xa438, 0x0435, 0xa436, 0xA102, 0xa438, 0x0141, 0xa436, 0xA100, + 0xa438, 0x026d, 0xa436, 0xA110, 0xa438, 0x00ff, 0xa436, 0xb87c, + 0xa438, 0x85fe, 0xa436, 0xb87e, 0xa438, 0xaf86, 0xa438, 0x16af, + 0xa438, 0x8699, 0xa438, 0xaf86, 0xa438, 0xe5af, 0xa438, 0x86f9, + 0xa438, 0xaf87, 0xa438, 0x7aaf, 0xa438, 0x883a, 0xa438, 0xaf88, + 0xa438, 0x58af, 0xa438, 0x8b6c, 0xa438, 0xd48b, 0xa438, 0x7c02, + 0xa438, 0x8644, 0xa438, 0x2c00, 0xa438, 0x503c, 0xa438, 0xffd6, + 0xa438, 0xac27, 0xa438, 0x18e1, 0xa438, 0x82fe, 0xa438, 0xad28, + 0xa438, 0x0cd4, 0xa438, 0x8b84, 0xa438, 0x0286, 0xa438, 0x442c, + 0xa438, 0x003c, 0xa438, 0xac27, 0xa438, 0x06ee, 0xa438, 0x8299, + 0xa438, 0x01ae, 0xa438, 0x04ee, 0xa438, 0x8299, 0xa438, 0x00af, + 0xa438, 0x23dc, 0xa438, 0xf9fa, 0xa438, 0xcefa, 0xa438, 0xfbef, + 0xa438, 0x79fb, 0xa438, 0xc4bf, 0xa438, 0x8b76, 0xa438, 0x026c, + 0xa438, 0x6dac, 0xa438, 0x2804, 0xa438, 0xd203, 0xa438, 0xae02, + 0xa438, 0xd201, 0xa438, 0xbdd8, 0xa438, 0x19d9, 0xa438, 0xef94, + 0xa438, 0x026c, 0xa438, 0x6d78, 0xa438, 0x03ef, 0xa438, 0x648a, + 0xa438, 0x0002, 0xa438, 0xbdd8, 0xa438, 0x19d9, 0xa438, 0xef94, + 0xa438, 0x026c, 0xa438, 0x6d78, 0xa438, 0x03ef, 0xa438, 0x7402, + 0xa438, 0x72cd, 0xa438, 0xac50, 0xa438, 0x02ef, 0xa438, 0x643a, + 0xa438, 0x019f, 0xa438, 0xe4ef, 0xa438, 0x4678, 0xa438, 0x03ac, + 0xa438, 0x2002, 0xa438, 0xae02, 0xa438, 0xd0ff, 0xa438, 0xffef, + 0xa438, 0x97ff, 0xa438, 0xfec6, 0xa438, 0xfefd, 0xa438, 0x041f, + 0xa438, 0x771f, 0xa438, 0x221c, 0xa438, 0x450d, 0xa438, 0x481f, + 0xa438, 0x00ac, 0xa438, 0x7f04, 0xa438, 0x1a94, 0xa438, 0xae08, + 0xa438, 0x1a94, 0xa438, 0xac7f, 0xa438, 0x03d7, 0xa438, 0x0100, + 0xa438, 0xef46, 0xa438, 0x0d48, 0xa438, 0x1f00, 0xa438, 0x1c45, + 0xa438, 0xef69, 0xa438, 0xef57, 0xa438, 0xef74, 0xa438, 0x0272, + 0xa438, 0xe8a7, 0xa438, 0xffff, 0xa438, 0x0d1a, 0xa438, 0x941b, + 0xa438, 0x979e, 0xa438, 0x072d, 0xa438, 0x0100, 0xa438, 0x1a64, + 0xa438, 0xef76, 0xa438, 0xef97, 0xa438, 0x0d98, 0xa438, 0xd400, + 0xa438, 0xff1d, 0xa438, 0x941a, 0xa438, 0x89cf, 0xa438, 0x1a75, + 0xa438, 0xaf74, 0xa438, 0xf9bf, 0xa438, 0x8b79, 0xa438, 0x026c, + 0xa438, 0x6da1, 0xa438, 0x0005, 0xa438, 0xe180, 0xa438, 0xa0ae, + 0xa438, 0x03e1, 0xa438, 0x80a1, 0xa438, 0xaf26, 0xa438, 0x9aac, + 0xa438, 0x284d, 0xa438, 0xe08f, 0xa438, 0xffef, 0xa438, 0x10c0, + 0xa438, 0xe08f, 0xa438, 0xfe10, 0xa438, 0x1b08, 0xa438, 0xa000, + 0xa438, 0x04c8, 0xa438, 0xaf40, 0xa438, 0x67c8, 0xa438, 0xbf8b, + 0xa438, 0x8c02, 0xa438, 0x6c4e, 0xa438, 0xc4bf, 0xa438, 0x8b8f, + 0xa438, 0x026c, 0xa438, 0x6def, 0xa438, 0x74e0, 0xa438, 0x830c, + 0xa438, 0xad20, 0xa438, 0x0302, 0xa438, 0x74ac, 0xa438, 0xccef, + 0xa438, 0x971b, 0xa438, 0x76ad, 0xa438, 0x5f02, 0xa438, 0xae13, + 0xa438, 0xef69, 0xa438, 0xef30, 0xa438, 0x1b32, 0xa438, 0xc4ef, + 0xa438, 0x46e4, 0xa438, 0x8ffb, 0xa438, 0xe58f, 0xa438, 0xfce7, + 0xa438, 0x8ffd, 0xa438, 0xcc10, 0xa438, 0x11ae, 0xa438, 0xb8d1, + 0xa438, 0x00a1, 0xa438, 0x1f03, 0xa438, 0xaf40, 0xa438, 0x4fbf, + 0xa438, 0x8b8c, 0xa438, 0x026c, 0xa438, 0x4ec4, 0xa438, 0xbf8b, + 0xa438, 0x8f02, 0xa438, 0x6c6d, 0xa438, 0xef74, 0xa438, 0xe083, + 0xa438, 0x0cad, 0xa438, 0x2003, 0xa438, 0x0274, 0xa438, 0xaccc, + 0xa438, 0xef97, 0xa438, 0x1b76, 0xa438, 0xad5f, 0xa438, 0x02ae, + 0xa438, 0x04ef, 0xa438, 0x69ef, 0xa438, 0x3111, 0xa438, 0xaed1, + 0xa438, 0x0287, 0xa438, 0x80af, 0xa438, 0x2293, 0xa438, 0xf8f9, + 0xa438, 0xfafb, 0xa438, 0xef59, 0xa438, 0xe080, 0xa438, 0x13ad, + 0xa438, 0x252f, 0xa438, 0xbf88, 0xa438, 0x2802, 0xa438, 0x6c6d, + 0xa438, 0xef64, 0xa438, 0x1f44, 0xa438, 0xe18f, 0xa438, 0xb91b, + 0xa438, 0x64ad, 0xa438, 0x4f1d, 0xa438, 0xd688, 0xa438, 0x2bd7, + 0xa438, 0x882e, 0xa438, 0x0274, 0xa438, 0x73ad, 0xa438, 0x5008, + 0xa438, 0xbf88, 0xa438, 0x3102, 0xa438, 0x737c, 0xa438, 0xae03, + 0xa438, 0x0287, 0xa438, 0xd0bf, 0xa438, 0x882b, 0xa438, 0x0273, + 0xa438, 0x73e0, 0xa438, 0x824c, 0xa438, 0xf621, 0xa438, 0xe482, + 0xa438, 0x4cbf, 0xa438, 0x8834, 0xa438, 0x0273, 0xa438, 0x7cef, + 0xa438, 0x95ff, 0xa438, 0xfefd, 0xa438, 0xfc04, 0xa438, 0xf8f9, + 0xa438, 0xfafb, 0xa438, 0xef79, 0xa438, 0xbf88, 0xa438, 0x1f02, + 0xa438, 0x737c, 0xa438, 0x1f22, 0xa438, 0xac32, 0xa438, 0x31ef, + 0xa438, 0x12bf, 0xa438, 0x8822, 0xa438, 0x026c, 0xa438, 0x4ed6, + 0xa438, 0x8fba, 0xa438, 0x1f33, 0xa438, 0xac3c, 0xa438, 0x1eef, + 0xa438, 0x13bf, 0xa438, 0x8837, 0xa438, 0x026c, 0xa438, 0x4eef, + 0xa438, 0x96d8, 0xa438, 0x19d9, 0xa438, 0xbf88, 0xa438, 0x2502, + 0xa438, 0x6c4e, 0xa438, 0xbf88, 0xa438, 0x2502, 0xa438, 0x6c4e, + 0xa438, 0x1616, 0xa438, 0x13ae, 0xa438, 0xdf12, 0xa438, 0xaecc, + 0xa438, 0xbf88, 0xa438, 0x1f02, 0xa438, 0x7373, 0xa438, 0xef97, + 0xa438, 0xfffe, 0xa438, 0xfdfc, 0xa438, 0x0466, 0xa438, 0xac88, + 0xa438, 0x54ac, 0xa438, 0x88f0, 0xa438, 0xac8a, 0xa438, 0x92ac, + 0xa438, 0xbadd, 0xa438, 0xac6c, 0xa438, 0xeeac, 0xa438, 0x6cff, + 0xa438, 0xad02, 0xa438, 0x99ac, 0xa438, 0x0030, 0xa438, 0xac88, + 0xa438, 0xd4c3, 0xa438, 0x5000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x00b4, 0xa438, 0xecee, + 0xa438, 0x8298, 0xa438, 0x00af, 0xa438, 0x1412, 0xa438, 0xf8bf, + 0xa438, 0x8b5d, 0xa438, 0x026c, 0xa438, 0x6d58, 0xa438, 0x03e1, + 0xa438, 0x8fb8, 0xa438, 0x2901, 0xa438, 0xe58f, 0xa438, 0xb8a0, + 0xa438, 0x0049, 0xa438, 0xef47, 0xa438, 0xe483, 0xa438, 0x02e5, + 0xa438, 0x8303, 0xa438, 0xbfc2, 0xa438, 0x5f1a, 0xa438, 0x95f7, + 0xa438, 0x05ee, 0xa438, 0xffd2, 0xa438, 0x00d8, 0xa438, 0xf605, + 0xa438, 0x1f11, 0xa438, 0xef60, 0xa438, 0xbf8b, 0xa438, 0x3002, + 0xa438, 0x6c4e, 0xa438, 0xbf8b, 0xa438, 0x3302, 0xa438, 0x6c6d, + 0xa438, 0xf728, 0xa438, 0xbf8b, 0xa438, 0x3302, 0xa438, 0x6c4e, + 0xa438, 0xf628, 0xa438, 0xbf8b, 0xa438, 0x3302, 0xa438, 0x6c4e, + 0xa438, 0x0c64, 0xa438, 0xef46, 0xa438, 0xbf8b, 0xa438, 0x6002, + 0xa438, 0x6c4e, 0xa438, 0x0289, 0xa438, 0x9902, 0xa438, 0x3920, + 0xa438, 0xaf89, 0xa438, 0x96a0, 0xa438, 0x0149, 0xa438, 0xef47, + 0xa438, 0xe483, 0xa438, 0x04e5, 0xa438, 0x8305, 0xa438, 0xbfc2, + 0xa438, 0x5f1a, 0xa438, 0x95f7, 0xa438, 0x05ee, 0xa438, 0xffd2, + 0xa438, 0x00d8, 0xa438, 0xf605, 0xa438, 0x1f11, 0xa438, 0xef60, + 0xa438, 0xbf8b, 0xa438, 0x3002, 0xa438, 0x6c4e, 0xa438, 0xbf8b, + 0xa438, 0x3302, 0xa438, 0x6c6d, 0xa438, 0xf729, 0xa438, 0xbf8b, + 0xa438, 0x3302, 0xa438, 0x6c4e, 0xa438, 0xf629, 0xa438, 0xbf8b, + 0xa438, 0x3302, 0xa438, 0x6c4e, 0xa438, 0x0c64, 0xa438, 0xef46, + 0xa438, 0xbf8b, 0xa438, 0x6302, 0xa438, 0x6c4e, 0xa438, 0x0289, + 0xa438, 0x9902, 0xa438, 0x3920, 0xa438, 0xaf89, 0xa438, 0x96a0, + 0xa438, 0x0249, 0xa438, 0xef47, 0xa438, 0xe483, 0xa438, 0x06e5, + 0xa438, 0x8307, 0xa438, 0xbfc2, 0xa438, 0x5f1a, 0xa438, 0x95f7, + 0xa438, 0x05ee, 0xa438, 0xffd2, 0xa438, 0x00d8, 0xa438, 0xf605, + 0xa438, 0x1f11, 0xa438, 0xef60, 0xa438, 0xbf8b, 0xa438, 0x3002, + 0xa438, 0x6c4e, 0xa438, 0xbf8b, 0xa438, 0x3302, 0xa438, 0x6c6d, + 0xa438, 0xf72a, 0xa438, 0xbf8b, 0xa438, 0x3302, 0xa438, 0x6c4e, + 0xa438, 0xf62a, 0xa438, 0xbf8b, 0xa438, 0x3302, 0xa438, 0x6c4e, + 0xa438, 0x0c64, 0xa438, 0xef46, 0xa438, 0xbf8b, 0xa438, 0x6602, + 0xa438, 0x6c4e, 0xa438, 0x0289, 0xa438, 0x9902, 0xa438, 0x3920, + 0xa438, 0xaf89, 0xa438, 0x96ef, 0xa438, 0x47e4, 0xa438, 0x8308, + 0xa438, 0xe583, 0xa438, 0x09bf, 0xa438, 0xc25f, 0xa438, 0x1a95, + 0xa438, 0xf705, 0xa438, 0xeeff, 0xa438, 0xd200, 0xa438, 0xd8f6, + 0xa438, 0x051f, 0xa438, 0x11ef, 0xa438, 0x60bf, 0xa438, 0x8b30, + 0xa438, 0x026c, 0xa438, 0x4ebf, 0xa438, 0x8b33, 0xa438, 0x026c, + 0xa438, 0x6df7, 0xa438, 0x2bbf, 0xa438, 0x8b33, 0xa438, 0x026c, + 0xa438, 0x4ef6, 0xa438, 0x2bbf, 0xa438, 0x8b33, 0xa438, 0x026c, + 0xa438, 0x4e0c, 0xa438, 0x64ef, 0xa438, 0x46bf, 0xa438, 0x8b69, + 0xa438, 0x026c, 0xa438, 0x4e02, 0xa438, 0x8999, 0xa438, 0x0239, + 0xa438, 0x20af, 0xa438, 0x8996, 0xa438, 0xaf39, 0xa438, 0x1ef8, + 0xa438, 0xf9fa, 0xa438, 0xe08f, 0xa438, 0xb838, 0xa438, 0x02ad, + 0xa438, 0x2702, 0xa438, 0xae03, 0xa438, 0xaf8b, 0xa438, 0x201f, + 0xa438, 0x66ef, 0xa438, 0x65bf, 0xa438, 0xc21f, 0xa438, 0x1a96, + 0xa438, 0xf705, 0xa438, 0xeeff, 0xa438, 0xd200, 0xa438, 0xdaf6, + 0xa438, 0x05bf, 0xa438, 0xc22f, 0xa438, 0x1a96, 0xa438, 0xf705, + 0xa438, 0xeeff, 0xa438, 0xd200, 0xa438, 0xdbf6, 0xa438, 0x05ef, + 0xa438, 0x021f, 0xa438, 0x110d, 0xa438, 0x42bf, 0xa438, 0x8b3c, + 0xa438, 0x026c, 0xa438, 0x4eef, 0xa438, 0x021b, 0xa438, 0x031f, + 0xa438, 0x110d, 0xa438, 0x42bf, 0xa438, 0x8b36, 0xa438, 0x026c, + 0xa438, 0x4eef, 0xa438, 0x021a, 0xa438, 0x031f, 0xa438, 0x110d, + 0xa438, 0x42bf, 0xa438, 0x8b39, 0xa438, 0x026c, 0xa438, 0x4ebf, + 0xa438, 0xc23f, 0xa438, 0x1a96, 0xa438, 0xf705, 0xa438, 0xeeff, + 0xa438, 0xd200, 0xa438, 0xdaf6, 0xa438, 0x05bf, 0xa438, 0xc24f, + 0xa438, 0x1a96, 0xa438, 0xf705, 0xa438, 0xeeff, 0xa438, 0xd200, + 0xa438, 0xdbf6, 0xa438, 0x05ef, 0xa438, 0x021f, 0xa438, 0x110d, + 0xa438, 0x42bf, 0xa438, 0x8b45, 0xa438, 0x026c, 0xa438, 0x4eef, + 0xa438, 0x021b, 0xa438, 0x031f, 0xa438, 0x110d, 0xa438, 0x42bf, + 0xa438, 0x8b3f, 0xa438, 0x026c, 0xa438, 0x4eef, 0xa438, 0x021a, + 0xa438, 0x031f, 0xa438, 0x110d, 0xa438, 0x42bf, 0xa438, 0x8b42, + 0xa438, 0x026c, 0xa438, 0x4eef, 0xa438, 0x56d0, 0xa438, 0x201f, + 0xa438, 0x11bf, 0xa438, 0x8b4e, 0xa438, 0x026c, 0xa438, 0x4ebf, + 0xa438, 0x8b48, 0xa438, 0x026c, 0xa438, 0x4ebf, 0xa438, 0x8b4b, + 0xa438, 0x026c, 0xa438, 0x4ee1, 0xa438, 0x8578, 0xa438, 0xef03, + 0xa438, 0x480a, 0xa438, 0x2805, 0xa438, 0xef20, 0xa438, 0x1b01, + 0xa438, 0xad27, 0xa438, 0x3f1f, 0xa438, 0x44e0, 0xa438, 0x8560, + 0xa438, 0xe185, 0xa438, 0x61bf, 0xa438, 0x8b51, 0xa438, 0x026c, + 0xa438, 0x4ee0, 0xa438, 0x8566, 0xa438, 0xe185, 0xa438, 0x67bf, + 0xa438, 0x8b54, 0xa438, 0x026c, 0xa438, 0x4ee0, 0xa438, 0x856c, + 0xa438, 0xe185, 0xa438, 0x6dbf, 0xa438, 0x8b57, 0xa438, 0x026c, + 0xa438, 0x4ee0, 0xa438, 0x8572, 0xa438, 0xe185, 0xa438, 0x73bf, + 0xa438, 0x8b5a, 0xa438, 0x026c, 0xa438, 0x4ee1, 0xa438, 0x8fb8, + 0xa438, 0x5900, 0xa438, 0xf728, 0xa438, 0xe58f, 0xa438, 0xb8af, + 0xa438, 0x8b2c, 0xa438, 0xe185, 0xa438, 0x791b, 0xa438, 0x21ad, + 0xa438, 0x373e, 0xa438, 0x1f44, 0xa438, 0xe085, 0xa438, 0x62e1, + 0xa438, 0x8563, 0xa438, 0xbf8b, 0xa438, 0x5102, 0xa438, 0x6c4e, + 0xa438, 0xe085, 0xa438, 0x68e1, 0xa438, 0x8569, 0xa438, 0xbf8b, + 0xa438, 0x5402, 0xa438, 0x6c4e, 0xa438, 0xe085, 0xa438, 0x6ee1, + 0xa438, 0x856f, 0xa438, 0xbf8b, 0xa438, 0x5702, 0xa438, 0x6c4e, + 0xa438, 0xe085, 0xa438, 0x74e1, 0xa438, 0x8575, 0xa438, 0xbf8b, + 0xa438, 0x5a02, 0xa438, 0x6c4e, 0xa438, 0xe18f, 0xa438, 0xb859, + 0xa438, 0x00f7, 0xa438, 0x28e5, 0xa438, 0x8fb8, 0xa438, 0xae4a, + 0xa438, 0x1f44, 0xa438, 0xe085, 0xa438, 0x64e1, 0xa438, 0x8565, + 0xa438, 0xbf8b, 0xa438, 0x5102, 0xa438, 0x6c4e, 0xa438, 0xe085, + 0xa438, 0x6ae1, 0xa438, 0x856b, 0xa438, 0xbf8b, 0xa438, 0x5402, + 0xa438, 0x6c4e, 0xa438, 0xe085, 0xa438, 0x70e1, 0xa438, 0x8571, + 0xa438, 0xbf8b, 0xa438, 0x5702, 0xa438, 0x6c4e, 0xa438, 0xe085, + 0xa438, 0x76e1, 0xa438, 0x8577, 0xa438, 0xbf8b, 0xa438, 0x5a02, + 0xa438, 0x6c4e, 0xa438, 0xe18f, 0xa438, 0xb859, 0xa438, 0x00f7, + 0xa438, 0x28e5, 0xa438, 0x8fb8, 0xa438, 0xae0c, 0xa438, 0xe18f, + 0xa438, 0xb839, 0xa438, 0x04ac, 0xa438, 0x2f04, 0xa438, 0xee8f, + 0xa438, 0xb800, 0xa438, 0xfefd, 0xa438, 0xfc04, 0xa438, 0xf0ac, + 0xa438, 0x8efc, 0xa438, 0xac8c, 0xa438, 0xf0ac, 0xa438, 0xfaf0, + 0xa438, 0xacf8, 0xa438, 0xf0ac, 0xa438, 0xf6f0, 0xa438, 0xad00, + 0xa438, 0xf0ac, 0xa438, 0xfef0, 0xa438, 0xacfc, 0xa438, 0xf0ac, + 0xa438, 0xf4f0, 0xa438, 0xacf2, 0xa438, 0xf0ac, 0xa438, 0xf0f0, + 0xa438, 0xacb0, 0xa438, 0xf0ac, 0xa438, 0xaef0, 0xa438, 0xacac, + 0xa438, 0xf0ac, 0xa438, 0xaaf0, 0xa438, 0xacee, 0xa438, 0xf0b0, + 0xa438, 0x24f0, 0xa438, 0xb0a4, 0xa438, 0xf0b1, 0xa438, 0x24f0, + 0xa438, 0xb1a4, 0xa438, 0xee8f, 0xa438, 0xb800, 0xa438, 0xd400, + 0xa438, 0x00af, 0xa438, 0x3976, 0xa438, 0x66ac, 0xa438, 0xeabb, + 0xa438, 0xa430, 0xa438, 0x6e50, 0xa438, 0x6e53, 0xa438, 0x6e56, + 0xa438, 0x6e59, 0xa438, 0x6e5c, 0xa438, 0x6e5f, 0xa438, 0x6e62, + 0xa438, 0x6e65, 0xa438, 0xd9ac, 0xa438, 0x70f0, 0xa438, 0xac6a, + 0xa436, 0xb85e, 0xa438, 0x23b7, 0xa436, 0xb860, 0xa438, 0x74db, + 0xa436, 0xb862, 0xa438, 0x268c, 0xa436, 0xb864, 0xa438, 0x3FE5, + 0xa436, 0xb886, 0xa438, 0x2250, 0xa436, 0xb888, 0xa438, 0x140e, + 0xa436, 0xb88a, 0xa438, 0x3696, 0xa436, 0xb88c, 0xa438, 0x3973, + 0xa436, 0xb838, 0xa438, 0x00ff, 0xb820, 0x0010, 0xa436, 0x8464, + 0xa438, 0xaf84, 0xa438, 0x7caf, 0xa438, 0x8485, 0xa438, 0xaf85, + 0xa438, 0x13af, 0xa438, 0x851e, 0xa438, 0xaf85, 0xa438, 0xb9af, + 0xa438, 0x8684, 0xa438, 0xaf87, 0xa438, 0x01af, 0xa438, 0x8701, + 0xa438, 0xac38, 0xa438, 0x03af, 0xa438, 0x38bb, 0xa438, 0xaf38, + 0xa438, 0xc302, 0xa438, 0x4618, 0xa438, 0xbf85, 0xa438, 0x0a02, + 0xa438, 0x54b7, 0xa438, 0xbf85, 0xa438, 0x1002, 0xa438, 0x54c0, + 0xa438, 0xd400, 0xa438, 0x0fbf, 0xa438, 0x8507, 0xa438, 0x024f, + 0xa438, 0x48bf, 0xa438, 0x8504, 0xa438, 0x024f, 0xa438, 0x6759, + 0xa438, 0xf0a1, 0xa438, 0x3008, 0xa438, 0xbf85, 0xa438, 0x0d02, + 0xa438, 0x54c0, 0xa438, 0xae06, 0xa438, 0xbf85, 0xa438, 0x0d02, + 0xa438, 0x54b7, 0xa438, 0xbf85, 0xa438, 0x0402, 0xa438, 0x4f67, + 0xa438, 0xa183, 0xa438, 0x02ae, 0xa438, 0x15a1, 0xa438, 0x8502, + 0xa438, 0xae10, 0xa438, 0x59f0, 0xa438, 0xa180, 0xa438, 0x16bf, + 0xa438, 0x8501, 0xa438, 0x024f, 0xa438, 0x67a1, 0xa438, 0x381b, + 0xa438, 0xae0b, 0xa438, 0xe18f, 0xa438, 0xffbf, 0xa438, 0x84fe, + 0xa438, 0x024f, 0xa438, 0x48ae, 0xa438, 0x17bf, 0xa438, 0x84fe, + 0xa438, 0x0254, 0xa438, 0xb7bf, 0xa438, 0x84fb, 0xa438, 0x0254, + 0xa438, 0xb7ae, 0xa438, 0x09a1, 0xa438, 0x5006, 0xa438, 0xbf84, + 0xa438, 0xfb02, 0xa438, 0x54c0, 0xa438, 0xaf04, 0xa438, 0x4700, + 0xa438, 0xad34, 0xa438, 0xfdad, 0xa438, 0x0670, 0xa438, 0xae14, + 0xa438, 0xf0a6, 0xa438, 0x00b8, 0xa438, 0xbd32, 0xa438, 0x30bd, + 0xa438, 0x30aa, 0xa438, 0xbd2c, 0xa438, 0xccbd, 0xa438, 0x2ca1, + 0xa438, 0x0705, 0xa438, 0xec80, 0xa438, 0xaf40, 0xa438, 0xf7af, + 0xa438, 0x40f5, 0xa438, 0xd101, 0xa438, 0xbf85, 0xa438, 0xa402, + 0xa438, 0x4f48, 0xa438, 0xbf85, 0xa438, 0xa702, 0xa438, 0x54c0, + 0xa438, 0xd10f, 0xa438, 0xbf85, 0xa438, 0xaa02, 0xa438, 0x4f48, + 0xa438, 0x024d, 0xa438, 0x6abf, 0xa438, 0x85ad, 0xa438, 0x024f, + 0xa438, 0x67bf, 0xa438, 0x8ff7, 0xa438, 0xddbf, 0xa438, 0x85b0, + 0xa438, 0x024f, 0xa438, 0x67bf, 0xa438, 0x8ff8, 0xa438, 0xddbf, + 0xa438, 0x85b3, 0xa438, 0x024f, 0xa438, 0x67bf, 0xa438, 0x8ff9, + 0xa438, 0xddbf, 0xa438, 0x85b6, 0xa438, 0x024f, 0xa438, 0x67bf, + 0xa438, 0x8ffa, 0xa438, 0xddd1, 0xa438, 0x00bf, 0xa438, 0x85aa, + 0xa438, 0x024f, 0xa438, 0x4802, 0xa438, 0x4d6a, 0xa438, 0xbf85, + 0xa438, 0xad02, 0xa438, 0x4f67, 0xa438, 0xbf8f, 0xa438, 0xfbdd, + 0xa438, 0xbf85, 0xa438, 0xb002, 0xa438, 0x4f67, 0xa438, 0xbf8f, + 0xa438, 0xfcdd, 0xa438, 0xbf85, 0xa438, 0xb302, 0xa438, 0x4f67, + 0xa438, 0xbf8f, 0xa438, 0xfddd, 0xa438, 0xbf85, 0xa438, 0xb602, + 0xa438, 0x4f67, 0xa438, 0xbf8f, 0xa438, 0xfedd, 0xa438, 0xbf85, + 0xa438, 0xa702, 0xa438, 0x54b7, 0xa438, 0xbf85, 0xa438, 0xa102, + 0xa438, 0x54b7, 0xa438, 0xaf3c, 0xa438, 0x2066, 0xa438, 0xb800, + 0xa438, 0xb8bd, 0xa438, 0x30ee, 0xa438, 0xbd2c, 0xa438, 0xb8bd, + 0xa438, 0x7040, 0xa438, 0xbd86, 0xa438, 0xc8bd, 0xa438, 0x8640, + 0xa438, 0xbd88, 0xa438, 0xc8bd, 0xa438, 0x8802, 0xa438, 0x1929, + 0xa438, 0xa202, 0xa438, 0x02ae, 0xa438, 0x03a2, 0xa438, 0x032e, + 0xa438, 0xd10f, 0xa438, 0xbf85, 0xa438, 0xaa02, 0xa438, 0x4f48, + 0xa438, 0xe18f, 0xa438, 0xf7bf, 0xa438, 0x85ad, 0xa438, 0x024f, + 0xa438, 0x48e1, 0xa438, 0x8ff8, 0xa438, 0xbf85, 0xa438, 0xb002, + 0xa438, 0x4f48, 0xa438, 0xe18f, 0xa438, 0xf9bf, 0xa438, 0x85b3, + 0xa438, 0x024f, 0xa438, 0x48e1, 0xa438, 0x8ffa, 0xa438, 0xbf85, + 0xa438, 0xb602, 0xa438, 0x4f48, 0xa438, 0xae2c, 0xa438, 0xd100, + 0xa438, 0xbf85, 0xa438, 0xaa02, 0xa438, 0x4f48, 0xa438, 0xe18f, + 0xa438, 0xfbbf, 0xa438, 0x85ad, 0xa438, 0x024f, 0xa438, 0x48e1, + 0xa438, 0x8ffc, 0xa438, 0xbf85, 0xa438, 0xb002, 0xa438, 0x4f48, + 0xa438, 0xe18f, 0xa438, 0xfdbf, 0xa438, 0x85b3, 0xa438, 0x024f, + 0xa438, 0x48e1, 0xa438, 0x8ffe, 0xa438, 0xbf85, 0xa438, 0xb602, + 0xa438, 0x4f48, 0xa438, 0xbf86, 0xa438, 0x7e02, 0xa438, 0x4f67, + 0xa438, 0xa100, 0xa438, 0x02ae, 0xa438, 0x25a1, 0xa438, 0x041d, + 0xa438, 0xe18f, 0xa438, 0xf1bf, 0xa438, 0x8675, 0xa438, 0x024f, + 0xa438, 0x48e1, 0xa438, 0x8ff2, 0xa438, 0xbf86, 0xa438, 0x7802, + 0xa438, 0x4f48, 0xa438, 0xe18f, 0xa438, 0xf3bf, 0xa438, 0x867b, + 0xa438, 0x024f, 0xa438, 0x48ae, 0xa438, 0x29a1, 0xa438, 0x070b, + 0xa438, 0xae24, 0xa438, 0xbf86, 0xa438, 0x8102, 0xa438, 0x4f67, + 0xa438, 0xad28, 0xa438, 0x1be1, 0xa438, 0x8ff4, 0xa438, 0xbf86, + 0xa438, 0x7502, 0xa438, 0x4f48, 0xa438, 0xe18f, 0xa438, 0xf5bf, + 0xa438, 0x8678, 0xa438, 0x024f, 0xa438, 0x48e1, 0xa438, 0x8ff6, + 0xa438, 0xbf86, 0xa438, 0x7b02, 0xa438, 0x4f48, 0xa438, 0xaf09, + 0xa438, 0x8420, 0xa438, 0xbc32, 0xa438, 0x20bc, 0xa438, 0x3e76, + 0xa438, 0xbc08, 0xa438, 0xfda6, 0xa438, 0x1a00, 0xa438, 0xb64e, + 0xa438, 0xd101, 0xa438, 0xbf85, 0xa438, 0xa402, 0xa438, 0x4f48, + 0xa438, 0xbf85, 0xa438, 0xa702, 0xa438, 0x54c0, 0xa438, 0xd10f, + 0xa438, 0xbf85, 0xa438, 0xaa02, 0xa438, 0x4f48, 0xa438, 0x024d, + 0xa438, 0x6abf, 0xa438, 0x85ad, 0xa438, 0x024f, 0xa438, 0x67bf, + 0xa438, 0x8ff7, 0xa438, 0xddbf, 0xa438, 0x85b0, 0xa438, 0x024f, + 0xa438, 0x67bf, 0xa438, 0x8ff8, 0xa438, 0xddbf, 0xa438, 0x85b3, + 0xa438, 0x024f, 0xa438, 0x67bf, 0xa438, 0x8ff9, 0xa438, 0xddbf, + 0xa438, 0x85b6, 0xa438, 0x024f, 0xa438, 0x67bf, 0xa438, 0x8ffa, + 0xa438, 0xddd1, 0xa438, 0x00bf, 0xa438, 0x85aa, 0xa438, 0x024f, + 0xa438, 0x4802, 0xa438, 0x4d6a, 0xa438, 0xbf85, 0xa438, 0xad02, + 0xa438, 0x4f67, 0xa438, 0xbf8f, 0xa438, 0xfbdd, 0xa438, 0xbf85, + 0xa438, 0xb002, 0xa438, 0x4f67, 0xa438, 0xbf8f, 0xa438, 0xfcdd, + 0xa438, 0xbf85, 0xa438, 0xb302, 0xa438, 0x4f67, 0xa438, 0xbf8f, + 0xa438, 0xfddd, 0xa438, 0xbf85, 0xa438, 0xb602, 0xa438, 0x4f67, + 0xa438, 0xbf8f, 0xa438, 0xfedd, 0xa438, 0xbf85, 0xa438, 0xa702, + 0xa438, 0x54b7, 0xa438, 0xaf00, 0xa438, 0x8800, 0xa436, 0xb818, + 0xa438, 0x38b8, 0xa436, 0xb81a, 0xa438, 0x0444, 0xa436, 0xb81c, + 0xa438, 0x40ee, 0xa436, 0xb81e, 0xa438, 0x3C1A, 0xa436, 0xb850, + 0xa438, 0x0981, 0xa436, 0xb852, 0xa438, 0x0085, 0xa436, 0xb878, + 0xa438, 0xffff, 0xa436, 0xb884, 0xa438, 0xffff, 0xa436, 0xb832, + 0xa438, 0x003f, 0xa436, 0x0000, 0xa438, 0x0000, 0xa436, 0xB82E, + 0xa438, 0x0000, 0xa436, 0x8024, 0xa438, 0x0000, 0xb820, 0x0000, + 0xa436, 0x801E, 0xa438, 0x0021, 0xFFFF, 0xFFFF +}; + +static const u_int16_t phy_mcu_ram_code_8125b_2[] = { + 0xa436, 0x8024, 0xa438, 0x3701, 0xa436, 0xB82E, 0xa438, 0x0001, + 0xb820, 0x0090, 0xa436, 0xA016, 0xa438, 0x0000, 0xa436, 0xA012, + 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, + 0xa438, 0x1800, 0xa438, 0x801a, 0xa438, 0x1800, 0xa438, 0x803f, + 0xa438, 0x1800, 0xa438, 0x8045, 0xa438, 0x1800, 0xa438, 0x8067, + 0xa438, 0x1800, 0xa438, 0x806d, 0xa438, 0x1800, 0xa438, 0x8071, + 0xa438, 0x1800, 0xa438, 0x80b1, 0xa438, 0xd093, 0xa438, 0xd1c4, + 0xa438, 0x1000, 0xa438, 0x135c, 0xa438, 0xd704, 0xa438, 0x5fbc, + 0xa438, 0xd504, 0xa438, 0xc9f1, 0xa438, 0x1800, 0xa438, 0x0fc9, + 0xa438, 0xbb50, 0xa438, 0xd505, 0xa438, 0xa202, 0xa438, 0xd504, + 0xa438, 0x8c0f, 0xa438, 0xd500, 0xa438, 0x1000, 0xa438, 0x1519, + 0xa438, 0x1000, 0xa438, 0x135c, 0xa438, 0xd75e, 0xa438, 0x5fae, + 0xa438, 0x9b50, 0xa438, 0x1000, 0xa438, 0x135c, 0xa438, 0xd75e, + 0xa438, 0x7fae, 0xa438, 0x1000, 0xa438, 0x135c, 0xa438, 0xd707, + 0xa438, 0x40a7, 0xa438, 0xd719, 0xa438, 0x4071, 0xa438, 0x1800, + 0xa438, 0x1557, 0xa438, 0xd719, 0xa438, 0x2f70, 0xa438, 0x803b, + 0xa438, 0x2f73, 0xa438, 0x156a, 0xa438, 0x5e70, 0xa438, 0x1800, + 0xa438, 0x155d, 0xa438, 0xd505, 0xa438, 0xa202, 0xa438, 0xd500, + 0xa438, 0xffed, 0xa438, 0xd709, 0xa438, 0x4054, 0xa438, 0xa788, + 0xa438, 0xd70b, 0xa438, 0x1800, 0xa438, 0x172a, 0xa438, 0xc0c1, + 0xa438, 0xc0c0, 0xa438, 0xd05a, 0xa438, 0xd1ba, 0xa438, 0xd701, + 0xa438, 0x2529, 0xa438, 0x022a, 0xa438, 0xd0a7, 0xa438, 0xd1b9, + 0xa438, 0xa208, 0xa438, 0x1000, 0xa438, 0x080e, 0xa438, 0xd701, + 0xa438, 0x408b, 0xa438, 0x1000, 0xa438, 0x0a65, 0xa438, 0xf003, + 0xa438, 0x1000, 0xa438, 0x0a6b, 0xa438, 0xd701, 0xa438, 0x1000, + 0xa438, 0x0920, 0xa438, 0x1000, 0xa438, 0x0915, 0xa438, 0x1000, + 0xa438, 0x0909, 0xa438, 0x228f, 0xa438, 0x804e, 0xa438, 0x9801, + 0xa438, 0xd71e, 0xa438, 0x5d61, 0xa438, 0xd701, 0xa438, 0x1800, + 0xa438, 0x022a, 0xa438, 0x2005, 0xa438, 0x091a, 0xa438, 0x3bd9, + 0xa438, 0x0919, 0xa438, 0x1800, 0xa438, 0x0916, 0xa438, 0xd090, + 0xa438, 0xd1c9, 0xa438, 0x1800, 0xa438, 0x1064, 0xa438, 0xd096, + 0xa438, 0xd1a9, 0xa438, 0xd503, 0xa438, 0xa104, 0xa438, 0x0c07, + 0xa438, 0x0902, 0xa438, 0xd500, 0xa438, 0xbc10, 0xa438, 0xd501, + 0xa438, 0xce01, 0xa438, 0xa201, 0xa438, 0x8201, 0xa438, 0xce00, + 0xa438, 0xd500, 0xa438, 0xc484, 0xa438, 0xd503, 0xa438, 0xcc02, + 0xa438, 0xcd0d, 0xa438, 0xaf01, 0xa438, 0xd500, 0xa438, 0xd703, + 0xa438, 0x4371, 0xa438, 0xbd08, 0xa438, 0x1000, 0xa438, 0x135c, + 0xa438, 0xd75e, 0xa438, 0x5fb3, 0xa438, 0xd503, 0xa438, 0xd0f5, + 0xa438, 0xd1c6, 0xa438, 0x0cf0, 0xa438, 0x0e50, 0xa438, 0xd704, + 0xa438, 0x401c, 0xa438, 0xd0f5, 0xa438, 0xd1c6, 0xa438, 0x0cf0, + 0xa438, 0x0ea0, 0xa438, 0x401c, 0xa438, 0xd07b, 0xa438, 0xd1c5, + 0xa438, 0x8ef0, 0xa438, 0x401c, 0xa438, 0x9d08, 0xa438, 0x1000, + 0xa438, 0x135c, 0xa438, 0xd75e, 0xa438, 0x7fb3, 0xa438, 0x1000, + 0xa438, 0x135c, 0xa438, 0xd75e, 0xa438, 0x5fad, 0xa438, 0x1000, + 0xa438, 0x14c5, 0xa438, 0xd703, 0xa438, 0x3181, 0xa438, 0x80af, + 0xa438, 0x60ad, 0xa438, 0x1000, 0xa438, 0x135c, 0xa438, 0xd703, + 0xa438, 0x5fba, 0xa438, 0x1800, 0xa438, 0x0cc7, 0xa438, 0xa802, + 0xa438, 0xa301, 0xa438, 0xa801, 0xa438, 0xc004, 0xa438, 0xd710, + 0xa438, 0x4000, 0xa438, 0x1800, 0xa438, 0x1e79, 0xa436, 0xA026, + 0xa438, 0x1e78, 0xa436, 0xA024, 0xa438, 0x0c93, 0xa436, 0xA022, + 0xa438, 0x1062, 0xa436, 0xA020, 0xa438, 0x0915, 0xa436, 0xA006, + 0xa438, 0x020a, 0xa436, 0xA004, 0xa438, 0x1726, 0xa436, 0xA002, + 0xa438, 0x1542, 0xa436, 0xA000, 0xa438, 0x0fc7, 0xa436, 0xA008, + 0xa438, 0xff00, 0xa436, 0xA016, 0xa438, 0x0010, 0xa436, 0xA012, + 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, + 0xa438, 0x1800, 0xa438, 0x801d, 0xa438, 0x1800, 0xa438, 0x802c, + 0xa438, 0x1800, 0xa438, 0x802c, 0xa438, 0x1800, 0xa438, 0x802c, + 0xa438, 0x1800, 0xa438, 0x802c, 0xa438, 0x1800, 0xa438, 0x802c, + 0xa438, 0x1800, 0xa438, 0x802c, 0xa438, 0xd700, 0xa438, 0x6090, + 0xa438, 0x60d1, 0xa438, 0xc95c, 0xa438, 0xf007, 0xa438, 0x60b1, + 0xa438, 0xc95a, 0xa438, 0xf004, 0xa438, 0xc956, 0xa438, 0xf002, + 0xa438, 0xc94e, 0xa438, 0x1800, 0xa438, 0x00cd, 0xa438, 0xd700, + 0xa438, 0x6090, 0xa438, 0x60d1, 0xa438, 0xc95c, 0xa438, 0xf007, + 0xa438, 0x60b1, 0xa438, 0xc95a, 0xa438, 0xf004, 0xa438, 0xc956, + 0xa438, 0xf002, 0xa438, 0xc94e, 0xa438, 0x1000, 0xa438, 0x022a, + 0xa438, 0x1800, 0xa438, 0x0132, 0xa436, 0xA08E, 0xa438, 0xffff, + 0xa436, 0xA08C, 0xa438, 0xffff, 0xa436, 0xA08A, 0xa438, 0xffff, + 0xa436, 0xA088, 0xa438, 0xffff, 0xa436, 0xA086, 0xa438, 0xffff, + 0xa436, 0xA084, 0xa438, 0xffff, 0xa436, 0xA082, 0xa438, 0x012f, + 0xa436, 0xA080, 0xa438, 0x00cc, 0xa436, 0xA090, 0xa438, 0x0103, + 0xa436, 0xA016, 0xa438, 0x0020, 0xa436, 0xA012, 0xa438, 0x0000, + 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, 0xa438, 0x1800, + 0xa438, 0x8020, 0xa438, 0x1800, 0xa438, 0x802a, 0xa438, 0x1800, + 0xa438, 0x8035, 0xa438, 0x1800, 0xa438, 0x803c, 0xa438, 0x1800, + 0xa438, 0x803c, 0xa438, 0x1800, 0xa438, 0x803c, 0xa438, 0x1800, + 0xa438, 0x803c, 0xa438, 0xd107, 0xa438, 0xd042, 0xa438, 0xa404, + 0xa438, 0x1000, 0xa438, 0x09df, 0xa438, 0xd700, 0xa438, 0x5fb4, + 0xa438, 0x8280, 0xa438, 0xd700, 0xa438, 0x6065, 0xa438, 0xd125, + 0xa438, 0xf002, 0xa438, 0xd12b, 0xa438, 0xd040, 0xa438, 0x1800, + 0xa438, 0x077f, 0xa438, 0x0cf0, 0xa438, 0x0c50, 0xa438, 0xd104, + 0xa438, 0xd040, 0xa438, 0x1000, 0xa438, 0x0aa8, 0xa438, 0xd700, + 0xa438, 0x5fb4, 0xa438, 0x1800, 0xa438, 0x0a2e, 0xa438, 0xcb9b, + 0xa438, 0xd110, 0xa438, 0xd040, 0xa438, 0x1000, 0xa438, 0x0b7b, + 0xa438, 0x1000, 0xa438, 0x09df, 0xa438, 0xd700, 0xa438, 0x5fb4, + 0xa438, 0x1800, 0xa438, 0x081b, 0xa438, 0x1000, 0xa438, 0x09df, + 0xa438, 0xd704, 0xa438, 0x7fb8, 0xa438, 0xa718, 0xa438, 0x1800, + 0xa438, 0x074e, 0xa436, 0xA10E, 0xa438, 0xffff, 0xa436, 0xA10C, + 0xa438, 0xffff, 0xa436, 0xA10A, 0xa438, 0xffff, 0xa436, 0xA108, + 0xa438, 0xffff, 0xa436, 0xA106, 0xa438, 0x074d, 0xa436, 0xA104, + 0xa438, 0x0818, 0xa436, 0xA102, 0xa438, 0x0a2c, 0xa436, 0xA100, + 0xa438, 0x077e, 0xa436, 0xA110, 0xa438, 0x000f, 0xa436, 0xb87c, + 0xa438, 0x8625, 0xa436, 0xb87e, 0xa438, 0xaf86, 0xa438, 0x3daf, + 0xa438, 0x8689, 0xa438, 0xaf88, 0xa438, 0x69af, 0xa438, 0x8887, + 0xa438, 0xaf88, 0xa438, 0x9caf, 0xa438, 0x88be, 0xa438, 0xaf88, + 0xa438, 0xbeaf, 0xa438, 0x88be, 0xa438, 0xbf86, 0xa438, 0x49d7, + 0xa438, 0x0040, 0xa438, 0x0277, 0xa438, 0x7daf, 0xa438, 0x2727, + 0xa438, 0x0000, 0xa438, 0x7205, 0xa438, 0x0000, 0xa438, 0x7208, + 0xa438, 0x0000, 0xa438, 0x71f3, 0xa438, 0x0000, 0xa438, 0x71f6, + 0xa438, 0x0000, 0xa438, 0x7229, 0xa438, 0x0000, 0xa438, 0x722c, + 0xa438, 0x0000, 0xa438, 0x7217, 0xa438, 0x0000, 0xa438, 0x721a, + 0xa438, 0x0000, 0xa438, 0x721d, 0xa438, 0x0000, 0xa438, 0x7211, + 0xa438, 0x0000, 0xa438, 0x7220, 0xa438, 0x0000, 0xa438, 0x7214, + 0xa438, 0x0000, 0xa438, 0x722f, 0xa438, 0x0000, 0xa438, 0x7223, + 0xa438, 0x0000, 0xa438, 0x7232, 0xa438, 0x0000, 0xa438, 0x7226, + 0xa438, 0xf8f9, 0xa438, 0xfae0, 0xa438, 0x85b3, 0xa438, 0x3802, + 0xa438, 0xad27, 0xa438, 0x02ae, 0xa438, 0x03af, 0xa438, 0x8830, + 0xa438, 0x1f66, 0xa438, 0xef65, 0xa438, 0xbfc2, 0xa438, 0x1f1a, + 0xa438, 0x96f7, 0xa438, 0x05ee, 0xa438, 0xffd2, 0xa438, 0x00da, + 0xa438, 0xf605, 0xa438, 0xbfc2, 0xa438, 0x2f1a, 0xa438, 0x96f7, + 0xa438, 0x05ee, 0xa438, 0xffd2, 0xa438, 0x00db, 0xa438, 0xf605, + 0xa438, 0xef02, 0xa438, 0x1f11, 0xa438, 0x0d42, 0xa438, 0xbf88, + 0xa438, 0x4202, 0xa438, 0x6e7d, 0xa438, 0xef02, 0xa438, 0x1b03, + 0xa438, 0x1f11, 0xa438, 0x0d42, 0xa438, 0xbf88, 0xa438, 0x4502, + 0xa438, 0x6e7d, 0xa438, 0xef02, 0xa438, 0x1a03, 0xa438, 0x1f11, + 0xa438, 0x0d42, 0xa438, 0xbf88, 0xa438, 0x4802, 0xa438, 0x6e7d, + 0xa438, 0xbfc2, 0xa438, 0x3f1a, 0xa438, 0x96f7, 0xa438, 0x05ee, + 0xa438, 0xffd2, 0xa438, 0x00da, 0xa438, 0xf605, 0xa438, 0xbfc2, + 0xa438, 0x4f1a, 0xa438, 0x96f7, 0xa438, 0x05ee, 0xa438, 0xffd2, + 0xa438, 0x00db, 0xa438, 0xf605, 0xa438, 0xef02, 0xa438, 0x1f11, + 0xa438, 0x0d42, 0xa438, 0xbf88, 0xa438, 0x4b02, 0xa438, 0x6e7d, + 0xa438, 0xef02, 0xa438, 0x1b03, 0xa438, 0x1f11, 0xa438, 0x0d42, + 0xa438, 0xbf88, 0xa438, 0x4e02, 0xa438, 0x6e7d, 0xa438, 0xef02, + 0xa438, 0x1a03, 0xa438, 0x1f11, 0xa438, 0x0d42, 0xa438, 0xbf88, + 0xa438, 0x5102, 0xa438, 0x6e7d, 0xa438, 0xef56, 0xa438, 0xd020, + 0xa438, 0x1f11, 0xa438, 0xbf88, 0xa438, 0x5402, 0xa438, 0x6e7d, + 0xa438, 0xbf88, 0xa438, 0x5702, 0xa438, 0x6e7d, 0xa438, 0xbf88, + 0xa438, 0x5a02, 0xa438, 0x6e7d, 0xa438, 0xe185, 0xa438, 0xa0ef, + 0xa438, 0x0348, 0xa438, 0x0a28, 0xa438, 0x05ef, 0xa438, 0x201b, + 0xa438, 0x01ad, 0xa438, 0x2735, 0xa438, 0x1f44, 0xa438, 0xe085, + 0xa438, 0x88e1, 0xa438, 0x8589, 0xa438, 0xbf88, 0xa438, 0x5d02, + 0xa438, 0x6e7d, 0xa438, 0xe085, 0xa438, 0x8ee1, 0xa438, 0x858f, + 0xa438, 0xbf88, 0xa438, 0x6002, 0xa438, 0x6e7d, 0xa438, 0xe085, + 0xa438, 0x94e1, 0xa438, 0x8595, 0xa438, 0xbf88, 0xa438, 0x6302, + 0xa438, 0x6e7d, 0xa438, 0xe085, 0xa438, 0x9ae1, 0xa438, 0x859b, + 0xa438, 0xbf88, 0xa438, 0x6602, 0xa438, 0x6e7d, 0xa438, 0xaf88, + 0xa438, 0x3cbf, 0xa438, 0x883f, 0xa438, 0x026e, 0xa438, 0x9cad, + 0xa438, 0x2835, 0xa438, 0x1f44, 0xa438, 0xe08f, 0xa438, 0xf8e1, + 0xa438, 0x8ff9, 0xa438, 0xbf88, 0xa438, 0x5d02, 0xa438, 0x6e7d, + 0xa438, 0xe08f, 0xa438, 0xfae1, 0xa438, 0x8ffb, 0xa438, 0xbf88, + 0xa438, 0x6002, 0xa438, 0x6e7d, 0xa438, 0xe08f, 0xa438, 0xfce1, + 0xa438, 0x8ffd, 0xa438, 0xbf88, 0xa438, 0x6302, 0xa438, 0x6e7d, + 0xa438, 0xe08f, 0xa438, 0xfee1, 0xa438, 0x8fff, 0xa438, 0xbf88, + 0xa438, 0x6602, 0xa438, 0x6e7d, 0xa438, 0xaf88, 0xa438, 0x3ce1, + 0xa438, 0x85a1, 0xa438, 0x1b21, 0xa438, 0xad37, 0xa438, 0x341f, + 0xa438, 0x44e0, 0xa438, 0x858a, 0xa438, 0xe185, 0xa438, 0x8bbf, + 0xa438, 0x885d, 0xa438, 0x026e, 0xa438, 0x7de0, 0xa438, 0x8590, + 0xa438, 0xe185, 0xa438, 0x91bf, 0xa438, 0x8860, 0xa438, 0x026e, + 0xa438, 0x7de0, 0xa438, 0x8596, 0xa438, 0xe185, 0xa438, 0x97bf, + 0xa438, 0x8863, 0xa438, 0x026e, 0xa438, 0x7de0, 0xa438, 0x859c, + 0xa438, 0xe185, 0xa438, 0x9dbf, 0xa438, 0x8866, 0xa438, 0x026e, + 0xa438, 0x7dae, 0xa438, 0x401f, 0xa438, 0x44e0, 0xa438, 0x858c, + 0xa438, 0xe185, 0xa438, 0x8dbf, 0xa438, 0x885d, 0xa438, 0x026e, + 0xa438, 0x7de0, 0xa438, 0x8592, 0xa438, 0xe185, 0xa438, 0x93bf, + 0xa438, 0x8860, 0xa438, 0x026e, 0xa438, 0x7de0, 0xa438, 0x8598, + 0xa438, 0xe185, 0xa438, 0x99bf, 0xa438, 0x8863, 0xa438, 0x026e, + 0xa438, 0x7de0, 0xa438, 0x859e, 0xa438, 0xe185, 0xa438, 0x9fbf, + 0xa438, 0x8866, 0xa438, 0x026e, 0xa438, 0x7dae, 0xa438, 0x0ce1, + 0xa438, 0x85b3, 0xa438, 0x3904, 0xa438, 0xac2f, 0xa438, 0x04ee, + 0xa438, 0x85b3, 0xa438, 0x00af, 0xa438, 0x39d9, 0xa438, 0x22ac, + 0xa438, 0xeaf0, 0xa438, 0xacf6, 0xa438, 0xf0ac, 0xa438, 0xfaf0, + 0xa438, 0xacf8, 0xa438, 0xf0ac, 0xa438, 0xfcf0, 0xa438, 0xad00, + 0xa438, 0xf0ac, 0xa438, 0xfef0, 0xa438, 0xacf0, 0xa438, 0xf0ac, + 0xa438, 0xf4f0, 0xa438, 0xacf2, 0xa438, 0xf0ac, 0xa438, 0xb0f0, + 0xa438, 0xacae, 0xa438, 0xf0ac, 0xa438, 0xacf0, 0xa438, 0xacaa, + 0xa438, 0xa100, 0xa438, 0x0ce1, 0xa438, 0x8ff7, 0xa438, 0xbf88, + 0xa438, 0x8402, 0xa438, 0x6e7d, 0xa438, 0xaf26, 0xa438, 0xe9e1, + 0xa438, 0x8ff6, 0xa438, 0xbf88, 0xa438, 0x8402, 0xa438, 0x6e7d, + 0xa438, 0xaf26, 0xa438, 0xf520, 0xa438, 0xac86, 0xa438, 0xbf88, + 0xa438, 0x3f02, 0xa438, 0x6e9c, 0xa438, 0xad28, 0xa438, 0x03af, + 0xa438, 0x3324, 0xa438, 0xad38, 0xa438, 0x03af, 0xa438, 0x32e6, + 0xa438, 0xaf32, 0xa438, 0xfbee, 0xa438, 0x826a, 0xa438, 0x0002, + 0xa438, 0x88a6, 0xa438, 0xaf04, 0xa438, 0x78f8, 0xa438, 0xfaef, + 0xa438, 0x69e0, 0xa438, 0x8015, 0xa438, 0xad20, 0xa438, 0x06bf, + 0xa438, 0x88bb, 0xa438, 0x0275, 0xa438, 0xb1ef, 0xa438, 0x96fe, + 0xa438, 0xfc04, 0xa438, 0x00b8, 0xa438, 0x7a00, 0xa436, 0xb87c, + 0xa438, 0x8ff6, 0xa436, 0xb87e, 0xa438, 0x0705, 0xa436, 0xb87c, + 0xa438, 0x8ff8, 0xa436, 0xb87e, 0xa438, 0x19cc, 0xa436, 0xb87c, + 0xa438, 0x8ffa, 0xa436, 0xb87e, 0xa438, 0x28e3, 0xa436, 0xb87c, + 0xa438, 0x8ffc, 0xa436, 0xb87e, 0xa438, 0x1047, 0xa436, 0xb87c, + 0xa438, 0x8ffe, 0xa436, 0xb87e, 0xa438, 0x0a45, 0xa436, 0xb85e, + 0xa438, 0x271E, 0xa436, 0xb860, 0xa438, 0x3846, 0xa436, 0xb862, + 0xa438, 0x26E6, 0xa436, 0xb864, 0xa438, 0x32E3, 0xa436, 0xb886, + 0xa438, 0x0474, 0xa436, 0xb888, 0xa438, 0xffff, 0xa436, 0xb88a, + 0xa438, 0xffff, 0xa436, 0xb88c, 0xa438, 0xffff, 0xa436, 0xb838, + 0xa438, 0x001f, 0xb820, 0x0010, 0xa436, 0x846e, 0xa438, 0xaf84, + 0xa438, 0x86af, 0xa438, 0x8690, 0xa438, 0xaf86, 0xa438, 0xa4af, + 0xa438, 0x8934, 0xa438, 0xaf89, 0xa438, 0x60af, 0xa438, 0x897e, + 0xa438, 0xaf89, 0xa438, 0xa9af, 0xa438, 0x89a9, 0xa438, 0xee82, + 0xa438, 0x5f00, 0xa438, 0x0284, 0xa438, 0x90af, 0xa438, 0x0441, + 0xa438, 0xf8e0, 0xa438, 0x8ff3, 0xa438, 0xa000, 0xa438, 0x0502, + 0xa438, 0x84a4, 0xa438, 0xae06, 0xa438, 0xa001, 0xa438, 0x0302, + 0xa438, 0x84c8, 0xa438, 0xfc04, 0xa438, 0xf8f9, 0xa438, 0xef59, + 0xa438, 0xe080, 0xa438, 0x15ad, 0xa438, 0x2702, 0xa438, 0xae03, + 0xa438, 0xaf84, 0xa438, 0xc3bf, 0xa438, 0x53ca, 0xa438, 0x0252, + 0xa438, 0xc8ad, 0xa438, 0x2807, 0xa438, 0x0285, 0xa438, 0x2cee, + 0xa438, 0x8ff3, 0xa438, 0x01ef, 0xa438, 0x95fd, 0xa438, 0xfc04, + 0xa438, 0xf8f9, 0xa438, 0xfaef, 0xa438, 0x69bf, 0xa438, 0x53ca, + 0xa438, 0x0252, 0xa438, 0xc8ac, 0xa438, 0x2822, 0xa438, 0xd480, + 0xa438, 0x00bf, 0xa438, 0x8684, 0xa438, 0x0252, 0xa438, 0xa9bf, + 0xa438, 0x8687, 0xa438, 0x0252, 0xa438, 0xa9bf, 0xa438, 0x868a, + 0xa438, 0x0252, 0xa438, 0xa9bf, 0xa438, 0x868d, 0xa438, 0x0252, + 0xa438, 0xa9ee, 0xa438, 0x8ff3, 0xa438, 0x00af, 0xa438, 0x8526, + 0xa438, 0xe08f, 0xa438, 0xf4e1, 0xa438, 0x8ff5, 0xa438, 0xe28f, + 0xa438, 0xf6e3, 0xa438, 0x8ff7, 0xa438, 0x1b45, 0xa438, 0xac27, + 0xa438, 0x0eee, 0xa438, 0x8ff4, 0xa438, 0x00ee, 0xa438, 0x8ff5, + 0xa438, 0x0002, 0xa438, 0x852c, 0xa438, 0xaf85, 0xa438, 0x26e0, + 0xa438, 0x8ff4, 0xa438, 0xe18f, 0xa438, 0xf52c, 0xa438, 0x0001, + 0xa438, 0xe48f, 0xa438, 0xf4e5, 0xa438, 0x8ff5, 0xa438, 0xef96, + 0xa438, 0xfefd, 0xa438, 0xfc04, 0xa438, 0xf8f9, 0xa438, 0xef59, + 0xa438, 0xbf53, 0xa438, 0x2202, 0xa438, 0x52c8, 0xa438, 0xa18b, + 0xa438, 0x02ae, 0xa438, 0x03af, 0xa438, 0x85da, 0xa438, 0xbf57, + 0xa438, 0x7202, 0xa438, 0x52c8, 0xa438, 0xe48f, 0xa438, 0xf8e5, + 0xa438, 0x8ff9, 0xa438, 0xbf57, 0xa438, 0x7502, 0xa438, 0x52c8, + 0xa438, 0xe48f, 0xa438, 0xfae5, 0xa438, 0x8ffb, 0xa438, 0xbf57, + 0xa438, 0x7802, 0xa438, 0x52c8, 0xa438, 0xe48f, 0xa438, 0xfce5, + 0xa438, 0x8ffd, 0xa438, 0xbf57, 0xa438, 0x7b02, 0xa438, 0x52c8, + 0xa438, 0xe48f, 0xa438, 0xfee5, 0xa438, 0x8fff, 0xa438, 0xbf57, + 0xa438, 0x6c02, 0xa438, 0x52c8, 0xa438, 0xa102, 0xa438, 0x13ee, + 0xa438, 0x8ffc, 0xa438, 0x80ee, 0xa438, 0x8ffd, 0xa438, 0x00ee, + 0xa438, 0x8ffe, 0xa438, 0x80ee, 0xa438, 0x8fff, 0xa438, 0x00af, + 0xa438, 0x8599, 0xa438, 0xa101, 0xa438, 0x0cbf, 0xa438, 0x534c, + 0xa438, 0x0252, 0xa438, 0xc8a1, 0xa438, 0x0303, 0xa438, 0xaf85, + 0xa438, 0x77bf, 0xa438, 0x5322, 0xa438, 0x0252, 0xa438, 0xc8a1, + 0xa438, 0x8b02, 0xa438, 0xae03, 0xa438, 0xaf86, 0xa438, 0x64e0, + 0xa438, 0x8ff8, 0xa438, 0xe18f, 0xa438, 0xf9bf, 0xa438, 0x8684, + 0xa438, 0x0252, 0xa438, 0xa9e0, 0xa438, 0x8ffa, 0xa438, 0xe18f, + 0xa438, 0xfbbf, 0xa438, 0x8687, 0xa438, 0x0252, 0xa438, 0xa9e0, + 0xa438, 0x8ffc, 0xa438, 0xe18f, 0xa438, 0xfdbf, 0xa438, 0x868a, + 0xa438, 0x0252, 0xa438, 0xa9e0, 0xa438, 0x8ffe, 0xa438, 0xe18f, + 0xa438, 0xffbf, 0xa438, 0x868d, 0xa438, 0x0252, 0xa438, 0xa9af, + 0xa438, 0x867f, 0xa438, 0xbf53, 0xa438, 0x2202, 0xa438, 0x52c8, + 0xa438, 0xa144, 0xa438, 0x3cbf, 0xa438, 0x547b, 0xa438, 0x0252, + 0xa438, 0xc8e4, 0xa438, 0x8ff8, 0xa438, 0xe58f, 0xa438, 0xf9bf, + 0xa438, 0x547e, 0xa438, 0x0252, 0xa438, 0xc8e4, 0xa438, 0x8ffa, + 0xa438, 0xe58f, 0xa438, 0xfbbf, 0xa438, 0x5481, 0xa438, 0x0252, + 0xa438, 0xc8e4, 0xa438, 0x8ffc, 0xa438, 0xe58f, 0xa438, 0xfdbf, + 0xa438, 0x5484, 0xa438, 0x0252, 0xa438, 0xc8e4, 0xa438, 0x8ffe, + 0xa438, 0xe58f, 0xa438, 0xffbf, 0xa438, 0x5322, 0xa438, 0x0252, + 0xa438, 0xc8a1, 0xa438, 0x4448, 0xa438, 0xaf85, 0xa438, 0xa7bf, + 0xa438, 0x5322, 0xa438, 0x0252, 0xa438, 0xc8a1, 0xa438, 0x313c, + 0xa438, 0xbf54, 0xa438, 0x7b02, 0xa438, 0x52c8, 0xa438, 0xe48f, + 0xa438, 0xf8e5, 0xa438, 0x8ff9, 0xa438, 0xbf54, 0xa438, 0x7e02, + 0xa438, 0x52c8, 0xa438, 0xe48f, 0xa438, 0xfae5, 0xa438, 0x8ffb, + 0xa438, 0xbf54, 0xa438, 0x8102, 0xa438, 0x52c8, 0xa438, 0xe48f, + 0xa438, 0xfce5, 0xa438, 0x8ffd, 0xa438, 0xbf54, 0xa438, 0x8402, + 0xa438, 0x52c8, 0xa438, 0xe48f, 0xa438, 0xfee5, 0xa438, 0x8fff, + 0xa438, 0xbf53, 0xa438, 0x2202, 0xa438, 0x52c8, 0xa438, 0xa131, + 0xa438, 0x03af, 0xa438, 0x85a7, 0xa438, 0xd480, 0xa438, 0x00bf, + 0xa438, 0x8684, 0xa438, 0x0252, 0xa438, 0xa9bf, 0xa438, 0x8687, + 0xa438, 0x0252, 0xa438, 0xa9bf, 0xa438, 0x868a, 0xa438, 0x0252, + 0xa438, 0xa9bf, 0xa438, 0x868d, 0xa438, 0x0252, 0xa438, 0xa9ef, + 0xa438, 0x95fd, 0xa438, 0xfc04, 0xa438, 0xf0d1, 0xa438, 0x2af0, + 0xa438, 0xd12c, 0xa438, 0xf0d1, 0xa438, 0x44f0, 0xa438, 0xd146, + 0xa438, 0xbf86, 0xa438, 0xa102, 0xa438, 0x52c8, 0xa438, 0xbf86, + 0xa438, 0xa102, 0xa438, 0x52c8, 0xa438, 0xd101, 0xa438, 0xaf06, + 0xa438, 0xa570, 0xa438, 0xce42, 0xa438, 0xee83, 0xa438, 0xc800, + 0xa438, 0x0286, 0xa438, 0xba02, 0xa438, 0x8728, 0xa438, 0x0287, + 0xa438, 0xbe02, 0xa438, 0x87f9, 0xa438, 0x0288, 0xa438, 0xc3af, + 0xa438, 0x4771, 0xa438, 0xf8f9, 0xa438, 0xfafb, 0xa438, 0xef69, + 0xa438, 0xfae0, 0xa438, 0x8015, 0xa438, 0xad25, 0xa438, 0x45d2, + 0xa438, 0x0002, 0xa438, 0x8714, 0xa438, 0xac4f, 0xa438, 0x02ae, + 0xa438, 0x0bef, 0xa438, 0x46f6, 0xa438, 0x273c, 0xa438, 0x0400, + 0xa438, 0xab26, 0xa438, 0xae30, 0xa438, 0xe08f, 0xa438, 0xe9e1, + 0xa438, 0x8fea, 0xa438, 0x1b46, 0xa438, 0xab26, 0xa438, 0xef32, + 0xa438, 0x0c31, 0xa438, 0xbf8f, 0xa438, 0xe91a, 0xa438, 0x93d8, + 0xa438, 0x19d9, 0xa438, 0x1b46, 0xa438, 0xab0a, 0xa438, 0x19d8, + 0xa438, 0x19d9, 0xa438, 0x1b46, 0xa438, 0xaa02, 0xa438, 0xae0c, + 0xa438, 0xbf57, 0xa438, 0x1202, 0xa438, 0x58b1, 0xa438, 0xbf57, + 0xa438, 0x1202, 0xa438, 0x58a8, 0xa438, 0xfeef, 0xa438, 0x96ff, + 0xa438, 0xfefd, 0xa438, 0xfc04, 0xa438, 0xf8fb, 0xa438, 0xef79, + 0xa438, 0xa200, 0xa438, 0x08bf, 0xa438, 0x892e, 0xa438, 0x0252, + 0xa438, 0xc8ef, 0xa438, 0x64ef, 0xa438, 0x97ff, 0xa438, 0xfc04, + 0xa438, 0xf8f9, 0xa438, 0xfafb, 0xa438, 0xef69, 0xa438, 0xfae0, + 0xa438, 0x8015, 0xa438, 0xad25, 0xa438, 0x50d2, 0xa438, 0x0002, + 0xa438, 0x878d, 0xa438, 0xac4f, 0xa438, 0x02ae, 0xa438, 0x0bef, + 0xa438, 0x46f6, 0xa438, 0x273c, 0xa438, 0x1000, 0xa438, 0xab31, + 0xa438, 0xae29, 0xa438, 0xe08f, 0xa438, 0xede1, 0xa438, 0x8fee, + 0xa438, 0x1b46, 0xa438, 0xab1f, 0xa438, 0xa200, 0xa438, 0x04ef, + 0xa438, 0x32ae, 0xa438, 0x02d3, 0xa438, 0x010c, 0xa438, 0x31bf, + 0xa438, 0x8fed, 0xa438, 0x1a93, 0xa438, 0xd819, 0xa438, 0xd91b, + 0xa438, 0x46ab, 0xa438, 0x0e19, 0xa438, 0xd819, 0xa438, 0xd91b, + 0xa438, 0x46aa, 0xa438, 0x0612, 0xa438, 0xa205, 0xa438, 0xc0ae, + 0xa438, 0x0cbf, 0xa438, 0x5712, 0xa438, 0x0258, 0xa438, 0xb1bf, + 0xa438, 0x5712, 0xa438, 0x0258, 0xa438, 0xa8fe, 0xa438, 0xef96, + 0xa438, 0xfffe, 0xa438, 0xfdfc, 0xa438, 0x04f8, 0xa438, 0xfbef, + 0xa438, 0x79a2, 0xa438, 0x0005, 0xa438, 0xbf89, 0xa438, 0x1fae, + 0xa438, 0x1ba2, 0xa438, 0x0105, 0xa438, 0xbf89, 0xa438, 0x22ae, + 0xa438, 0x13a2, 0xa438, 0x0205, 0xa438, 0xbf89, 0xa438, 0x25ae, + 0xa438, 0x0ba2, 0xa438, 0x0305, 0xa438, 0xbf89, 0xa438, 0x28ae, + 0xa438, 0x03bf, 0xa438, 0x892b, 0xa438, 0x0252, 0xa438, 0xc8ef, + 0xa438, 0x64ef, 0xa438, 0x97ff, 0xa438, 0xfc04, 0xa438, 0xf8f9, + 0xa438, 0xfaef, 0xa438, 0x69fa, 0xa438, 0xe080, 0xa438, 0x15ad, + 0xa438, 0x2628, 0xa438, 0xe081, 0xa438, 0xabe1, 0xa438, 0x81ac, + 0xa438, 0xef64, 0xa438, 0xbf57, 0xa438, 0x1802, 0xa438, 0x52c8, + 0xa438, 0x1b46, 0xa438, 0xaa0a, 0xa438, 0xbf57, 0xa438, 0x1b02, + 0xa438, 0x52c8, 0xa438, 0x1b46, 0xa438, 0xab0c, 0xa438, 0xbf57, + 0xa438, 0x1502, 0xa438, 0x58b1, 0xa438, 0xbf57, 0xa438, 0x1502, + 0xa438, 0x58a8, 0xa438, 0xfeef, 0xa438, 0x96fe, 0xa438, 0xfdfc, + 0xa438, 0x04f8, 0xa438, 0xf9ef, 0xa438, 0x59f9, 0xa438, 0xe080, + 0xa438, 0x15ad, 0xa438, 0x2622, 0xa438, 0xbf53, 0xa438, 0x2202, + 0xa438, 0x52c8, 0xa438, 0x3972, 0xa438, 0x9e10, 0xa438, 0xe083, + 0xa438, 0xc9ac, 0xa438, 0x2605, 0xa438, 0x0288, 0xa438, 0x2cae, + 0xa438, 0x0d02, 0xa438, 0x8870, 0xa438, 0xae08, 0xa438, 0xe283, + 0xa438, 0xc9f6, 0xa438, 0x36e6, 0xa438, 0x83c9, 0xa438, 0xfdef, + 0xa438, 0x95fd, 0xa438, 0xfc04, 0xa438, 0xf8f9, 0xa438, 0xfafb, + 0xa438, 0xef79, 0xa438, 0xfbbf, 0xa438, 0x5718, 0xa438, 0x0252, + 0xa438, 0xc8ef, 0xa438, 0x64e2, 0xa438, 0x8fe5, 0xa438, 0xe38f, + 0xa438, 0xe61b, 0xa438, 0x659e, 0xa438, 0x10e4, 0xa438, 0x8fe5, + 0xa438, 0xe58f, 0xa438, 0xe6e2, 0xa438, 0x83c9, 0xa438, 0xf636, + 0xa438, 0xe683, 0xa438, 0xc9ae, 0xa438, 0x13e2, 0xa438, 0x83c9, + 0xa438, 0xf736, 0xa438, 0xe683, 0xa438, 0xc902, 0xa438, 0x5820, + 0xa438, 0xef57, 0xa438, 0xe68f, 0xa438, 0xe7e7, 0xa438, 0x8fe8, + 0xa438, 0xffef, 0xa438, 0x97ff, 0xa438, 0xfefd, 0xa438, 0xfc04, + 0xa438, 0xf8f9, 0xa438, 0xfafb, 0xa438, 0xef79, 0xa438, 0xfbe2, + 0xa438, 0x8fe7, 0xa438, 0xe38f, 0xa438, 0xe8ef, 0xa438, 0x65e2, + 0xa438, 0x81b8, 0xa438, 0xe381, 0xa438, 0xb9ef, 0xa438, 0x7502, + 0xa438, 0x583b, 0xa438, 0xac50, 0xa438, 0x1abf, 0xa438, 0x5718, + 0xa438, 0x0252, 0xa438, 0xc8ef, 0xa438, 0x64e2, 0xa438, 0x8fe5, + 0xa438, 0xe38f, 0xa438, 0xe61b, 0xa438, 0x659e, 0xa438, 0x1ce4, + 0xa438, 0x8fe5, 0xa438, 0xe58f, 0xa438, 0xe6ae, 0xa438, 0x0cbf, + 0xa438, 0x5715, 0xa438, 0x0258, 0xa438, 0xb1bf, 0xa438, 0x5715, + 0xa438, 0x0258, 0xa438, 0xa8e2, 0xa438, 0x83c9, 0xa438, 0xf636, + 0xa438, 0xe683, 0xa438, 0xc9ff, 0xa438, 0xef97, 0xa438, 0xfffe, + 0xa438, 0xfdfc, 0xa438, 0x04f8, 0xa438, 0xf9fa, 0xa438, 0xef69, + 0xa438, 0xe080, 0xa438, 0x15ad, 0xa438, 0x264b, 0xa438, 0xbf53, + 0xa438, 0xca02, 0xa438, 0x52c8, 0xa438, 0xad28, 0xa438, 0x42bf, + 0xa438, 0x8931, 0xa438, 0x0252, 0xa438, 0xc8ef, 0xa438, 0x54bf, + 0xa438, 0x576c, 0xa438, 0x0252, 0xa438, 0xc8a1, 0xa438, 0x001b, + 0xa438, 0xbf53, 0xa438, 0x4c02, 0xa438, 0x52c8, 0xa438, 0xac29, + 0xa438, 0x0dac, 0xa438, 0x2805, 0xa438, 0xa302, 0xa438, 0x16ae, + 0xa438, 0x20a3, 0xa438, 0x0311, 0xa438, 0xae1b, 0xa438, 0xa304, + 0xa438, 0x0cae, 0xa438, 0x16a3, 0xa438, 0x0802, 0xa438, 0xae11, + 0xa438, 0xa309, 0xa438, 0x02ae, 0xa438, 0x0cbf, 0xa438, 0x5715, + 0xa438, 0x0258, 0xa438, 0xb1bf, 0xa438, 0x5715, 0xa438, 0x0258, + 0xa438, 0xa8ef, 0xa438, 0x96fe, 0xa438, 0xfdfc, 0xa438, 0x04f0, + 0xa438, 0xa300, 0xa438, 0xf0a3, 0xa438, 0x02f0, 0xa438, 0xa304, + 0xa438, 0xf0a3, 0xa438, 0x06f0, 0xa438, 0xa308, 0xa438, 0xf0a2, + 0xa438, 0x8074, 0xa438, 0xa600, 0xa438, 0xac4f, 0xa438, 0x02ae, + 0xa438, 0x0bef, 0xa438, 0x46f6, 0xa438, 0x273c, 0xa438, 0x1000, + 0xa438, 0xab1b, 0xa438, 0xae16, 0xa438, 0xe081, 0xa438, 0xabe1, + 0xa438, 0x81ac, 0xa438, 0x1b46, 0xa438, 0xab0c, 0xa438, 0xac32, + 0xa438, 0x04ef, 0xa438, 0x32ae, 0xa438, 0x02d3, 0xa438, 0x04af, + 0xa438, 0x486c, 0xa438, 0xaf48, 0xa438, 0x82af, 0xa438, 0x4888, + 0xa438, 0xe081, 0xa438, 0x9be1, 0xa438, 0x819c, 0xa438, 0xe28f, + 0xa438, 0xe3ad, 0xa438, 0x3009, 0xa438, 0x1f55, 0xa438, 0xe38f, + 0xa438, 0xe20c, 0xa438, 0x581a, 0xa438, 0x45e4, 0xa438, 0x83a6, + 0xa438, 0xe583, 0xa438, 0xa7af, 0xa438, 0x2a75, 0xa438, 0xe08f, + 0xa438, 0xe3ad, 0xa438, 0x201c, 0xa438, 0x1f44, 0xa438, 0xe18f, + 0xa438, 0xe10c, 0xa438, 0x44ef, 0xa438, 0x64e0, 0xa438, 0x8232, + 0xa438, 0xe182, 0xa438, 0x331b, 0xa438, 0x649f, 0xa438, 0x091f, + 0xa438, 0x44e1, 0xa438, 0x8fe2, 0xa438, 0x0c48, 0xa438, 0x1b54, + 0xa438, 0xe683, 0xa438, 0xa6e7, 0xa438, 0x83a7, 0xa438, 0xaf2b, + 0xa438, 0xd900, 0xa436, 0xb818, 0xa438, 0x043d, 0xa436, 0xb81a, + 0xa438, 0x06a3, 0xa436, 0xb81c, 0xa438, 0x476d, 0xa436, 0xb81e, + 0xa438, 0x4852, 0xa436, 0xb850, 0xa438, 0x2A69, 0xa436, 0xb852, + 0xa438, 0x2BD3, 0xa436, 0xb878, 0xa438, 0xffff, 0xa436, 0xb884, + 0xa438, 0xffff, 0xa436, 0xb832, 0xa438, 0x003f, 0xb844, 0xffff, + 0xa436, 0x8fe9, 0xa438, 0x0000, 0xa436, 0x8feb, 0xa438, 0x02fe, + 0xa436, 0x8fed, 0xa438, 0x0019, 0xa436, 0x8fef, 0xa438, 0x0bdb, + 0xa436, 0x8ff1, 0xa438, 0x0ca4, 0xa436, 0x0000, 0xa438, 0x0000, + 0xa436, 0xB82E, 0xa438, 0x0000, 0xa436, 0x8024, 0xa438, 0x0000, + 0xa436, 0x801E, 0xa438, 0x0024, 0xb820, 0x0000, 0xFFFF, 0xFFFF +}; + +static const u_int16_t phy_mcu_ram_code_8125d_1_1[] = { + 0xa436, 0x8023, 0xa438, 0x3800, 0xa436, 0xB82E, 0xa438, 0x0001, + 0xb820, 0x0090, 0xa436, 0xA016, 0xa438, 0x0000, 0xa436, 0xA012, + 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, + 0xa438, 0x1800, 0xa438, 0x8018, 0xa438, 0x1800, 0xa438, 0x8021, + 0xa438, 0x1800, 0xa438, 0x8029, 0xa438, 0x1800, 0xa438, 0x8031, + 0xa438, 0x1800, 0xa438, 0x8035, 0xa438, 0x1800, 0xa438, 0x8035, + 0xa438, 0x1800, 0xa438, 0x8035, 0xa438, 0xd711, 0xa438, 0x6081, + 0xa438, 0x8904, 0xa438, 0x1800, 0xa438, 0x2021, 0xa438, 0xa904, + 0xa438, 0x1800, 0xa438, 0x2021, 0xa438, 0xd75f, 0xa438, 0x4083, + 0xa438, 0xd503, 0xa438, 0xa908, 0xa438, 0x87f0, 0xa438, 0x1000, + 0xa438, 0x17e0, 0xa438, 0x1800, 0xa438, 0x13c3, 0xa438, 0xd707, + 0xa438, 0x2005, 0xa438, 0x8027, 0xa438, 0xd75e, 0xa438, 0x1800, + 0xa438, 0x1434, 0xa438, 0x1800, 0xa438, 0x14a5, 0xa438, 0xc504, + 0xa438, 0xce20, 0xa438, 0xcf01, 0xa438, 0xd70a, 0xa438, 0x4005, + 0xa438, 0xcf02, 0xa438, 0x1800, 0xa438, 0x1c50, 0xa438, 0xa980, + 0xa438, 0xd500, 0xa438, 0x1800, 0xa438, 0x14f3, 0xa436, 0xA026, + 0xa438, 0xffff, 0xa436, 0xA024, 0xa438, 0xffff, 0xa436, 0xA022, + 0xa438, 0xffff, 0xa436, 0xA020, 0xa438, 0x14f2, 0xa436, 0xA006, + 0xa438, 0x1c4f, 0xa436, 0xA004, 0xa438, 0x1433, 0xa436, 0xA002, + 0xa438, 0x13c1, 0xa436, 0xA000, 0xa438, 0x2020, 0xa436, 0xA008, + 0xa438, 0x1f00, 0xa436, 0xA016, 0xa438, 0x0000, 0xa436, 0xA012, + 0xa438, 0x07f8, 0xa436, 0xA014, 0xa438, 0xd04d, 0xa438, 0x8904, + 0xa438, 0x813C, 0xa438, 0xA13D, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa436, 0xA152, 0xa438, 0x1384, + 0xa436, 0xA154, 0xa438, 0x1fa8, 0xa436, 0xA156, 0xa438, 0x218B, + 0xa436, 0xA158, 0xa438, 0x21B8, 0xa436, 0xA15A, 0xa438, 0x3fff, + 0xa436, 0xA15C, 0xa438, 0x3fff, 0xa436, 0xA15E, 0xa438, 0x3fff, + 0xa436, 0xA160, 0xa438, 0x3fff, 0xa436, 0xA150, 0xa438, 0x000f, + 0xa436, 0xA016, 0xa438, 0x0020, 0xa436, 0xA012, 0xa438, 0x1ff8, + 0xa436, 0xA014, 0xa438, 0x001c, 0xa438, 0xce15, 0xa438, 0xd105, + 0xa438, 0xa410, 0xa438, 0x8320, 0xa438, 0xFFD7, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa436, 0xA164, 0xa438, 0x0260, 0xa436, 0xA166, + 0xa438, 0x0add, 0xa436, 0xA168, 0xa438, 0x05CC, 0xa436, 0xA16A, + 0xa438, 0x05C5, 0xa436, 0xA16C, 0xa438, 0x0429, 0xa436, 0xA16E, + 0xa438, 0x07B6, 0xa436, 0xA170, 0xa438, 0x0259, 0xa436, 0xA172, + 0xa438, 0x3fff, 0xa436, 0xA162, 0xa438, 0x003f, 0xa436, 0xA016, + 0xa438, 0x0020, 0xa436, 0xA012, 0xa438, 0x0000, 0xa436, 0xA014, + 0xa438, 0x1800, 0xa438, 0x8010, 0xa438, 0x1800, 0xa438, 0x8023, + 0xa438, 0x1800, 0xa438, 0x80e6, 0xa438, 0x1800, 0xa438, 0x80f0, + 0xa438, 0x1800, 0xa438, 0x80f8, 0xa438, 0x1800, 0xa438, 0x816c, + 0xa438, 0x1800, 0xa438, 0x817d, 0xa438, 0x1800, 0xa438, 0x818b, + 0xa438, 0xa801, 0xa438, 0x9308, 0xa438, 0xb201, 0xa438, 0xb301, + 0xa438, 0xd701, 0xa438, 0x4000, 0xa438, 0xd2ff, 0xa438, 0xb302, + 0xa438, 0xd200, 0xa438, 0xb201, 0xa438, 0xb309, 0xa438, 0xd701, + 0xa438, 0x4000, 0xa438, 0xd2ff, 0xa438, 0xb302, 0xa438, 0xd200, + 0xa438, 0xa800, 0xa438, 0x1800, 0xa438, 0x0031, 0xa438, 0xd700, + 0xa438, 0x4543, 0xa438, 0xd71f, 0xa438, 0x40fe, 0xa438, 0xd1b7, + 0xa438, 0xd049, 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0xd700, + 0xa438, 0x5fbb, 0xa438, 0xa220, 0xa438, 0x8501, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0x0c70, 0xa438, 0x0b00, 0xa438, 0x0c07, + 0xa438, 0x0604, 0xa438, 0x9503, 0xa438, 0xa510, 0xa438, 0xce49, + 0xa438, 0x1000, 0xa438, 0x10be, 0xa438, 0x8520, 0xa438, 0xa520, + 0xa438, 0xa501, 0xa438, 0xd105, 0xa438, 0xd047, 0xa438, 0x1000, + 0xa438, 0x109e, 0xa438, 0xd707, 0xa438, 0x6087, 0xa438, 0xd700, + 0xa438, 0x5f7b, 0xa438, 0xffe9, 0xa438, 0x1000, 0xa438, 0x109e, + 0xa438, 0x8501, 0xa438, 0xd707, 0xa438, 0x5e08, 0xa438, 0x8530, + 0xa438, 0xba20, 0xa438, 0xf00c, 0xa438, 0xd700, 0xa438, 0x4098, + 0xa438, 0xd1ef, 0xa438, 0xd047, 0xa438, 0xf003, 0xa438, 0xd1db, + 0xa438, 0xd040, 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0xd700, + 0xa438, 0x5fbb, 0xa438, 0x8980, 0xa438, 0xd704, 0xa438, 0x40a3, + 0xa438, 0xd702, 0xa438, 0x4060, 0xa438, 0x8410, 0xa438, 0xf002, + 0xa438, 0xa410, 0xa438, 0xce02, 0xa438, 0x1000, 0xa438, 0x10be, + 0xa438, 0xcd81, 0xa438, 0xd412, 0xa438, 0x1000, 0xa438, 0x1069, + 0xa438, 0xcd82, 0xa438, 0xd40e, 0xa438, 0x1000, 0xa438, 0x1069, + 0xa438, 0xcd83, 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0xd71f, + 0xa438, 0x5fb4, 0xa438, 0xa00a, 0xa438, 0xa340, 0xa438, 0x0c06, + 0xa438, 0x0102, 0xa438, 0xa240, 0xa438, 0xa290, 0xa438, 0xa324, + 0xa438, 0xab02, 0xa438, 0xd13e, 0xa438, 0xd05a, 0xa438, 0xd13e, + 0xa438, 0xd06b, 0xa438, 0xcd84, 0xa438, 0x1000, 0xa438, 0x109e, + 0xa438, 0xd706, 0xa438, 0x6079, 0xa438, 0xd700, 0xa438, 0x5f5c, + 0xa438, 0xcd8a, 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0xd706, + 0xa438, 0x6079, 0xa438, 0xd700, 0xa438, 0x5f5d, 0xa438, 0xcd8b, + 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0xcd8c, 0xa438, 0xd700, + 0xa438, 0x6050, 0xa438, 0xab04, 0xa438, 0xd700, 0xa438, 0x4083, + 0xa438, 0xd160, 0xa438, 0xd04b, 0xa438, 0xf003, 0xa438, 0xd193, + 0xa438, 0xd047, 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0xd700, + 0xa438, 0x5fbb, 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0x8410, + 0xa438, 0xd71f, 0xa438, 0x5f94, 0xa438, 0xb920, 0xa438, 0x1000, + 0xa438, 0x109e, 0xa438, 0xd71f, 0xa438, 0x7fb4, 0xa438, 0x9920, + 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0xd71f, 0xa438, 0x6105, + 0xa438, 0x6054, 0xa438, 0xfffb, 0xa438, 0x1000, 0xa438, 0x109e, + 0xa438, 0xd706, 0xa438, 0x5fb9, 0xa438, 0xfff0, 0xa438, 0xa410, + 0xa438, 0xb820, 0xa438, 0xcd85, 0xa438, 0x1000, 0xa438, 0x109e, + 0xa438, 0xd71f, 0xa438, 0x7fa5, 0xa438, 0x9820, 0xa438, 0xbb20, + 0xa438, 0xd105, 0xa438, 0xd042, 0xa438, 0x1000, 0xa438, 0x109e, + 0xa438, 0xd706, 0xa438, 0x5fbb, 0xa438, 0x5f85, 0xa438, 0xd700, + 0xa438, 0x5f5b, 0xa438, 0xd700, 0xa438, 0x6090, 0xa438, 0xd700, + 0xa438, 0x4043, 0xa438, 0xaa20, 0xa438, 0xcd86, 0xa438, 0xd700, + 0xa438, 0x6083, 0xa438, 0xd1c7, 0xa438, 0xd045, 0xa438, 0xf003, + 0xa438, 0xd17a, 0xa438, 0xd04b, 0xa438, 0x1000, 0xa438, 0x109e, + 0xa438, 0xd700, 0xa438, 0x5fbb, 0xa438, 0x0c18, 0xa438, 0x0108, + 0xa438, 0x0c3f, 0xa438, 0x0609, 0xa438, 0x0cfb, 0xa438, 0x0729, + 0xa438, 0xa308, 0xa438, 0x8320, 0xa438, 0xd105, 0xa438, 0xd042, + 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0xd700, 0xa438, 0x5fbb, + 0xa438, 0x1800, 0xa438, 0x08f7, 0xa438, 0x1000, 0xa438, 0x109e, + 0xa438, 0x1000, 0xa438, 0x10a3, 0xa438, 0xd700, 0xa438, 0x607b, + 0xa438, 0xd700, 0xa438, 0x5f2b, 0xa438, 0x1800, 0xa438, 0x0a81, + 0xa438, 0xd700, 0xa438, 0x40bd, 0xa438, 0xd707, 0xa438, 0x4065, + 0xa438, 0x1800, 0xa438, 0x1121, 0xa438, 0x1800, 0xa438, 0x1124, + 0xa438, 0xd705, 0xa438, 0x627d, 0xa438, 0xd704, 0xa438, 0x6192, + 0xa438, 0xa00a, 0xa438, 0xd704, 0xa438, 0x41c7, 0xa438, 0xd700, + 0xa438, 0x3691, 0xa438, 0x810c, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa570, 0xa438, 0x9503, 0xa438, 0xf006, 0xa438, 0x800a, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8570, 0xa438, 0x9503, + 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0x1000, 0xa438, 0x1108, + 0xa438, 0xcd64, 0xa438, 0xd704, 0xa438, 0x3398, 0xa438, 0x8166, + 0xa438, 0xd71f, 0xa438, 0x620e, 0xa438, 0xd704, 0xa438, 0x6096, + 0xa438, 0xd705, 0xa438, 0x6051, 0xa438, 0xf004, 0xa438, 0xd705, + 0xa438, 0x605d, 0xa438, 0xf008, 0xa438, 0xd706, 0xa438, 0x609d, + 0xa438, 0xd705, 0xa438, 0x405f, 0xa438, 0xf003, 0xa438, 0xd700, + 0xa438, 0x5a9b, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xc7aa, + 0xa438, 0x9503, 0xa438, 0xd71f, 0xa438, 0x674e, 0xa438, 0xd704, + 0xa438, 0x6096, 0xa438, 0xd705, 0xa438, 0x6051, 0xa438, 0xf005, + 0xa438, 0xd705, 0xa438, 0x607d, 0xa438, 0x1800, 0xa438, 0x0cc7, + 0xa438, 0xd706, 0xa438, 0x60bd, 0xa438, 0xd705, 0xa438, 0x407f, + 0xa438, 0x1800, 0xa438, 0x0e42, 0xa438, 0xce04, 0xa438, 0x1000, + 0xa438, 0x10be, 0xa438, 0xd702, 0xa438, 0x40a4, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0x8e20, 0xa438, 0x9503, 0xa438, 0xd702, + 0xa438, 0x40a5, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8e40, + 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x11a4, 0xa438, 0x1000, + 0xa438, 0x109e, 0xa438, 0x1000, 0xa438, 0x1108, 0xa438, 0xcd61, + 0xa438, 0xd704, 0xa438, 0x3398, 0xa438, 0x8166, 0xa438, 0xd704, + 0xa438, 0x6096, 0xa438, 0xd705, 0xa438, 0x6051, 0xa438, 0xf005, + 0xa438, 0xd705, 0xa438, 0x607d, 0xa438, 0x1800, 0xa438, 0x0cc7, + 0xa438, 0xd71f, 0xa438, 0x60ee, 0xa438, 0xd706, 0xa438, 0x7bdd, + 0xa438, 0xd705, 0xa438, 0x5b9f, 0xa438, 0x1800, 0xa438, 0x0e42, + 0xa438, 0x1800, 0xa438, 0x0b5f, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xae40, 0xa438, 0x9503, 0xa438, 0x1800, 0xa438, 0x0c47, + 0xa438, 0x607c, 0xa438, 0x1800, 0xa438, 0x027a, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0xae01, 0xa438, 0x9503, 0xa438, 0x1000, + 0xa438, 0x109e, 0xa438, 0xd702, 0xa438, 0x5fa3, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0x8e01, 0xa438, 0x9503, 0xa438, 0x1800, + 0xa438, 0x027d, 0xa438, 0x1000, 0xa438, 0x10be, 0xa438, 0xd702, + 0xa438, 0x40a5, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8e40, + 0xa438, 0x9503, 0xa438, 0xd73e, 0xa438, 0x6065, 0xa438, 0x1800, + 0xa438, 0x0cea, 0xa438, 0x1800, 0xa438, 0x0cf4, 0xa438, 0xa290, + 0xa438, 0xa304, 0xa438, 0xab02, 0xa438, 0xd700, 0xa438, 0x6050, + 0xa438, 0xab04, 0xa438, 0x0c38, 0xa438, 0x0608, 0xa438, 0xaa0b, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8d01, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0xae40, 0xa438, 0x9503, 0xa438, 0xd702, + 0xa438, 0x40a4, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8e20, + 0xa438, 0x9503, 0xa438, 0xd700, 0xa438, 0x6078, 0xa438, 0xd700, + 0xa438, 0x609a, 0xa438, 0xd109, 0xa438, 0xd074, 0xa438, 0xf003, + 0xa438, 0xd109, 0xa438, 0xd075, 0xa438, 0xd704, 0xa438, 0x6192, + 0xa438, 0xa00a, 0xa438, 0xd704, 0xa438, 0x41c7, 0xa438, 0xd700, + 0xa438, 0x3691, 0xa438, 0x81bc, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa570, 0xa438, 0x9503, 0xa438, 0xf006, 0xa438, 0x800a, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8570, 0xa438, 0x9503, + 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0xd704, 0xa438, 0x60f3, + 0xa438, 0xd71f, 0xa438, 0x60ee, 0xa438, 0xd700, 0xa438, 0x5cfe, + 0xa438, 0x1800, 0xa438, 0x0deb, 0xa438, 0x1800, 0xa438, 0x0c47, + 0xa438, 0x1800, 0xa438, 0x0df8, 0xa436, 0xA10E, 0xa438, 0x0dc5, + 0xa436, 0xA10C, 0xa438, 0x0ce8, 0xa436, 0xA10A, 0xa438, 0x0279, + 0xa436, 0xA108, 0xa438, 0x0b19, 0xa436, 0xA106, 0xa438, 0x111f, + 0xa436, 0xA104, 0xa438, 0x0a7b, 0xa436, 0xA102, 0xa438, 0x0ba3, + 0xa436, 0xA100, 0xa438, 0x0022, 0xa436, 0xA110, 0xa438, 0x00ff, + 0xa436, 0xb87c, 0xa438, 0x859b, 0xa436, 0xb87e, 0xa438, 0xaf85, + 0xa438, 0xb3af, 0xa438, 0x863b, 0xa438, 0xaf86, 0xa438, 0x4caf, + 0xa438, 0x8688, 0xa438, 0xaf86, 0xa438, 0xceaf, 0xa438, 0x8744, + 0xa438, 0xaf87, 0xa438, 0x68af, 0xa438, 0x8781, 0xa438, 0xbf5e, + 0xa438, 0x7202, 0xa438, 0x5f7e, 0xa438, 0xac28, 0xa438, 0x68e1, + 0xa438, 0x84e6, 0xa438, 0xad28, 0xa438, 0x09bf, 0xa438, 0x5e75, + 0xa438, 0x025f, 0xa438, 0x7eac, 0xa438, 0x2d59, 0xa438, 0xe18f, + 0xa438, 0xebad, 0xa438, 0x2809, 0xa438, 0xbf5e, 0xa438, 0x7502, + 0xa438, 0x5f7e, 0xa438, 0xac2e, 0xa438, 0x50e1, 0xa438, 0x84e6, + 0xa438, 0xac28, 0xa438, 0x08bf, 0xa438, 0x873e, 0xa438, 0x025f, + 0xa438, 0x3cae, 0xa438, 0x06bf, 0xa438, 0x873e, 0xa438, 0x025f, + 0xa438, 0x33bf, 0xa438, 0x8741, 0xa438, 0x025f, 0xa438, 0x33ee, + 0xa438, 0x8fea, 0xa438, 0x02e1, 0xa438, 0x84e4, 0xa438, 0xad28, + 0xa438, 0x14e1, 0xa438, 0x8fe8, 0xa438, 0xad28, 0xa438, 0x17e1, + 0xa438, 0x84e5, 0xa438, 0x11e5, 0xa438, 0x84e5, 0xa438, 0xa10c, + 0xa438, 0x04ee, 0xa438, 0x84e5, 0xa438, 0x0002, 0xa438, 0x4977, + 0xa438, 0xee84, 0xa438, 0xdc03, 0xa438, 0xae1d, 0xa438, 0xe18f, + 0xa438, 0xe811, 0xa438, 0xe58f, 0xa438, 0xe8ae, 0xa438, 0x14bf, + 0xa438, 0x873e, 0xa438, 0x025f, 0xa438, 0x3cbf, 0xa438, 0x8741, + 0xa438, 0x025f, 0xa438, 0x3cee, 0xa438, 0x8fea, 0xa438, 0x01ee, + 0xa438, 0x84e4, 0xa438, 0x00af, 0xa438, 0x50c1, 0xa438, 0x1f00, + 0xa438, 0xbf5a, 0xa438, 0x6102, 0xa438, 0x5f5f, 0xa438, 0xbf5a, + 0xa438, 0x5e02, 0xa438, 0x5f3c, 0xa438, 0xaf45, 0xa438, 0x7be0, + 0xa438, 0x8012, 0xa438, 0xad23, 0xa438, 0x141f, 0xa438, 0x001f, + 0xa438, 0x22d1, 0xa438, 0x00bf, 0xa438, 0x3fcf, 0xa438, 0x0261, + 0xa438, 0x3412, 0xa438, 0xa204, 0xa438, 0xf6ee, 0xa438, 0x8317, + 0xa438, 0x00e0, 0xa438, 0x8012, 0xa438, 0xad24, 0xa438, 0x141f, + 0xa438, 0x001f, 0xa438, 0x22d1, 0xa438, 0x00bf, 0xa438, 0x3fd7, + 0xa438, 0x0261, 0xa438, 0x3412, 0xa438, 0xa204, 0xa438, 0xf6ee, + 0xa438, 0x8317, 0xa438, 0x00ef, 0xa438, 0x96fe, 0xa438, 0xfdfc, + 0xa438, 0xaf42, 0xa438, 0x9802, 0xa438, 0x56ec, 0xa438, 0xf70b, + 0xa438, 0xac13, 0xa438, 0x0fbf, 0xa438, 0x5e75, 0xa438, 0x025f, + 0xa438, 0x7eac, 0xa438, 0x280c, 0xa438, 0xe2ff, 0xa438, 0xcfad, + 0xa438, 0x32ee, 0xa438, 0x0257, 0xa438, 0x05af, 0xa438, 0x00a4, + 0xa438, 0x0286, 0xa438, 0xaaae, 0xa438, 0xeff8, 0xa438, 0xf9ef, + 0xa438, 0x5902, 0xa438, 0x1fe1, 0xa438, 0xbf59, 0xa438, 0x4d02, + 0xa438, 0x5f3c, 0xa438, 0xac13, 0xa438, 0x09bf, 0xa438, 0x5e75, + 0xa438, 0x025f, 0xa438, 0x7ea1, 0xa438, 0x00f4, 0xa438, 0xbf59, + 0xa438, 0x4d02, 0xa438, 0x5f33, 0xa438, 0xef95, 0xa438, 0xfdfc, + 0xa438, 0x04bf, 0xa438, 0x5e72, 0xa438, 0x025f, 0xa438, 0x7eac, + 0xa438, 0x284a, 0xa438, 0xe184, 0xa438, 0xe6ad, 0xa438, 0x2809, + 0xa438, 0xbf5e, 0xa438, 0x7502, 0xa438, 0x5f7e, 0xa438, 0xac2d, + 0xa438, 0x3be1, 0xa438, 0x8feb, 0xa438, 0xad28, 0xa438, 0x09bf, + 0xa438, 0x5e75, 0xa438, 0x025f, 0xa438, 0x7eac, 0xa438, 0x2e32, + 0xa438, 0xe184, 0xa438, 0xe6ac, 0xa438, 0x2808, 0xa438, 0xbf87, + 0xa438, 0x3e02, 0xa438, 0x5f3c, 0xa438, 0xae06, 0xa438, 0xbf87, + 0xa438, 0x3e02, 0xa438, 0x5f33, 0xa438, 0xbf87, 0xa438, 0x4102, + 0xa438, 0x5f33, 0xa438, 0xee8f, 0xa438, 0xea04, 0xa438, 0xbf5e, + 0xa438, 0x4e02, 0xa438, 0x5f7e, 0xa438, 0xad28, 0xa438, 0x1f02, + 0xa438, 0x4b12, 0xa438, 0xae1a, 0xa438, 0xbf87, 0xa438, 0x3e02, + 0xa438, 0x5f3c, 0xa438, 0xbf87, 0xa438, 0x4102, 0xa438, 0x5f3c, + 0xa438, 0xee8f, 0xa438, 0xea03, 0xa438, 0xbf5e, 0xa438, 0x2a02, + 0xa438, 0x5f33, 0xa438, 0xee84, 0xa438, 0xe701, 0xa438, 0xaf4a, + 0xa438, 0x7444, 0xa438, 0xac0e, 0xa438, 0x55ac, 0xa438, 0x0ebf, + 0xa438, 0x5e75, 0xa438, 0x025f, 0xa438, 0x7ead, 0xa438, 0x2d0b, + 0xa438, 0xbf5e, 0xa438, 0x36e1, 0xa438, 0x8fe9, 0xa438, 0x025f, + 0xa438, 0x5fae, 0xa438, 0x09bf, 0xa438, 0x5e36, 0xa438, 0xe184, + 0xa438, 0xe102, 0xa438, 0x5f5f, 0xa438, 0xee8f, 0xa438, 0xe800, + 0xa438, 0xaf49, 0xa438, 0xcdbf, 0xa438, 0x595c, 0xa438, 0x025f, + 0xa438, 0x7ea1, 0xa438, 0x0203, 0xa438, 0xaf87, 0xa438, 0x79d1, + 0xa438, 0x00af, 0xa438, 0x877c, 0xa438, 0xe181, 0xa438, 0x941f, + 0xa438, 0x00af, 0xa438, 0x3ff7, 0xa438, 0xac4e, 0xa438, 0x06ac, + 0xa438, 0x4003, 0xa438, 0xaf24, 0xa438, 0x97af, 0xa438, 0x2467, + 0xa436, 0xb85e, 0xa438, 0x5082, 0xa436, 0xb860, 0xa438, 0x4575, + 0xa436, 0xb862, 0xa438, 0x425F, 0xa436, 0xb864, 0xa438, 0x0096, + 0xa436, 0xb886, 0xa438, 0x4A44, 0xa436, 0xb888, 0xa438, 0x49c4, + 0xa436, 0xb88a, 0xa438, 0x3FF2, 0xa436, 0xb88c, 0xa438, 0x245C, + 0xa436, 0xb838, 0xa438, 0x00ff, 0xb820, 0x0010, 0xa466, 0x0001, + 0xa436, 0x836a, 0xa438, 0x0001, 0xa436, 0x843d, 0xa438, 0xaf84, + 0xa438, 0xa6af, 0xa438, 0x8540, 0xa438, 0xaf85, 0xa438, 0xaeaf, + 0xa438, 0x85b5, 0xa438, 0xaf87, 0xa438, 0x7daf, 0xa438, 0x8784, + 0xa438, 0xaf87, 0xa438, 0x87af, 0xa438, 0x87e5, 0xa438, 0x0066, + 0xa438, 0x0a03, 0xa438, 0x6607, 0xa438, 0x2666, 0xa438, 0x1c00, + 0xa438, 0x660d, 0xa438, 0x0166, 0xa438, 0x1004, 0xa438, 0x6616, + 0xa438, 0x0566, 0xa438, 0x1f06, 0xa438, 0x6a5d, 0xa438, 0x2766, + 0xa438, 0x1900, 0xa438, 0x6625, 0xa438, 0x2466, 0xa438, 0x2820, + 0xa438, 0x662b, 0xa438, 0x2466, 0xa438, 0x4600, 0xa438, 0x664c, + 0xa438, 0x0166, 0xa438, 0x4902, 0xa438, 0x8861, 0xa438, 0x0388, + 0xa438, 0x5e05, 0xa438, 0x886d, 0xa438, 0x0588, 0xa438, 0x7005, + 0xa438, 0x8873, 0xa438, 0x0588, 0xa438, 0x7605, 0xa438, 0x8879, + 0xa438, 0x0588, 0xa438, 0x7c05, 0xa438, 0x887f, 0xa438, 0x0588, + 0xa438, 0x8205, 0xa438, 0x8885, 0xa438, 0x0588, 0xa438, 0x881e, + 0xa438, 0x13ad, 0xa438, 0x2841, 0xa438, 0xbf64, 0xa438, 0xf102, + 0xa438, 0x6b9d, 0xa438, 0xad28, 0xa438, 0x03af, 0xa438, 0x15fc, + 0xa438, 0xbf65, 0xa438, 0xcb02, 0xa438, 0x6b9d, 0xa438, 0x0d11, + 0xa438, 0xf62f, 0xa438, 0xef31, 0xa438, 0xd202, 0xa438, 0xbf88, + 0xa438, 0x6402, 0xa438, 0x6b52, 0xa438, 0xe082, 0xa438, 0x020d, + 0xa438, 0x01f6, 0xa438, 0x271b, 0xa438, 0x03aa, 0xa438, 0x0182, + 0xa438, 0xe082, 0xa438, 0x010d, 0xa438, 0x01f6, 0xa438, 0x271b, + 0xa438, 0x03aa, 0xa438, 0x0782, 0xa438, 0xbf88, 0xa438, 0x6402, + 0xa438, 0x6b5b, 0xa438, 0xaf15, 0xa438, 0xf9bf, 0xa438, 0x65cb, + 0xa438, 0x026b, 0xa438, 0x9d0d, 0xa438, 0x11f6, 0xa438, 0x2fef, + 0xa438, 0x31e0, 0xa438, 0x8ff7, 0xa438, 0x0d01, 0xa438, 0xf627, + 0xa438, 0x1b03, 0xa438, 0xaa20, 0xa438, 0xe18f, 0xa438, 0xf4d0, + 0xa438, 0x00bf, 0xa438, 0x6587, 0xa438, 0x026b, 0xa438, 0x7ee1, + 0xa438, 0x8ff5, 0xa438, 0xbf65, 0xa438, 0x8a02, 0xa438, 0x6b7e, + 0xa438, 0xe18f, 0xa438, 0xf6bf, 0xa438, 0x6584, 0xa438, 0x026b, + 0xa438, 0x7eaf, 0xa438, 0x15fc, 0xa438, 0xe18f, 0xa438, 0xf1d0, + 0xa438, 0x00bf, 0xa438, 0x6587, 0xa438, 0x026b, 0xa438, 0x7ee1, + 0xa438, 0x8ff2, 0xa438, 0xbf65, 0xa438, 0x8a02, 0xa438, 0x6b7e, + 0xa438, 0xe18f, 0xa438, 0xf3bf, 0xa438, 0x6584, 0xa438, 0xaf15, + 0xa438, 0xfcd1, 0xa438, 0x07bf, 0xa438, 0x65ce, 0xa438, 0x026b, + 0xa438, 0x7ed1, 0xa438, 0x0cbf, 0xa438, 0x65d1, 0xa438, 0x026b, + 0xa438, 0x7ed1, 0xa438, 0x03bf, 0xa438, 0x885e, 0xa438, 0x026b, + 0xa438, 0x7ed1, 0xa438, 0x05bf, 0xa438, 0x8867, 0xa438, 0x026b, + 0xa438, 0x7ed1, 0xa438, 0x07bf, 0xa438, 0x886a, 0xa438, 0x026b, + 0xa438, 0x7ebf, 0xa438, 0x6a6c, 0xa438, 0x026b, 0xa438, 0x5b02, + 0xa438, 0x62b5, 0xa438, 0xbf6a, 0xa438, 0x0002, 0xa438, 0x6b5b, + 0xa438, 0xbf64, 0xa438, 0x4e02, 0xa438, 0x6b9d, 0xa438, 0xac28, + 0xa438, 0x0bbf, 0xa438, 0x6412, 0xa438, 0x026b, 0xa438, 0x9da1, + 0xa438, 0x0502, 0xa438, 0xaeec, 0xa438, 0xd104, 0xa438, 0xbf65, + 0xa438, 0xce02, 0xa438, 0x6b7e, 0xa438, 0xd104, 0xa438, 0xbf65, + 0xa438, 0xd102, 0xa438, 0x6b7e, 0xa438, 0xd102, 0xa438, 0xbf88, + 0xa438, 0x6702, 0xa438, 0x6b7e, 0xa438, 0xd104, 0xa438, 0xbf88, + 0xa438, 0x6a02, 0xa438, 0x6b7e, 0xa438, 0xaf62, 0xa438, 0x72f6, + 0xa438, 0x0af6, 0xa438, 0x09af, 0xa438, 0x34e3, 0xa438, 0x0285, + 0xa438, 0xbe02, 0xa438, 0x106c, 0xa438, 0xaf10, 0xa438, 0x6bf8, + 0xa438, 0xfaef, 0xa438, 0x69e0, 0xa438, 0x804c, 0xa438, 0xac25, + 0xa438, 0x17e0, 0xa438, 0x8040, 0xa438, 0xad25, 0xa438, 0x1a02, + 0xa438, 0x85ed, 0xa438, 0xe080, 0xa438, 0x40ac, 0xa438, 0x2511, + 0xa438, 0xbf87, 0xa438, 0x6502, 0xa438, 0x6b5b, 0xa438, 0xae09, + 0xa438, 0x0287, 0xa438, 0x2402, 0xa438, 0x875a, 0xa438, 0x0287, + 0xa438, 0x4fef, 0xa438, 0x96fe, 0xa438, 0xfc04, 0xa438, 0xf8e0, + 0xa438, 0x8019, 0xa438, 0xad20, 0xa438, 0x11e0, 0xa438, 0x8fe3, + 0xa438, 0xac20, 0xa438, 0x0502, 0xa438, 0x860a, 0xa438, 0xae03, + 0xa438, 0x0286, 0xa438, 0x7802, 0xa438, 0x86c1, 0xa438, 0x0287, + 0xa438, 0x4ffc, 0xa438, 0x04f8, 0xa438, 0xf9ef, 0xa438, 0x79fb, + 0xa438, 0xbf87, 0xa438, 0x6802, 0xa438, 0x6b9d, 0xa438, 0x5c20, + 0xa438, 0x000d, 0xa438, 0x4da1, 0xa438, 0x0151, 0xa438, 0xbf87, + 0xa438, 0x6802, 0xa438, 0x6b9d, 0xa438, 0x5c07, 0xa438, 0xffe3, + 0xa438, 0x8fe4, 0xa438, 0x1b31, 0xa438, 0x9f41, 0xa438, 0x0d48, + 0xa438, 0xe38f, 0xa438, 0xe51b, 0xa438, 0x319f, 0xa438, 0x38bf, + 0xa438, 0x876b, 0xa438, 0x026b, 0xa438, 0x9d5c, 0xa438, 0x07ff, + 0xa438, 0xe38f, 0xa438, 0xe61b, 0xa438, 0x319f, 0xa438, 0x280d, + 0xa438, 0x48e3, 0xa438, 0x8fe7, 0xa438, 0x1b31, 0xa438, 0x9f1f, + 0xa438, 0xbf87, 0xa438, 0x6e02, 0xa438, 0x6b9d, 0xa438, 0x5c07, + 0xa438, 0xffe3, 0xa438, 0x8fe8, 0xa438, 0x1b31, 0xa438, 0x9f0f, + 0xa438, 0x0d48, 0xa438, 0xe38f, 0xa438, 0xe91b, 0xa438, 0x319f, + 0xa438, 0x06ee, 0xa438, 0x8fe3, 0xa438, 0x01ae, 0xa438, 0x04ee, + 0xa438, 0x8fe3, 0xa438, 0x00ff, 0xa438, 0xef97, 0xa438, 0xfdfc, + 0xa438, 0x04f8, 0xa438, 0xf9ef, 0xa438, 0x79fb, 0xa438, 0xbf87, + 0xa438, 0x6802, 0xa438, 0x6b9d, 0xa438, 0x5c20, 0xa438, 0x000d, + 0xa438, 0x4da1, 0xa438, 0x0020, 0xa438, 0xbf87, 0xa438, 0x6802, + 0xa438, 0x6b9d, 0xa438, 0x5c06, 0xa438, 0x000d, 0xa438, 0x49e3, + 0xa438, 0x8fea, 0xa438, 0x1b31, 0xa438, 0x9f0e, 0xa438, 0xbf87, + 0xa438, 0x7102, 0xa438, 0x6b5b, 0xa438, 0xbf87, 0xa438, 0x7702, + 0xa438, 0x6b5b, 0xa438, 0xae0c, 0xa438, 0xbf87, 0xa438, 0x7102, + 0xa438, 0x6b52, 0xa438, 0xbf87, 0xa438, 0x7702, 0xa438, 0x6b52, + 0xa438, 0xee8f, 0xa438, 0xe300, 0xa438, 0xffef, 0xa438, 0x97fd, + 0xa438, 0xfc04, 0xa438, 0xf8f9, 0xa438, 0xef79, 0xa438, 0xfbbf, + 0xa438, 0x8768, 0xa438, 0x026b, 0xa438, 0x9d5c, 0xa438, 0x2000, + 0xa438, 0x0d4d, 0xa438, 0xa101, 0xa438, 0x4abf, 0xa438, 0x8768, + 0xa438, 0x026b, 0xa438, 0x9d5c, 0xa438, 0x07ff, 0xa438, 0xe38f, + 0xa438, 0xeb1b, 0xa438, 0x319f, 0xa438, 0x3a0d, 0xa438, 0x48e3, + 0xa438, 0x8fec, 0xa438, 0x1b31, 0xa438, 0x9f31, 0xa438, 0xbf87, + 0xa438, 0x6b02, 0xa438, 0x6b9d, 0xa438, 0xe38f, 0xa438, 0xed1b, + 0xa438, 0x319f, 0xa438, 0x240d, 0xa438, 0x48e3, 0xa438, 0x8fee, + 0xa438, 0x1b31, 0xa438, 0x9f1b, 0xa438, 0xbf87, 0xa438, 0x6e02, + 0xa438, 0x6b9d, 0xa438, 0xe38f, 0xa438, 0xef1b, 0xa438, 0x319f, + 0xa438, 0x0ebf, 0xa438, 0x8774, 0xa438, 0x026b, 0xa438, 0x5bbf, + 0xa438, 0x877a, 0xa438, 0x026b, 0xa438, 0x5bae, 0xa438, 0x00ff, + 0xa438, 0xef97, 0xa438, 0xfdfc, 0xa438, 0x04f8, 0xa438, 0xef79, + 0xa438, 0xfbe0, 0xa438, 0x8019, 0xa438, 0xad20, 0xa438, 0x1cee, + 0xa438, 0x8fe3, 0xa438, 0x00bf, 0xa438, 0x8771, 0xa438, 0x026b, + 0xa438, 0x52bf, 0xa438, 0x8777, 0xa438, 0x026b, 0xa438, 0x52bf, + 0xa438, 0x8774, 0xa438, 0x026b, 0xa438, 0x52bf, 0xa438, 0x877a, + 0xa438, 0x026b, 0xa438, 0x52ff, 0xa438, 0xef97, 0xa438, 0xfc04, + 0xa438, 0xf8e0, 0xa438, 0x8040, 0xa438, 0xf625, 0xa438, 0xe480, + 0xa438, 0x40fc, 0xa438, 0x04f8, 0xa438, 0xe080, 0xa438, 0x4cf6, + 0xa438, 0x25e4, 0xa438, 0x804c, 0xa438, 0xfc04, 0xa438, 0x55a4, + 0xa438, 0xbaf0, 0xa438, 0xa64a, 0xa438, 0xf0a6, 0xa438, 0x4cf0, + 0xa438, 0xa64e, 0xa438, 0x66a4, 0xa438, 0xb655, 0xa438, 0xa4b6, + 0xa438, 0x00ac, 0xa438, 0x0e11, 0xa438, 0xac0e, 0xa438, 0xee80, + 0xa438, 0x4c3a, 0xa438, 0xaf07, 0xa438, 0xd0af, 0xa438, 0x26d0, + 0xa438, 0xa201, 0xa438, 0x0ebf, 0xa438, 0x663d, 0xa438, 0x026b, + 0xa438, 0x52bf, 0xa438, 0x6643, 0xa438, 0x026b, 0xa438, 0x52ae, + 0xa438, 0x11bf, 0xa438, 0x6643, 0xa438, 0x026b, 0xa438, 0x5bd4, + 0xa438, 0x0054, 0xa438, 0xb4fe, 0xa438, 0xbf66, 0xa438, 0x3d02, + 0xa438, 0x6b5b, 0xa438, 0xd300, 0xa438, 0x020d, 0xa438, 0xf6a2, + 0xa438, 0x0405, 0xa438, 0xe081, 0xa438, 0x47ae, 0xa438, 0x03e0, + 0xa438, 0x8148, 0xa438, 0xac23, 0xa438, 0x02ae, 0xa438, 0x0268, + 0xa438, 0xf01a, 0xa438, 0x10ad, 0xa438, 0x2f04, 0xa438, 0xd100, + 0xa438, 0xae05, 0xa438, 0xad2c, 0xa438, 0x02d1, 0xa438, 0x0f1f, + 0xa438, 0x00a2, 0xa438, 0x0407, 0xa438, 0x3908, 0xa438, 0xad2f, + 0xa438, 0x02d1, 0xa438, 0x0002, 0xa438, 0x0e1c, 0xa438, 0x2b01, + 0xa438, 0xad3a, 0xa438, 0xc9af, 0xa438, 0x0dee, 0xa438, 0xa000, + 0xa438, 0x2702, 0xa438, 0x1beb, 0xa438, 0xe18f, 0xa438, 0xe1ac, + 0xa438, 0x2819, 0xa438, 0xee8f, 0xa438, 0xe101, 0xa438, 0x1f44, + 0xa438, 0xbf65, 0xa438, 0x9302, 0xa438, 0x6b9d, 0xa438, 0xe58f, + 0xa438, 0xe21f, 0xa438, 0x44d1, 0xa438, 0x02bf, 0xa438, 0x6593, + 0xa438, 0x026b, 0xa438, 0x7ee0, 0xa438, 0x82b1, 0xa438, 0xae49, + 0xa438, 0xa001, 0xa438, 0x0502, 0xa438, 0x1c4d, 0xa438, 0xae41, + 0xa438, 0xa002, 0xa438, 0x0502, 0xa438, 0x1c90, 0xa438, 0xae39, + 0xa438, 0xa003, 0xa438, 0x0502, 0xa438, 0x1c9d, 0xa438, 0xae31, + 0xa438, 0xa004, 0xa438, 0x0502, 0xa438, 0x1cbc, 0xa438, 0xae29, + 0xa438, 0xa005, 0xa438, 0x1e02, 0xa438, 0x1cc9, 0xa438, 0xe080, + 0xa438, 0xdfac, 0xa438, 0x2013, 0xa438, 0xac21, 0xa438, 0x10ac, + 0xa438, 0x220d, 0xa438, 0xe18f, 0xa438, 0xe2bf, 0xa438, 0x6593, + 0xa438, 0x026b, 0xa438, 0x7eee, 0xa438, 0x8fe1, 0xa438, 0x00ae, + 0xa438, 0x08a0, 0xa438, 0x0605, 0xa438, 0x021d, 0xa438, 0x07ae, + 0xa438, 0x00e0, 0xa438, 0x82b1, 0xa438, 0xaf1b, 0xa438, 0xe910, + 0xa438, 0xbf4a, 0xa438, 0x99bf, 0xa438, 0x4a00, 0xa438, 0xa86a, + 0xa438, 0xfdad, 0xa438, 0x5eca, 0xa438, 0xad5e, 0xa438, 0x88bd, + 0xa438, 0x2c99, 0xa438, 0xbd2c, 0xa438, 0x33bd, 0xa438, 0x3222, + 0xa438, 0xbd32, 0xa438, 0x11bd, 0xa438, 0x3200, 0xa438, 0xbd32, + 0xa438, 0x77bd, 0xa438, 0x3266, 0xa438, 0xbd32, 0xa438, 0x55bd, + 0xa438, 0x3244, 0xa438, 0xbd32, 0xa436, 0xb818, 0xa438, 0x15c5, + 0xa436, 0xb81a, 0xa438, 0x6255, 0xa436, 0xb81c, 0xa438, 0x34e1, + 0xa436, 0xb81e, 0xa438, 0x1068, 0xa436, 0xb850, 0xa438, 0x07cc, + 0xa436, 0xb852, 0xa438, 0x26ca, 0xa436, 0xb878, 0xa438, 0x0dbf, + 0xa436, 0xb884, 0xa438, 0x1BB1, 0xa436, 0xb832, 0xa438, 0x00ff, + 0xa436, 0x0000, 0xa438, 0x0000, 0xB82E, 0x0000, 0xa436, 0x8023, + 0xa438, 0x0000, 0xa436, 0x801E, 0xa438, 0x0023, 0xB820, 0x0000, + 0xFFFF, 0xFFFF +}; + +static const u_int16_t phy_mcu_ram_code_8125d_1_2[] = { + 0xb892, 0x0000, 0xB88E, 0xC28F, 0xB890, 0x252D, 0xB88E, 0xC290, + 0xB890, 0xC924, 0xB88E, 0xC291, 0xB890, 0xC92E, 0xB88E, 0xC292, + 0xB890, 0xF626, 0xB88E, 0xC293, 0xB890, 0xF630, 0xB88E, 0xC294, + 0xB890, 0xA328, 0xB88E, 0xC295, 0xB890, 0xA332, 0xB88E, 0xC296, + 0xB890, 0xD72B, 0xB88E, 0xC297, 0xB890, 0xD735, 0xB88E, 0xC298, + 0xB890, 0x8A2E, 0xB88E, 0xC299, 0xB890, 0x8A38, 0xB88E, 0xC29A, + 0xB890, 0xBE32, 0xB88E, 0xC29B, 0xB890, 0xBE3C, 0xB88E, 0xC29C, + 0xB890, 0x7436, 0xB88E, 0xC29D, 0xB890, 0x7440, 0xB88E, 0xC29E, + 0xB890, 0xAD3B, 0xB88E, 0xC29F, 0xB890, 0xAD45, 0xB88E, 0xC2A0, + 0xB890, 0x6640, 0xB88E, 0xC2A1, 0xB890, 0x664A, 0xB88E, 0xC2A2, + 0xB890, 0xA646, 0xB88E, 0xC2A3, 0xB890, 0xA650, 0xB88E, 0xC2A4, + 0xB890, 0x624C, 0xB88E, 0xC2A5, 0xB890, 0x6256, 0xB88E, 0xC2A6, + 0xB890, 0xA453, 0xB88E, 0xC2A7, 0xB890, 0xA45D, 0xB88E, 0xC2A8, + 0xB890, 0x665A, 0xB88E, 0xC2A9, 0xB890, 0x6664, 0xB88E, 0xC2AA, + 0xB890, 0xAC62, 0xB88E, 0xC2AB, 0xB890, 0xAC6C, 0xB88E, 0xC2AC, + 0xB890, 0x746A, 0xB88E, 0xC2AD, 0xB890, 0x7474, 0xB88E, 0xC2AE, + 0xB890, 0xBCFA, 0xB88E, 0xC2AF, 0xB890, 0xBCFD, 0xB88E, 0xC2B0, + 0xB890, 0x79FF, 0xB88E, 0xC2B1, 0xB890, 0x7901, 0xB88E, 0xC2B2, + 0xB890, 0xF703, 0xB88E, 0xC2B3, 0xB890, 0xF706, 0xB88E, 0xC2B4, + 0xB890, 0x7408, 0xB88E, 0xC2B5, 0xB890, 0x740A, 0xB88E, 0xC2B6, + 0xB890, 0xF10C, 0xB88E, 0xC2B7, 0xB890, 0xF10F, 0xB88E, 0xC2B8, + 0xB890, 0x6F10, 0xB88E, 0xC2B9, 0xB890, 0x6F13, 0xB88E, 0xC2BA, + 0xB890, 0xEC15, 0xB88E, 0xC2BB, 0xB890, 0xEC18, 0xB88E, 0xC2BC, + 0xB890, 0x6A1A, 0xB88E, 0xC2BD, 0xB890, 0x6A1C, 0xB88E, 0xC2BE, + 0xB890, 0xE71E, 0xB88E, 0xC2BF, 0xB890, 0xE721, 0xB88E, 0xC2C0, + 0xB890, 0x6424, 0xB88E, 0xC2C1, 0xB890, 0x6425, 0xB88E, 0xC2C2, + 0xB890, 0xE228, 0xB88E, 0xC2C3, 0xB890, 0xE22A, 0xB88E, 0xC2C4, + 0xB890, 0x5F2B, 0xB88E, 0xC2C5, 0xB890, 0x5F2E, 0xB88E, 0xC2C6, + 0xB890, 0xDC31, 0xB88E, 0xC2C7, 0xB890, 0xDC33, 0xB88E, 0xC2C8, + 0xB890, 0x2035, 0xB88E, 0xC2C9, 0xB890, 0x2036, 0xB88E, 0xC2CA, + 0xB890, 0x9F3A, 0xB88E, 0xC2CB, 0xB890, 0x9F3A, 0xB88E, 0xC2CC, + 0xB890, 0x4430, 0xFFFF, 0xFFFF +}; +static const u_int16_t phy_mcu_ram_code_8125d_1_3[] = { + 0xa436, 0xacca, 0xa438, 0x0104, 0xa436, 0xaccc, 0xa438, 0x8000, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x0fff, + 0xa436, 0xacce, 0xa438, 0xfff8, 0xa436, 0xacd0, 0xa438, 0x0fff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xfb47, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xfb4f, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0x6087, 0xa436, 0xacd0, 0xa438, 0x0180, + 0xa436, 0xacce, 0xa438, 0x600f, 0xa436, 0xacd0, 0xa438, 0x0108, + 0xa436, 0xacce, 0xa438, 0x6807, 0xa436, 0xacd0, 0xa438, 0x0100, + 0xa436, 0xacce, 0xa438, 0x688f, 0xa436, 0xacd0, 0xa438, 0x0188, + 0xa436, 0xacce, 0xa438, 0x7027, 0xa436, 0xacd0, 0xa438, 0x0120, + 0xa436, 0xacce, 0xa438, 0x702f, 0xa436, 0xacd0, 0xa438, 0x0128, + 0xa436, 0xacce, 0xa438, 0x7847, 0xa436, 0xacd0, 0xa438, 0x0140, + 0xa436, 0xacce, 0xa438, 0x784f, 0xa436, 0xacd0, 0xa438, 0x0148, + 0xa436, 0xacce, 0xa438, 0x80a7, 0xa436, 0xacd0, 0xa438, 0x01a0, + 0xa436, 0xacce, 0xa438, 0x88af, 0xa436, 0xacd0, 0xa438, 0x01a8, + 0xa436, 0xacce, 0xa438, 0x8067, 0xa436, 0xacd0, 0xa438, 0x0161, + 0xa436, 0xacce, 0xa438, 0x886f, 0xa436, 0xacd0, 0xa438, 0x0169, + 0xa436, 0xacce, 0xa438, 0xfb57, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xfb5f, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0x6017, 0xa436, 0xacd0, 0xa438, 0x0110, + 0xa436, 0xacce, 0xa438, 0x601f, 0xa436, 0xacd0, 0xa438, 0x0118, + 0xa436, 0xacce, 0xa438, 0x6837, 0xa436, 0xacd0, 0xa438, 0x0130, + 0xa436, 0xacce, 0xa438, 0x683f, 0xa436, 0xacd0, 0xa438, 0x0138, + 0xa436, 0xacce, 0xa438, 0x7097, 0xa436, 0xacd0, 0xa438, 0x0190, + 0xa436, 0xacce, 0xa438, 0x705f, 0xa436, 0xacd0, 0xa438, 0x0158, + 0xa436, 0xacce, 0xa438, 0x7857, 0xa436, 0xacd0, 0xa438, 0x0150, + 0xa436, 0xacce, 0xa438, 0x789f, 0xa436, 0xacd0, 0xa438, 0x0198, + 0xa436, 0xacce, 0xa438, 0x90b7, 0xa436, 0xacd0, 0xa438, 0x01b0, + 0xa436, 0xacce, 0xa438, 0x98bf, 0xa436, 0xacd0, 0xa438, 0x01b8, + 0xa436, 0xacce, 0xa438, 0x9077, 0xa436, 0xacd0, 0xa438, 0x1171, + 0xa436, 0xacce, 0xa438, 0x987f, 0xa436, 0xacd0, 0xa438, 0x1179, + 0xa436, 0xacca, 0xa438, 0x0004, 0xa436, 0xacc6, 0xa438, 0x0015, + 0xa436, 0xacc8, 0xa438, 0xc000, 0xa436, 0xacc8, 0xa438, 0x0000, + 0xFFFF, 0xFFFF +}; + +static const u_int16_t phy_mcu_ram_code_8125bp_1_1[] = { + 0xa436, 0x8024, 0xa438, 0x3600, 0xa436, 0xB82E, 0xa438, 0x0001, + 0xb820, 0x0090, 0xa436, 0xA016, 0xa438, 0x0000, 0xa436, 0xA012, + 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, + 0xa438, 0x1800, 0xa438, 0x8014, 0xa438, 0x1800, 0xa438, 0x8018, + 0xa438, 0x1800, 0xa438, 0x801c, 0xa438, 0x1800, 0xa438, 0x8020, + 0xa438, 0x1800, 0xa438, 0x8024, 0xa438, 0x1800, 0xa438, 0x8028, + 0xa438, 0x1800, 0xa438, 0x8028, 0xa438, 0xdb20, 0xa438, 0xd501, + 0xa438, 0x1800, 0xa438, 0x034c, 0xa438, 0xdb10, 0xa438, 0xd501, + 0xa438, 0x1800, 0xa438, 0x032c, 0xa438, 0x8620, 0xa438, 0xa480, + 0xa438, 0x1800, 0xa438, 0x1cfe, 0xa438, 0xbf40, 0xa438, 0xd703, + 0xa438, 0x1800, 0xa438, 0x0ce9, 0xa438, 0x9c10, 0xa438, 0x9f40, + 0xa438, 0x1800, 0xa438, 0x137a, 0xa438, 0x9f20, 0xa438, 0x9f40, + 0xa438, 0x1800, 0xa438, 0x16c4, 0xa436, 0xA026, 0xa438, 0xffff, + 0xa436, 0xA024, 0xa438, 0xffff, 0xa436, 0xA022, 0xa438, 0x16c3, + 0xa436, 0xA020, 0xa438, 0x1379, 0xa436, 0xA006, 0xa438, 0x0ce8, + 0xa436, 0xA004, 0xa438, 0x1cfd, 0xa436, 0xA002, 0xa438, 0x032b, + 0xa436, 0xA000, 0xa438, 0x034b, 0xa436, 0xA008, 0xa438, 0x3f00, + 0xa436, 0xA016, 0xa438, 0x0020, 0xa436, 0xA012, 0xa438, 0x0000, + 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, 0xa438, 0x1800, + 0xa438, 0x8018, 0xa438, 0x1800, 0xa438, 0x8021, 0xa438, 0x1800, + 0xa438, 0x802b, 0xa438, 0x1800, 0xa438, 0x8055, 0xa438, 0x1800, + 0xa438, 0x805a, 0xa438, 0x1800, 0xa438, 0x805e, 0xa438, 0x1800, + 0xa438, 0x8062, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0xcb11, + 0xa438, 0xd1b9, 0xa438, 0xd05b, 0xa438, 0x0000, 0xa438, 0x1800, + 0xa438, 0x0284, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0xd700, + 0xa438, 0x5fb4, 0xa438, 0x5f95, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x1800, 0xa438, 0x02b7, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0xcb21, 0xa438, 0x1000, 0xa438, 0x0b34, 0xa438, 0xd71f, + 0xa438, 0x5f5e, 0xa438, 0x0000, 0xa438, 0x1800, 0xa438, 0x0322, + 0xa438, 0xd700, 0xa438, 0xd113, 0xa438, 0xd040, 0xa438, 0x1000, + 0xa438, 0x0a57, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xd700, + 0xa438, 0x6065, 0xa438, 0xd122, 0xa438, 0xf002, 0xa438, 0xd122, + 0xa438, 0xd040, 0xa438, 0x1000, 0xa438, 0x0b53, 0xa438, 0xa008, + 0xa438, 0xd704, 0xa438, 0x4052, 0xa438, 0xa002, 0xa438, 0xd704, + 0xa438, 0x4054, 0xa438, 0xa740, 0xa438, 0x1000, 0xa438, 0x0a57, + 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xcb9b, 0xa438, 0xd110, + 0xa438, 0xd040, 0xa438, 0x1000, 0xa438, 0x0c01, 0xa438, 0x1000, + 0xa438, 0x0a57, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0x801a, + 0xa438, 0x1000, 0xa438, 0x0a57, 0xa438, 0xd704, 0xa438, 0x7fb9, + 0xa438, 0x1800, 0xa438, 0x088d, 0xa438, 0xcb62, 0xa438, 0xd700, + 0xa438, 0x8880, 0xa438, 0x1800, 0xa438, 0x06cb, 0xa438, 0xbe02, + 0xa438, 0x0000, 0xa438, 0x1800, 0xa438, 0x002c, 0xa438, 0xbe04, + 0xa438, 0x0000, 0xa438, 0x1800, 0xa438, 0x002c, 0xa438, 0xbe08, + 0xa438, 0x0000, 0xa438, 0x1800, 0xa438, 0x002c, 0xa436, 0xA10E, + 0xa438, 0x802a, 0xa436, 0xA10C, 0xa438, 0x8026, 0xa436, 0xA10A, + 0xa438, 0x8022, 0xa436, 0xA108, 0xa438, 0x06ca, 0xa436, 0xA106, + 0xa438, 0x086f, 0xa436, 0xA104, 0xa438, 0x0321, 0xa436, 0xA102, + 0xa438, 0x02b5, 0xa436, 0xA100, 0xa438, 0x0283, 0xa436, 0xA110, + 0xa438, 0x001f, 0xb820, 0x0010, 0xb82e, 0x0000, 0xa436, 0x8024, + 0xa438, 0x0000, 0xB820, 0x0000, 0xFFFF, 0xFFFF +}; + +static const u_int16_t phy_mcu_ram_code_8125bp_1_2[] = { + 0xb892, 0x0000, 0xb88e, 0xC201, 0xb890, 0x2C01, 0xb890, 0xCD02, + 0xb890, 0x0602, 0xb890, 0x5502, 0xb890, 0xB903, 0xb890, 0x3303, + 0xb890, 0xC204, 0xb890, 0x6605, 0xb890, 0x1F05, 0xb890, 0xEE06, + 0xb890, 0xD207, 0xb890, 0xCC08, 0xb890, 0xDA09, 0xb890, 0xFF0B, + 0xb890, 0x380C, 0xb890, 0x87F3, 0xb88e, 0xC27F, 0xb890, 0x2B66, + 0xb890, 0x6666, 0xb890, 0x6666, 0xb890, 0x6666, 0xb890, 0x6666, + 0xb890, 0x6666, 0xb890, 0x6666, 0xb890, 0x6666, 0xb890, 0x66C2, + 0xb88e, 0xC26F, 0xb890, 0x751D, 0xb890, 0x1D1F, 0xb890, 0x2022, + 0xb890, 0x2325, 0xb890, 0x2627, 0xb890, 0x2829, 0xb890, 0x2929, + 0xb890, 0x2A2A, 0xb890, 0x2B66, 0xB820, 0x0000, 0xFFFF, 0xFFFF +}; + +static const u_int16_t phy_mcu_ram_code_8126a_1_1[] = { + 0xa436, 0x8023, 0xa438, 0x4900, 0xa436, 0xB82E, 0xa438, 0x0001, + 0xBFBA, 0xE000, 0xBF1A, 0xC1B9, 0xBFA8, 0x10F0, 0xBFB0, 0x0210, + 0xBFB4, 0xE7E4, 0xb820, 0x0090, 0xa436, 0xA016, 0xa438, 0x0000, + 0xa436, 0xA012, 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800, + 0xa438, 0x8010, 0xa438, 0x1800, 0xa438, 0x8062, 0xa438, 0x1800, + 0xa438, 0x8069, 0xa438, 0x1800, 0xa438, 0x80e2, 0xa438, 0x1800, + 0xa438, 0x80eb, 0xa438, 0x1800, 0xa438, 0x80f5, 0xa438, 0x1800, + 0xa438, 0x811b, 0xa438, 0x1800, 0xa438, 0x8120, 0xa438, 0xd500, + 0xa438, 0xd049, 0xa438, 0xd1b9, 0xa438, 0xa208, 0xa438, 0x8208, + 0xa438, 0xd503, 0xa438, 0xa104, 0xa438, 0x0c07, 0xa438, 0x0902, + 0xa438, 0xd500, 0xa438, 0xbc10, 0xa438, 0xc484, 0xa438, 0xd503, + 0xa438, 0xcc02, 0xa438, 0xcd0d, 0xa438, 0xaf01, 0xa438, 0xd500, + 0xa438, 0xd703, 0xa438, 0x4531, 0xa438, 0xbd08, 0xa438, 0x1000, + 0xa438, 0x16bb, 0xa438, 0xd75e, 0xa438, 0x5fb3, 0xa438, 0xd503, + 0xa438, 0xd04d, 0xa438, 0xd1c7, 0xa438, 0x0cf0, 0xa438, 0x0e10, + 0xa438, 0xd704, 0xa438, 0x5ffc, 0xa438, 0xd04d, 0xa438, 0xd1c7, + 0xa438, 0x0cf0, 0xa438, 0x0e20, 0xa438, 0xd704, 0xa438, 0x5ffc, + 0xa438, 0xd04d, 0xa438, 0xd1c7, 0xa438, 0x0cf0, 0xa438, 0x0e40, + 0xa438, 0xd704, 0xa438, 0x5ffc, 0xa438, 0xd04d, 0xa438, 0xd1c7, + 0xa438, 0x0cf0, 0xa438, 0x0e80, 0xa438, 0xd704, 0xa438, 0x5ffc, + 0xa438, 0xd07b, 0xa438, 0xd1c5, 0xa438, 0x8ef0, 0xa438, 0xd704, + 0xa438, 0x5ffc, 0xa438, 0x9d08, 0xa438, 0x1000, 0xa438, 0x16bb, + 0xa438, 0xd75e, 0xa438, 0x7fb3, 0xa438, 0x1000, 0xa438, 0x16bb, + 0xa438, 0xd75e, 0xa438, 0x5fad, 0xa438, 0x1000, 0xa438, 0x181f, + 0xa438, 0xd703, 0xa438, 0x3181, 0xa438, 0x8059, 0xa438, 0x60ad, + 0xa438, 0x1000, 0xa438, 0x16bb, 0xa438, 0xd703, 0xa438, 0x5fbb, + 0xa438, 0x1000, 0xa438, 0x16bb, 0xa438, 0xd719, 0xa438, 0x7fa8, + 0xa438, 0xd500, 0xa438, 0xd049, 0xa438, 0xd1b9, 0xa438, 0x1800, + 0xa438, 0x0f0b, 0xa438, 0xd500, 0xa438, 0xd07b, 0xa438, 0xd1b5, + 0xa438, 0xd0f6, 0xa438, 0xd1c5, 0xa438, 0x1800, 0xa438, 0x1049, + 0xa438, 0xd707, 0xa438, 0x4121, 0xa438, 0xd706, 0xa438, 0x40fa, + 0xa438, 0xd099, 0xa438, 0xd1c6, 0xa438, 0x1000, 0xa438, 0x16bb, + 0xa438, 0xd704, 0xa438, 0x5fbc, 0xa438, 0xbc80, 0xa438, 0xc489, + 0xa438, 0xd503, 0xa438, 0xcc08, 0xa438, 0xcd46, 0xa438, 0xaf01, + 0xa438, 0xd500, 0xa438, 0x1000, 0xa438, 0x0903, 0xa438, 0x1000, + 0xa438, 0x16bb, 0xa438, 0xd75e, 0xa438, 0x5f6d, 0xa438, 0x1000, + 0xa438, 0x181f, 0xa438, 0xd504, 0xa438, 0xa210, 0xa438, 0xd500, + 0xa438, 0x1000, 0xa438, 0x16bb, 0xa438, 0xd719, 0xa438, 0x5fbc, + 0xa438, 0xd504, 0xa438, 0x8210, 0xa438, 0xd503, 0xa438, 0xc6d0, + 0xa438, 0xa521, 0xa438, 0xcd49, 0xa438, 0xaf01, 0xa438, 0xd504, + 0xa438, 0xa220, 0xa438, 0xd500, 0xa438, 0x1000, 0xa438, 0x16bb, + 0xa438, 0xd75e, 0xa438, 0x5fad, 0xa438, 0x1000, 0xa438, 0x181f, + 0xa438, 0xd503, 0xa438, 0xa704, 0xa438, 0x0c07, 0xa438, 0x0904, + 0xa438, 0xd504, 0xa438, 0xa102, 0xa438, 0xd500, 0xa438, 0x1000, + 0xa438, 0x16bb, 0xa438, 0xd718, 0xa438, 0x5fab, 0xa438, 0xd503, + 0xa438, 0xc6f0, 0xa438, 0xa521, 0xa438, 0xd505, 0xa438, 0xa404, + 0xa438, 0xd500, 0xa438, 0xd701, 0xa438, 0x6085, 0xa438, 0xd504, + 0xa438, 0xc9f1, 0xa438, 0xf003, 0xa438, 0xd504, 0xa438, 0xc9f0, + 0xa438, 0xd503, 0xa438, 0xcd4a, 0xa438, 0xaf01, 0xa438, 0xd500, + 0xa438, 0xd504, 0xa438, 0xa802, 0xa438, 0xd500, 0xa438, 0x1000, + 0xa438, 0x16bb, 0xa438, 0xd707, 0xa438, 0x5fb1, 0xa438, 0xd707, + 0xa438, 0x5f10, 0xa438, 0xd505, 0xa438, 0xa402, 0xa438, 0xd503, + 0xa438, 0xd707, 0xa438, 0x41a1, 0xa438, 0xd706, 0xa438, 0x60ba, + 0xa438, 0x60fc, 0xa438, 0x0c07, 0xa438, 0x0204, 0xa438, 0xf009, + 0xa438, 0x0c07, 0xa438, 0x0202, 0xa438, 0xf006, 0xa438, 0x0c07, + 0xa438, 0x0206, 0xa438, 0xf003, 0xa438, 0x0c07, 0xa438, 0x0202, + 0xa438, 0xd500, 0xa438, 0xd703, 0xa438, 0x3181, 0xa438, 0x80e0, + 0xa438, 0x616d, 0xa438, 0xd701, 0xa438, 0x6065, 0xa438, 0x1800, + 0xa438, 0x1229, 0xa438, 0x1000, 0xa438, 0x16bb, 0xa438, 0xd707, + 0xa438, 0x6061, 0xa438, 0xd704, 0xa438, 0x5f7c, 0xa438, 0x1800, + 0xa438, 0x124a, 0xa438, 0xd504, 0xa438, 0x8c0f, 0xa438, 0xd505, + 0xa438, 0xa20e, 0xa438, 0xd500, 0xa438, 0x1000, 0xa438, 0x1871, + 0xa438, 0x1800, 0xa438, 0x1899, 0xa438, 0xd70b, 0xa438, 0x60b0, + 0xa438, 0xd05a, 0xa438, 0xd19a, 0xa438, 0x1800, 0xa438, 0x1aef, + 0xa438, 0xd0ef, 0xa438, 0xd19a, 0xa438, 0x1800, 0xa438, 0x1aef, + 0xa438, 0x1000, 0xa438, 0x1d09, 0xa438, 0xd708, 0xa438, 0x3399, + 0xa438, 0x1b63, 0xa438, 0xd709, 0xa438, 0x5f5d, 0xa438, 0xd70b, + 0xa438, 0x6130, 0xa438, 0xd70d, 0xa438, 0x6163, 0xa438, 0xd709, + 0xa438, 0x430b, 0xa438, 0xd71e, 0xa438, 0x62c2, 0xa438, 0xb401, + 0xa438, 0xf014, 0xa438, 0xc901, 0xa438, 0x1000, 0xa438, 0x810e, + 0xa438, 0xf010, 0xa438, 0xc902, 0xa438, 0x1000, 0xa438, 0x810e, + 0xa438, 0xf00c, 0xa438, 0xce04, 0xa438, 0xcf01, 0xa438, 0xd70a, + 0xa438, 0x5fe2, 0xa438, 0xce04, 0xa438, 0xcf02, 0xa438, 0xc900, + 0xa438, 0xd70a, 0xa438, 0x4057, 0xa438, 0xb401, 0xa438, 0x0800, + 0xa438, 0x1800, 0xa438, 0x1b5d, 0xa438, 0xa480, 0xa438, 0xa2b0, + 0xa438, 0xa806, 0xa438, 0x1800, 0xa438, 0x225c, 0xa438, 0xa7e8, + 0xa438, 0xac08, 0xa438, 0x1800, 0xa438, 0x1a4e, 0xa436, 0xA026, + 0xa438, 0x1a4d, 0xa436, 0xA024, 0xa438, 0x225a, 0xa436, 0xA022, + 0xa438, 0x1b53, 0xa436, 0xA020, 0xa438, 0x1aed, 0xa436, 0xA006, + 0xa438, 0x1892, 0xa436, 0xA004, 0xa438, 0x11a4, 0xa436, 0xA002, + 0xa438, 0x103c, 0xa436, 0xA000, 0xa438, 0x0ea6, 0xa436, 0xA008, + 0xa438, 0xff00, 0xa436, 0xA016, 0xa438, 0x0000, 0xa436, 0xA012, + 0xa438, 0x0ff8, 0xa436, 0xA014, 0xa438, 0x0000, 0xa438, 0xD098, + 0xa438, 0xc483, 0xa438, 0xc483, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa436, 0xA152, 0xa438, 0x3fff, + 0xa436, 0xA154, 0xa438, 0x0413, 0xa436, 0xA156, 0xa438, 0x1A32, + 0xa436, 0xA158, 0xa438, 0x1CC0, 0xa436, 0xA15A, 0xa438, 0x3fff, + 0xa436, 0xA15C, 0xa438, 0x3fff, 0xa436, 0xA15E, 0xa438, 0x3fff, + 0xa436, 0xA160, 0xa438, 0x3fff, 0xa436, 0xA150, 0xa438, 0x000E, + 0xa436, 0xA016, 0xa438, 0x0020, 0xa436, 0xA012, 0xa438, 0x0000, + 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, 0xa438, 0x1800, + 0xa438, 0x8021, 0xa438, 0x1800, 0xa438, 0x8037, 0xa438, 0x1800, + 0xa438, 0x803f, 0xa438, 0x1800, 0xa438, 0x8084, 0xa438, 0x1800, + 0xa438, 0x80c5, 0xa438, 0x1800, 0xa438, 0x80cc, 0xa438, 0x1800, + 0xa438, 0x80d5, 0xa438, 0xa00a, 0xa438, 0xa280, 0xa438, 0xa404, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x1800, 0xa438, 0x099b, 0xa438, 0x1000, 0xa438, 0x1021, + 0xa438, 0xd700, 0xa438, 0x5fab, 0xa438, 0xa208, 0xa438, 0x8204, + 0xa438, 0xcb38, 0xa438, 0xaa40, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x1800, 0xa438, 0x0b2a, + 0xa438, 0x82a0, 0xa438, 0x8404, 0xa438, 0xa110, 0xa438, 0xd706, + 0xa438, 0x4041, 0xa438, 0xa180, 0xa438, 0x1800, 0xa438, 0x0e7f, + 0xa438, 0x8190, 0xa438, 0xcb93, 0xa438, 0x1000, 0xa438, 0x0ef4, + 0xa438, 0xd704, 0xa438, 0x7fb8, 0xa438, 0xa008, 0xa438, 0xd706, + 0xa438, 0x4040, 0xa438, 0xa002, 0xa438, 0xd705, 0xa438, 0x4079, + 0xa438, 0x1000, 0xa438, 0x10ad, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x85f0, 0xa438, 0x9503, 0xa438, 0xd705, 0xa438, 0x40d9, + 0xa438, 0xd70c, 0xa438, 0x6083, 0xa438, 0x0c1f, 0xa438, 0x0d09, + 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x0d0a, 0xa438, 0x0cc0, + 0xa438, 0x0d80, 0xa438, 0x1000, 0xa438, 0x104f, 0xa438, 0x1000, + 0xa438, 0x0ef4, 0xa438, 0x8020, 0xa438, 0xd705, 0xa438, 0x40d9, + 0xa438, 0xd704, 0xa438, 0x609f, 0xa438, 0xd70c, 0xa438, 0x6043, + 0xa438, 0x8504, 0xa438, 0xcb94, 0xa438, 0x1000, 0xa438, 0x0ef4, + 0xa438, 0xd706, 0xa438, 0x7fa2, 0xa438, 0x800a, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0x0cf0, 0xa438, 0x05a0, 0xa438, 0x9503, + 0xa438, 0xd705, 0xa438, 0x40b9, 0xa438, 0x0c1f, 0xa438, 0x0d00, + 0xa438, 0x8dc0, 0xa438, 0xf005, 0xa438, 0xa190, 0xa438, 0x0c1f, + 0xa438, 0x0d17, 0xa438, 0x8dc0, 0xa438, 0x1000, 0xa438, 0x104f, + 0xa438, 0xd705, 0xa438, 0x39cc, 0xa438, 0x0c7d, 0xa438, 0x1800, + 0xa438, 0x0e67, 0xa438, 0xcb96, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xab05, 0xa438, 0xac04, 0xa438, 0xac08, 0xa438, 0x9503, + 0xa438, 0x0c1f, 0xa438, 0x0d00, 0xa438, 0x8dc0, 0xa438, 0x1000, + 0xa438, 0x104f, 0xa438, 0x1000, 0xa438, 0x1021, 0xa438, 0xd706, + 0xa438, 0x2215, 0xa438, 0x8099, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xae02, 0xa438, 0x9503, 0xa438, 0xd706, 0xa438, 0x6451, + 0xa438, 0xd71f, 0xa438, 0x2e70, 0xa438, 0x0f00, 0xa438, 0xd706, + 0xa438, 0x3290, 0xa438, 0x80be, 0xa438, 0xd704, 0xa438, 0x2e70, + 0xa438, 0x8090, 0xa438, 0xd706, 0xa438, 0x339c, 0xa438, 0x8090, + 0xa438, 0x8718, 0xa438, 0x8910, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xc500, 0xa438, 0x9503, 0xa438, 0x0c1f, 0xa438, 0x0d17, + 0xa438, 0x8dc0, 0xa438, 0x1000, 0xa438, 0x104f, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0x8c04, 0xa438, 0x9503, 0xa438, 0xa00a, + 0xa438, 0xa190, 0xa438, 0xa280, 0xa438, 0xa404, 0xa438, 0x1800, + 0xa438, 0x0f35, 0xa438, 0x1800, 0xa438, 0x0f07, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0x8c08, 0xa438, 0x8c04, 0xa438, 0x9503, + 0xa438, 0x1800, 0xa438, 0x0f02, 0xa438, 0x1000, 0xa438, 0x1021, + 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xaa10, 0xa438, 0x1800, + 0xa438, 0x0c6b, 0xa438, 0x82a0, 0xa438, 0x8406, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0xac04, 0xa438, 0x8602, 0xa438, 0x9503, + 0xa438, 0x1800, 0xa438, 0x0e09, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x8308, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0xc555, 0xa438, 0x9503, 0xa438, 0xa728, + 0xa438, 0x8440, 0xa438, 0x0c03, 0xa438, 0x0901, 0xa438, 0x8801, + 0xa438, 0xd700, 0xa438, 0x4040, 0xa438, 0xa801, 0xa438, 0xd701, + 0xa438, 0x4052, 0xa438, 0xa810, 0xa438, 0xd701, 0xa438, 0x4054, + 0xa438, 0xa820, 0xa438, 0xd701, 0xa438, 0x4057, 0xa438, 0xa640, + 0xa438, 0xd704, 0xa438, 0x4046, 0xa438, 0xa840, 0xa438, 0xd706, + 0xa438, 0x40b5, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xae20, + 0xa438, 0x9503, 0xa438, 0xd401, 0xa438, 0x1000, 0xa438, 0x0fcf, + 0xa438, 0x1000, 0xa438, 0x0fda, 0xa438, 0x1000, 0xa438, 0x1008, + 0xa438, 0x1000, 0xa438, 0x0fe3, 0xa438, 0xcc00, 0xa438, 0x80c0, + 0xa438, 0x8103, 0xa438, 0x83e0, 0xa438, 0xd71e, 0xa438, 0x2318, + 0xa438, 0x01ae, 0xa438, 0xd704, 0xa438, 0x40bc, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0x8302, 0xa438, 0x9503, 0xa438, 0xb801, + 0xa438, 0xd706, 0xa438, 0x2b59, 0xa438, 0x07f8, 0xa438, 0xd700, + 0xa438, 0x2109, 0xa438, 0x04ab, 0xa438, 0xa508, 0xa438, 0xcb15, + 0xa438, 0xd70c, 0xa438, 0x430c, 0xa438, 0x1000, 0xa438, 0x10ca, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa108, 0xa438, 0x9503, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c1f, 0xa438, 0x0f13, + 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x1021, 0xa438, 0xd70c, + 0xa438, 0x5fb3, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8f1f, + 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x1021, 0xa438, 0xd70c, + 0xa438, 0x7f33, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c0f, + 0xa438, 0x0d00, 0xa438, 0x0c70, 0xa438, 0x0b00, 0xa438, 0xab08, + 0xa438, 0x9503, 0xa438, 0xd704, 0xa438, 0x3cf1, 0xa438, 0x01f9, + 0xa438, 0x0c1f, 0xa438, 0x0d11, 0xa438, 0xf003, 0xa438, 0x0c1f, + 0xa438, 0x0d0d, 0xa438, 0x0cc0, 0xa438, 0x0d40, 0xa438, 0x1000, + 0xa438, 0x104f, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xab80, + 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x1021, 0xa438, 0xa940, + 0xa438, 0xd700, 0xa438, 0x5f99, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x8b80, 0xa438, 0x9503, 0xa438, 0x8940, 0xa438, 0xd700, + 0xa438, 0x5bbf, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8b08, + 0xa438, 0x9503, 0xa438, 0xba20, 0xa438, 0xd704, 0xa438, 0x4100, + 0xa438, 0xd115, 0xa438, 0xd04f, 0xa438, 0xf001, 0xa438, 0x1000, + 0xa438, 0x1021, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0x0c0f, 0xa438, 0x0d00, 0xa438, 0x0c70, + 0xa438, 0x0b10, 0xa438, 0xab08, 0xa438, 0x9503, 0xa438, 0xd704, + 0xa438, 0x3cf1, 0xa438, 0x8178, 0xa438, 0x0c1f, 0xa438, 0x0d11, + 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x0d0d, 0xa438, 0x0cc0, + 0xa438, 0x0d40, 0xa438, 0x1000, 0xa438, 0x104f, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0xab80, 0xa438, 0x9503, 0xa438, 0x1000, + 0xa438, 0x1021, 0xa438, 0xd706, 0xa438, 0x5fad, 0xa438, 0xd407, + 0xa438, 0x1000, 0xa438, 0x0fcf, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x8b88, 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x1021, + 0xa438, 0xd702, 0xa438, 0x7fa4, 0xa438, 0xd706, 0xa438, 0x61bf, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c30, 0xa438, 0x0110, + 0xa438, 0xa304, 0xa438, 0x9503, 0xa438, 0xd199, 0xa438, 0xd04b, + 0xa438, 0x1000, 0xa438, 0x1021, 0xa438, 0xd700, 0xa438, 0x5fb4, + 0xa438, 0xd704, 0xa438, 0x3cf1, 0xa438, 0x81a5, 0xa438, 0x0c1f, + 0xa438, 0x0d02, 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x0d01, + 0xa438, 0x0cc0, 0xa438, 0x0d40, 0xa438, 0xa420, 0xa438, 0x8720, + 0xa438, 0x1000, 0xa438, 0x104f, 0xa438, 0x1000, 0xa438, 0x0fda, + 0xa438, 0xd70c, 0xa438, 0x41ac, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x8108, 0xa438, 0x9503, 0xa438, 0x0cc0, 0xa438, 0x0040, + 0xa438, 0x0c03, 0xa438, 0x0102, 0xa438, 0x0ce0, 0xa438, 0x03e0, + 0xa438, 0xccce, 0xa438, 0xf008, 0xa438, 0x0cc0, 0xa438, 0x0040, + 0xa438, 0x0c03, 0xa438, 0x0100, 0xa438, 0x0ce0, 0xa438, 0x0380, + 0xa438, 0xcc9c, 0xa438, 0x1000, 0xa438, 0x103f, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0xa640, 0xa438, 0x9503, 0xa438, 0xcb16, + 0xa438, 0xd706, 0xa438, 0x6129, 0xa438, 0xd70c, 0xa438, 0x608c, + 0xa438, 0xd17a, 0xa438, 0xd04a, 0xa438, 0xf006, 0xa438, 0xd17a, + 0xa438, 0xd04b, 0xa438, 0xf003, 0xa438, 0xd13d, 0xa438, 0xd04b, + 0xa438, 0x0c1f, 0xa438, 0x0f14, 0xa438, 0xcb17, 0xa438, 0x8fc0, + 0xa438, 0x1000, 0xa438, 0x0fbd, 0xa438, 0xaf40, 0xa438, 0x1000, + 0xa438, 0x0fbd, 0xa438, 0x0cc0, 0xa438, 0x0f80, 0xa438, 0x1000, + 0xa438, 0x0fbd, 0xa438, 0xafc0, 0xa438, 0x1000, 0xa438, 0x0fbd, + 0xa438, 0x1000, 0xa438, 0x1021, 0xa438, 0xd701, 0xa438, 0x652e, + 0xa438, 0xd700, 0xa438, 0x5db4, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x8640, 0xa438, 0xa702, 0xa438, 0x9503, 0xa438, 0xa720, + 0xa438, 0x1000, 0xa438, 0x0fda, 0xa438, 0xa108, 0xa438, 0x1000, + 0xa438, 0x0fec, 0xa438, 0x8108, 0xa438, 0x1000, 0xa438, 0x0fe3, + 0xa438, 0xa202, 0xa438, 0xa308, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x8308, 0xa438, 0xcb18, + 0xa438, 0x1000, 0xa438, 0x10c2, 0xa438, 0x1000, 0xa438, 0x1021, + 0xa438, 0xd70c, 0xa438, 0x2c60, 0xa438, 0x02bd, 0xa438, 0xff58, + 0xa438, 0x8f1f, 0xa438, 0x1000, 0xa438, 0x1021, 0xa438, 0xd701, + 0xa438, 0x7f8e, 0xa438, 0x1000, 0xa438, 0x0fe3, 0xa438, 0xa130, + 0xa438, 0xaa2f, 0xa438, 0xa2d5, 0xa438, 0xa407, 0xa438, 0xa720, + 0xa438, 0x8310, 0xa438, 0xa308, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x8308, 0xa438, 0x1800, + 0xa438, 0x02d2, 0xa436, 0xA10E, 0xa438, 0x017f, 0xa436, 0xA10C, + 0xa438, 0x0e04, 0xa436, 0xA10A, 0xa438, 0x0c67, 0xa436, 0xA108, + 0xa438, 0x0f13, 0xa436, 0xA106, 0xa438, 0x0eb1, 0xa436, 0xA104, + 0xa438, 0x0e79, 0xa436, 0xA102, 0xa438, 0x0b23, 0xa436, 0xA100, + 0xa438, 0x0908, 0xa436, 0xA110, 0xa438, 0x00ff, 0xa436, 0xb87c, + 0xa438, 0x8ad8, 0xa436, 0xb87e, 0xa438, 0xaf8a, 0xa438, 0xf0af, + 0xa438, 0x8af9, 0xa438, 0xaf8d, 0xa438, 0xdaaf, 0xa438, 0x8e1c, + 0xa438, 0xaf8f, 0xa438, 0x03af, 0xa438, 0x8f06, 0xa438, 0xaf8f, + 0xa438, 0x06af, 0xa438, 0x8f06, 0xa438, 0x0265, 0xa438, 0xa002, + 0xa438, 0x8d78, 0xa438, 0xaf23, 0xa438, 0x47a1, 0xa438, 0x0d06, + 0xa438, 0x028b, 0xa438, 0x05af, 0xa438, 0x225a, 0xa438, 0xaf22, + 0xa438, 0x66f8, 0xa438, 0xe08a, 0xa438, 0x33a0, 0xa438, 0x0005, + 0xa438, 0x028b, 0xa438, 0x21ae, 0xa438, 0x0ea0, 0xa438, 0x0105, + 0xa438, 0x028b, 0xa438, 0xb3ae, 0xa438, 0x06a0, 0xa438, 0x0203, + 0xa438, 0x028c, 0xa438, 0x9dfc, 0xa438, 0x04f8, 0xa438, 0xfbfa, + 0xa438, 0xef69, 0xa438, 0xe080, 0xa438, 0x13ad, 0xa438, 0x267e, + 0xa438, 0xd067, 0xa438, 0xe48a, 0xa438, 0x34e4, 0xa438, 0x8a36, + 0xa438, 0xe48a, 0xa438, 0x38e4, 0xa438, 0x8a3a, 0xa438, 0xd0ae, + 0xa438, 0xe48a, 0xa438, 0x35e4, 0xa438, 0x8a37, 0xa438, 0xe48a, + 0xa438, 0x39e4, 0xa438, 0x8a3b, 0xa438, 0xd000, 0xa438, 0xe48a, + 0xa438, 0x3ce4, 0xa438, 0x8a3d, 0xa438, 0xe48a, 0xa438, 0x3ee4, + 0xa438, 0x8a3f, 0xa438, 0xe48a, 0xa438, 0x40e4, 0xa438, 0x8a41, + 0xa438, 0xe48a, 0xa438, 0x42e4, 0xa438, 0x8a43, 0xa438, 0xe48a, + 0xa438, 0x44d0, 0xa438, 0x02e4, 0xa438, 0x8a45, 0xa438, 0xd00a, + 0xa438, 0xe48a, 0xa438, 0x46d0, 0xa438, 0x16e4, 0xa438, 0x8a47, + 0xa438, 0xd01e, 0xa438, 0xe48a, 0xa438, 0x48d1, 0xa438, 0x02bf, + 0xa438, 0x8dce, 0xa438, 0x026b, 0xa438, 0xd0d1, 0xa438, 0x0abf, + 0xa438, 0x8dd1, 0xa438, 0x026b, 0xa438, 0xd0d1, 0xa438, 0x16bf, + 0xa438, 0x8dd4, 0xa438, 0x026b, 0xa438, 0xd0d1, 0xa438, 0x1ebf, + 0xa438, 0x8dd7, 0xa438, 0x026b, 0xa438, 0xd002, 0xa438, 0x73ab, + 0xa438, 0xef47, 0xa438, 0xe585, 0xa438, 0x5de4, 0xa438, 0x855c, + 0xa438, 0xee8a, 0xa438, 0x3301, 0xa438, 0xae03, 0xa438, 0x0224, + 0xa438, 0x95ef, 0xa438, 0x96fe, 0xa438, 0xfffc, 0xa438, 0x04f8, + 0xa438, 0xf9fa, 0xa438, 0xcefa, 0xa438, 0xef69, 0xa438, 0xfb02, + 0xa438, 0x8dab, 0xa438, 0xad50, 0xa438, 0x2ee1, 0xa438, 0x8a44, + 0xa438, 0xa104, 0xa438, 0x2bee, 0xa438, 0x8a33, 0xa438, 0x02e1, + 0xa438, 0x8a45, 0xa438, 0xbf8d, 0xa438, 0xce02, 0xa438, 0x6bd0, + 0xa438, 0xe18a, 0xa438, 0x46bf, 0xa438, 0x8dd1, 0xa438, 0x026b, + 0xa438, 0xd0e1, 0xa438, 0x8a47, 0xa438, 0xbf8d, 0xa438, 0xd402, + 0xa438, 0x6bd0, 0xa438, 0xe18a, 0xa438, 0x48bf, 0xa438, 0x8dd7, + 0xa438, 0x026b, 0xa438, 0xd0af, 0xa438, 0x8c94, 0xa438, 0xd200, + 0xa438, 0xbe00, 0xa438, 0x0002, 0xa438, 0x8ca5, 0xa438, 0x12a2, + 0xa438, 0x04f6, 0xa438, 0xe18a, 0xa438, 0x44a1, 0xa438, 0x0020, + 0xa438, 0xd129, 0xa438, 0xbf8d, 0xa438, 0xce02, 0xa438, 0x6bd0, + 0xa438, 0xd121, 0xa438, 0xbf8d, 0xa438, 0xd102, 0xa438, 0x6bd0, + 0xa438, 0xd125, 0xa438, 0xbf8d, 0xa438, 0xd402, 0xa438, 0x6bd0, + 0xa438, 0xbf8d, 0xa438, 0xd702, 0xa438, 0x6bd0, 0xa438, 0xae44, + 0xa438, 0xa101, 0xa438, 0x1ed1, 0xa438, 0x31bf, 0xa438, 0x8dce, + 0xa438, 0x026b, 0xa438, 0xd0bf, 0xa438, 0x8dd1, 0xa438, 0x026b, + 0xa438, 0xd0d1, 0xa438, 0x2dbf, 0xa438, 0x8dd4, 0xa438, 0x026b, + 0xa438, 0xd0bf, 0xa438, 0x8dd7, 0xa438, 0x026b, 0xa438, 0xd0ae, + 0xa438, 0x23a1, 0xa438, 0x0220, 0xa438, 0xd139, 0xa438, 0xbf8d, + 0xa438, 0xce02, 0xa438, 0x6bd0, 0xa438, 0xbf8d, 0xa438, 0xd102, + 0xa438, 0x6bd0, 0xa438, 0xd13d, 0xa438, 0xbf8d, 0xa438, 0xd402, + 0xa438, 0x6bd0, 0xa438, 0xd135, 0xa438, 0xbf8d, 0xa438, 0xd702, + 0xa438, 0x6bd0, 0xa438, 0xae00, 0xa438, 0xe18a, 0xa438, 0x4411, + 0xa438, 0xe58a, 0xa438, 0x44d0, 0xa438, 0x00e4, 0xa438, 0x8a3c, + 0xa438, 0xe48a, 0xa438, 0x3de4, 0xa438, 0x8a3e, 0xa438, 0xe48a, + 0xa438, 0x3fe4, 0xa438, 0x8a40, 0xa438, 0xe48a, 0xa438, 0x41e4, + 0xa438, 0x8a42, 0xa438, 0xe48a, 0xa438, 0x4302, 0xa438, 0x73ab, + 0xa438, 0xef47, 0xa438, 0xe585, 0xa438, 0x5de4, 0xa438, 0x855c, + 0xa438, 0xffef, 0xa438, 0x96fe, 0xa438, 0xc6fe, 0xa438, 0xfdfc, + 0xa438, 0x0402, 0xa438, 0x2495, 0xa438, 0xee8a, 0xa438, 0x3300, + 0xa438, 0x04f8, 0xa438, 0xf9fa, 0xa438, 0xfbef, 0xa438, 0x79fb, + 0xa438, 0xcffb, 0xa438, 0xd300, 0xa438, 0xa200, 0xa438, 0x09bf, + 0xa438, 0x8dc2, 0xa438, 0x026b, 0xa438, 0xefaf, 0xa438, 0x8cda, + 0xa438, 0xa201, 0xa438, 0x09bf, 0xa438, 0x8dc5, 0xa438, 0x026b, + 0xa438, 0xefaf, 0xa438, 0x8cda, 0xa438, 0xa202, 0xa438, 0x09bf, + 0xa438, 0x8dc8, 0xa438, 0x026b, 0xa438, 0xefaf, 0xa438, 0x8cda, + 0xa438, 0xbf8d, 0xa438, 0xcb02, 0xa438, 0x6bef, 0xa438, 0xef64, + 0xa438, 0xbf8a, 0xa438, 0x3c1a, 0xa438, 0x921a, 0xa438, 0x92d8, + 0xa438, 0x19d9, 0xa438, 0xef74, 0xa438, 0x0273, 0xa438, 0x93ef, + 0xa438, 0x47bf, 0xa438, 0x8a3c, 0xa438, 0x1a92, 0xa438, 0x1a92, + 0xa438, 0xdc19, 0xa438, 0xddd1, 0xa438, 0x0011, 0xa438, 0xa1ff, + 0xa438, 0xfc13, 0xa438, 0xa310, 0xa438, 0xaf02, 0xa438, 0x8d0e, + 0xa438, 0xffc7, 0xa438, 0xffef, 0xa438, 0x97ff, 0xa438, 0xfefd, + 0xa438, 0xfc04, 0xa438, 0xf8fa, 0xa438, 0xfbef, 0xa438, 0x79fb, + 0xa438, 0xcffb, 0xa438, 0xbf8a, 0xa438, 0x3c1a, 0xa438, 0x921a, + 0xa438, 0x92d8, 0xa438, 0x19d9, 0xa438, 0xef64, 0xa438, 0xbf8a, + 0xa438, 0x341a, 0xa438, 0x921a, 0xa438, 0x92d8, 0xa438, 0x19d9, + 0xa438, 0xef74, 0xa438, 0x0273, 0xa438, 0x78a2, 0xa438, 0x0005, + 0xa438, 0xbe8d, 0xa438, 0xceae, 0xa438, 0x13a2, 0xa438, 0x0105, + 0xa438, 0xbe8d, 0xa438, 0xd1ae, 0xa438, 0x0ba2, 0xa438, 0x0205, + 0xa438, 0xbe8d, 0xa438, 0xd4ae, 0xa438, 0x03be, 0xa438, 0x8dd7, + 0xa438, 0xad50, 0xa438, 0x17bf, 0xa438, 0x8a45, 0xa438, 0x1a92, + 0xa438, 0x0702, 0xa438, 0x6bef, 0xa438, 0x07dd, 0xa438, 0xef46, + 0xa438, 0xbf8a, 0xa438, 0x341a, 0xa438, 0x921a, 0xa438, 0x92dc, + 0xa438, 0x19dd, 0xa438, 0xffc7, 0xa438, 0xffef, 0xa438, 0x97ff, + 0xa438, 0xfefc, 0xa438, 0x04ee, 0xa438, 0x8a33, 0xa438, 0x00ee, + 0xa438, 0x8a32, 0xa438, 0x0404, 0xa438, 0xf8fa, 0xa438, 0xef69, + 0xa438, 0xe080, 0xa438, 0x13ad, 0xa438, 0x2624, 0xa438, 0xd102, + 0xa438, 0xbf8d, 0xa438, 0xce02, 0xa438, 0x6bd0, 0xa438, 0xd10a, + 0xa438, 0xbf8d, 0xa438, 0xd102, 0xa438, 0x6bd0, 0xa438, 0xd116, + 0xa438, 0xbf8d, 0xa438, 0xd402, 0xa438, 0x6bd0, 0xa438, 0xd11e, + 0xa438, 0xbf8d, 0xa438, 0xd702, 0xa438, 0x6bd0, 0xa438, 0xee8a, + 0xa438, 0x3300, 0xa438, 0xef96, 0xa438, 0xfefc, 0xa438, 0x04f8, + 0xa438, 0xfae0, 0xa438, 0x855c, 0xa438, 0xe185, 0xa438, 0x5def, + 0xa438, 0x64d0, 0xa438, 0x00e1, 0xa438, 0x8a32, 0xa438, 0xef74, + 0xa438, 0x0273, 0xa438, 0xc6fe, 0xa438, 0xfc04, 0xa438, 0xf0b2, + 0xa438, 0x02f0, 0xa438, 0xb282, 0xa438, 0xf0b3, 0xa438, 0x02f0, + 0xa438, 0xb382, 0xa438, 0x50ac, 0xa438, 0xd450, 0xa438, 0xacd6, + 0xa438, 0xb6ac, 0xa438, 0xd4b6, 0xa438, 0xacd6, 0xa438, 0xbf8e, + 0xa438, 0x0d02, 0xa438, 0x6bd0, 0xa438, 0xd0ff, 0xa438, 0xd1fe, + 0xa438, 0xbf8e, 0xa438, 0x1002, 0xa438, 0x6bd0, 0xa438, 0xd004, + 0xa438, 0xd14d, 0xa438, 0xbf8e, 0xa438, 0x1302, 0xa438, 0x6bd0, + 0xa438, 0xd0fc, 0xa438, 0xd1c6, 0xa438, 0xbf8e, 0xa438, 0x1602, + 0xa438, 0x6bd0, 0xa438, 0xd009, 0xa438, 0xd146, 0xa438, 0xbf8e, + 0xa438, 0x1902, 0xa438, 0x6bd0, 0xa438, 0xef13, 0xa438, 0xaf2d, + 0xa438, 0xbdf0, 0xa438, 0xac1c, 0xa438, 0xf0ac, 0xa438, 0x2af0, + 0xa438, 0xac2c, 0xa438, 0xf0ac, 0xa438, 0x2ef0, 0xa438, 0xac30, + 0xa438, 0xbf8e, 0xa438, 0xf102, 0xa438, 0x6bef, 0xa438, 0xac28, + 0xa438, 0x70bf, 0xa438, 0x8eeb, 0xa438, 0x026b, 0xa438, 0xefac, + 0xa438, 0x2867, 0xa438, 0xbf8e, 0xa438, 0xee02, 0xa438, 0x6bef, + 0xa438, 0xad28, 0xa438, 0x5bbf, 0xa438, 0x8ff2, 0xa438, 0xd8bf, + 0xa438, 0x8ff3, 0xa438, 0xd9bf, 0xa438, 0x8ef4, 0xa438, 0x026b, + 0xa438, 0xd0bf, 0xa438, 0x8ff0, 0xa438, 0xd8bf, 0xa438, 0x8ff1, + 0xa438, 0xd9bf, 0xa438, 0x8ef7, 0xa438, 0x026b, 0xa438, 0xd0bf, + 0xa438, 0x8fee, 0xa438, 0xd8bf, 0xa438, 0x8fef, 0xa438, 0xd9bf, + 0xa438, 0x8efa, 0xa438, 0x026b, 0xa438, 0xd0bf, 0xa438, 0x8fec, + 0xa438, 0xd8bf, 0xa438, 0x8fed, 0xa438, 0xd9bf, 0xa438, 0x8efd, + 0xa438, 0x026b, 0xa438, 0xd0bf, 0xa438, 0x8fea, 0xa438, 0xd8bf, + 0xa438, 0x8feb, 0xa438, 0xd9bf, 0xa438, 0x8f00, 0xa438, 0x026b, + 0xa438, 0xd0bf, 0xa438, 0x8fe8, 0xa438, 0xd8bf, 0xa438, 0x8fe9, + 0xa438, 0xd9bf, 0xa438, 0x8e0d, 0xa438, 0x026b, 0xa438, 0xd01f, + 0xa438, 0x00e1, 0xa438, 0x86ee, 0xa438, 0x1b64, 0xa438, 0xaf3d, + 0xa438, 0x7abf, 0xa438, 0x8ffe, 0xa438, 0xd8bf, 0xa438, 0x8fff, + 0xa438, 0xd9bf, 0xa438, 0x8ef4, 0xa438, 0x026b, 0xa438, 0xd0bf, + 0xa438, 0x8ffc, 0xa438, 0xd8bf, 0xa438, 0x8ffd, 0xa438, 0xd9bf, + 0xa438, 0x8ef7, 0xa438, 0x026b, 0xa438, 0xd0bf, 0xa438, 0x8ffa, + 0xa438, 0xd8bf, 0xa438, 0x8ffb, 0xa438, 0xd9bf, 0xa438, 0x8efa, + 0xa438, 0x026b, 0xa438, 0xd0bf, 0xa438, 0x8ff8, 0xa438, 0xd8bf, + 0xa438, 0x8ff9, 0xa438, 0xd9bf, 0xa438, 0x8efd, 0xa438, 0x026b, + 0xa438, 0xd0bf, 0xa438, 0x8ff6, 0xa438, 0xd8bf, 0xa438, 0x8ff7, + 0xa438, 0xd9bf, 0xa438, 0x8f00, 0xa438, 0x026b, 0xa438, 0xd0bf, + 0xa438, 0x8ff4, 0xa438, 0xd8bf, 0xa438, 0x8ff5, 0xa438, 0xd9bf, + 0xa438, 0x8e0d, 0xa438, 0x026b, 0xa438, 0xd0ae, 0xa438, 0xa766, + 0xa438, 0xac5c, 0xa438, 0xbbac, 0xa438, 0x5c99, 0xa438, 0xac5c, + 0xa438, 0xf0ac, 0xa438, 0x26f0, 0xa438, 0xac24, 0xa438, 0xf0ac, + 0xa438, 0x22f0, 0xa438, 0xac20, 0xa438, 0xf0ac, 0xa438, 0x1eaf, + 0xa438, 0x44f8, 0xa436, 0xb85e, 0xa438, 0x2344, 0xa436, 0xb860, + 0xa438, 0x2254, 0xa436, 0xb862, 0xa438, 0x2DB5, 0xa436, 0xb864, + 0xa438, 0x3D6C, 0xa436, 0xb886, 0xa438, 0x44ED, 0xa436, 0xb888, + 0xa438, 0xffff, 0xa436, 0xb88a, 0xa438, 0xffff, 0xa436, 0xb88c, + 0xa438, 0xffff, 0xa436, 0xb838, 0xa438, 0x001f, 0xb820, 0x0010, + 0xa436, 0x87ad, 0xa438, 0xaf87, 0xa438, 0xc5af, 0xa438, 0x87e4, + 0xa438, 0xaf8a, 0xa438, 0x3daf, 0xa438, 0x8a62, 0xa438, 0xaf8a, + 0xa438, 0x62af, 0xa438, 0x8a62, 0xa438, 0xaf8a, 0xa438, 0x62af, + 0xa438, 0x8a62, 0xa438, 0x2810, 0xa438, 0x0d01, 0xa438, 0xe484, + 0xa438, 0xbf29, 0xa438, 0x100d, 0xa438, 0x11e5, 0xa438, 0x84c0, + 0xa438, 0x2a10, 0xa438, 0x0d21, 0xa438, 0xe684, 0xa438, 0xc12b, + 0xa438, 0x100d, 0xa438, 0x31e7, 0xa438, 0x84c2, 0xa438, 0xaf3f, + 0xa438, 0x7cf8, 0xa438, 0xe080, 0xa438, 0x4cac, 0xa438, 0x222c, + 0xa438, 0xe080, 0xa438, 0x40ad, 0xa438, 0x2232, 0xa438, 0xbf8a, + 0xa438, 0x2502, 0xa438, 0x6752, 0xa438, 0xad29, 0xa438, 0x0502, + 0xa438, 0x8827, 0xa438, 0xae0d, 0xa438, 0xad28, 0xa438, 0x0502, + 0xa438, 0x8961, 0xa438, 0xae05, 0xa438, 0x0214, 0xa438, 0x04ae, + 0xa438, 0x00e0, 0xa438, 0x8040, 0xa438, 0xac22, 0xa438, 0x1102, + 0xa438, 0x13e1, 0xa438, 0xae0c, 0xa438, 0x0288, 0xa438, 0x7c02, + 0xa438, 0x8a10, 0xa438, 0x0214, 0xa438, 0x2502, 0xa438, 0x1404, + 0xa438, 0xfcaf, 0xa438, 0x13c6, 0xa438, 0xf8f8, 0xa438, 0xccf9, + 0xa438, 0xfaef, 0xa438, 0x69fb, 0xa438, 0xe080, 0xa438, 0x18ad, + 0xa438, 0x223b, 0xa438, 0xbf8a, 0xa438, 0x2b02, 0xa438, 0x6752, + 0xa438, 0xad28, 0xa438, 0x32bf, 0xa438, 0x8a28, 0xa438, 0x026f, + 0xa438, 0x17ee, 0xa438, 0x8ff3, 0xa438, 0x00bf, 0xa438, 0x6854, + 0xa438, 0x0267, 0xa438, 0x52ad, 0xa438, 0x281f, 0xa438, 0xbf68, + 0xa438, 0x5d02, 0xa438, 0x6752, 0xa438, 0xad28, 0xa438, 0x16e0, + 0xa438, 0x8ff4, 0xa438, 0xe18f, 0xa438, 0xf502, 0xa438, 0x8891, + 0xa438, 0xad50, 0xa438, 0x0abf, 0xa438, 0x8a28, 0xa438, 0x026f, + 0xa438, 0x20ee, 0xa438, 0x8ff3, 0xa438, 0x0102, 0xa438, 0x1404, + 0xa438, 0xffef, 0xa438, 0x96fe, 0xa438, 0xfdc4, 0xa438, 0xfcfc, + 0xa438, 0x04f8, 0xa438, 0xf9ef, 0xa438, 0x59e0, 0xa438, 0x8018, + 0xa438, 0xad22, 0xa438, 0x06bf, 0xa438, 0x8a28, 0xa438, 0x026f, + 0xa438, 0x17ef, 0xa438, 0x95fd, 0xa438, 0xfc04, 0xa438, 0xf8f9, + 0xa438, 0xf9ef, 0xa438, 0x59fa, 0xa438, 0xface, 0xa438, 0xe48f, + 0xa438, 0xfee5, 0xa438, 0x8fff, 0xa438, 0xbf6e, 0xa438, 0x1b02, + 0xa438, 0x6f20, 0xa438, 0xbf6e, 0xa438, 0x1802, 0xa438, 0x6f17, + 0xa438, 0xd102, 0xa438, 0xbf6e, 0xa438, 0x1202, 0xa438, 0x6733, + 0xa438, 0xbf6e, 0xa438, 0x1502, 0xa438, 0x6f17, 0xa438, 0xbe00, + 0xa438, 0x00cc, 0xa438, 0xbf69, 0xa438, 0xcb02, 0xa438, 0x6733, + 0xa438, 0xbf69, 0xa438, 0xce02, 0xa438, 0x6f17, 0xa438, 0xbf69, + 0xa438, 0xce02, 0xa438, 0x6f20, 0xa438, 0xbf69, 0xa438, 0xd102, + 0xa438, 0x6752, 0xa438, 0xad28, 0xa438, 0xf70c, 0xa438, 0x81bf, + 0xa438, 0x8ff6, 0xa438, 0x1a98, 0xa438, 0xef59, 0xa438, 0xbf69, + 0xa438, 0xd402, 0xa438, 0x6752, 0xa438, 0xef95, 0xa438, 0xdc19, + 0xa438, 0xdd0d, 0xa438, 0x8118, 0xa438, 0xa800, 0xa438, 0x04c9, + 0xa438, 0xbf69, 0xa438, 0xce02, 0xa438, 0x6f17, 0xa438, 0xe08f, + 0xa438, 0xfce1, 0xa438, 0x8ffd, 0xa438, 0xef74, 0xa438, 0xe08f, + 0xa438, 0xfae1, 0xa438, 0x8ffb, 0xa438, 0xef64, 0xa438, 0x026e, + 0xa438, 0x57ad, 0xa438, 0x5008, 0xa438, 0xe08f, 0xa438, 0xfce1, + 0xa438, 0x8ffd, 0xa438, 0xae06, 0xa438, 0xe08f, 0xa438, 0xfae1, + 0xa438, 0x8ffb, 0xa438, 0xe28f, 0xa438, 0xf8e3, 0xa438, 0x8ff9, + 0xa438, 0xef75, 0xa438, 0xe28f, 0xa438, 0xf6e3, 0xa438, 0x8ff7, + 0xa438, 0xef65, 0xa438, 0x026e, 0xa438, 0x57ad, 0xa438, 0x5008, + 0xa438, 0xe28f, 0xa438, 0xf8e3, 0xa438, 0x8ff9, 0xa438, 0xae06, + 0xa438, 0xe28f, 0xa438, 0xf6e3, 0xa438, 0x8ff7, 0xa438, 0x1b45, + 0xa438, 0xad27, 0xa438, 0x05d7, 0xa438, 0x0000, 0xa438, 0xae0d, + 0xa438, 0xef74, 0xa438, 0xe08f, 0xa438, 0xfee1, 0xa438, 0x8fff, + 0xa438, 0xef64, 0xa438, 0x026e, 0xa438, 0x57c6, 0xa438, 0xfefe, + 0xa438, 0xef95, 0xa438, 0xfdfd, 0xa438, 0xfc04, 0xa438, 0xf8f9, + 0xa438, 0xfaef, 0xa438, 0x69fb, 0xa438, 0xe080, 0xa438, 0x18ac, + 0xa438, 0x2103, 0xa438, 0xaf8a, 0xa438, 0x06bf, 0xa438, 0x8a2b, + 0xa438, 0xac21, 0xa438, 0x03af, 0xa438, 0x8a06, 0xa438, 0xbf8a, + 0xa438, 0x2802, 0xa438, 0x6f17, 0xa438, 0xee8f, 0xa438, 0xee00, + 0xa438, 0xee8f, 0xa438, 0xed00, 0xa438, 0xbf8a, 0xa438, 0x2e02, + 0xa438, 0x6752, 0xa438, 0xad28, 0xa438, 0x03af, 0xa438, 0x8a06, + 0xa438, 0xe28f, 0xa438, 0xefe3, 0xa438, 0x8ff0, 0xa438, 0xbf68, + 0xa438, 0x5102, 0xa438, 0x6752, 0xa438, 0xac28, 0xa438, 0x11e2, + 0xa438, 0x8ff1, 0xa438, 0xe38f, 0xa438, 0xf2bf, 0xa438, 0x6848, + 0xa438, 0x0267, 0xa438, 0x52ac, 0xa438, 0x2802, 0xa438, 0xae53, + 0xa438, 0xbf68, 0xa438, 0x5a02, 0xa438, 0x6752, 0xa438, 0xad28, + 0xa438, 0x0aef, 0xa438, 0x4502, 0xa438, 0x8891, 0xa438, 0xac50, + 0xa438, 0x38ae, 0xa438, 0x40bf, 0xa438, 0x8a31, 0xa438, 0x0267, + 0xa438, 0x52ef, 0xa438, 0x31bf, 0xa438, 0x8a34, 0xa438, 0x0267, + 0xa438, 0x520c, 0xa438, 0x311e, 0xa438, 0x31bf, 0xa438, 0x8a37, + 0xa438, 0x0267, 0xa438, 0x520c, 0xa438, 0x311e, 0xa438, 0x31bf, + 0xa438, 0x8a3a, 0xa438, 0x0267, 0xa438, 0x520c, 0xa438, 0x311e, + 0xa438, 0x31e7, 0xa438, 0x8fee, 0xa438, 0xa30c, 0xa438, 0x02ae, + 0xa438, 0x08a3, 0xa438, 0x0e02, 0xa438, 0xae03, 0xa438, 0xa30d, + 0xa438, 0x0aee, 0xa438, 0x8fed, 0xa438, 0x01bf, 0xa438, 0x8a28, + 0xa438, 0x026f, 0xa438, 0x2002, 0xa438, 0x1404, 0xa438, 0xffef, + 0xa438, 0x96fe, 0xa438, 0xfdfc, 0xa438, 0x04f8, 0xa438, 0xfaef, + 0xa438, 0x69e0, 0xa438, 0x8018, 0xa438, 0xad21, 0xa438, 0x06bf, + 0xa438, 0x8a28, 0xa438, 0x026f, 0xa438, 0x17ef, 0xa438, 0x96fe, + 0xa438, 0xfc04, 0xa438, 0xf8a4, 0xa438, 0xb677, 0xa438, 0xa4b6, + 0xa438, 0x22a4, 0xa438, 0x4222, 0xa438, 0xa668, 0xa438, 0x00b2, + 0xa438, 0x3e00, 0xa438, 0xb2be, 0xa438, 0x00b3, 0xa438, 0x3e00, + 0xa438, 0xb3be, 0xa438, 0xd10f, 0xa438, 0xbf8a, 0xa438, 0x5c02, + 0xa438, 0x6733, 0xa438, 0xbf8a, 0xa438, 0x5f02, 0xa438, 0x6733, + 0xa438, 0xbf8a, 0xa438, 0x5c02, 0xa438, 0x6f17, 0xa438, 0xbf8a, + 0xa438, 0x5f02, 0xa438, 0x6f17, 0xa438, 0x1f00, 0xa438, 0xaf3d, + 0xa438, 0x0c30, 0xa438, 0xa85a, 0xa438, 0xfcad, 0xa438, 0x0e00, + 0xa436, 0xb818, 0xa438, 0x3f31, 0xa436, 0xb81a, 0xa438, 0x13a4, + 0xa436, 0xb81c, 0xa438, 0x3d0a, 0xa436, 0xb81e, 0xa438, 0xffff, + 0xa436, 0xb850, 0xa438, 0xffff, 0xa436, 0xb852, 0xa438, 0xffff, + 0xa436, 0xb878, 0xa438, 0xffff, 0xa436, 0xb884, 0xa438, 0xffff, + 0xa436, 0xb832, 0xa438, 0x0007, 0xa436, 0x84cf, 0xa438, 0x0101, + 0xa466, 0x0002, 0xa436, 0x86a7, 0xa438, 0x0000, 0xa436, 0x0000, + 0xa438, 0x0000, 0xa436, 0xB82E, 0xa438, 0x0000, 0xa436, 0x8023, + 0xa438, 0x0000, 0xa436, 0x801E, 0xa438, 0x0023, 0xb820, 0x0000, + 0xFFFF, 0xFFFF +}; + +static const u_int16_t phy_mcu_ram_code_8126a_1_2[] = { + 0xB87C, 0x8a32, 0xB87E, 0x0400, 0xB87C, 0x8376, 0xB87E, 0x0300, + 0xce00, 0x6CAF, 0xB87C, 0x8301, 0xB87E, 0x1133, 0xB87C, 0x8105, + 0xB87E, 0xa000, 0xB87C, 0x8148, 0xB87E, 0xa000, 0xa436, 0x81d8, + 0xa438, 0x5865, 0xacf8, 0xCCC0, 0xac90, 0x52B0, 0xad2C, 0x8000, + 0xB87C, 0x83e6, 0xB87E, 0x4A0E, 0xB87C, 0x83d2, 0xB87E, 0x0A0E, + 0xB87C, 0x80a0, 0xB87E, 0xB8B6, 0xB87C, 0x805e, 0xB87E, 0xB8B6, + 0xB87C, 0x8057, 0xB87E, 0x305A, 0xB87C, 0x8099, 0xB87E, 0x305A, + 0xB87C, 0x8052, 0xB87E, 0x3333, 0xB87C, 0x8094, 0xB87E, 0x3333, + 0xB87C, 0x807F, 0xB87E, 0x7975, 0xB87C, 0x803D, 0xB87E, 0x7975, + 0xB87C, 0x8036, 0xB87E, 0x305A, 0xB87C, 0x8078, 0xB87E, 0x305A, + 0xB87C, 0x8031, 0xB87E, 0x3335, 0xB87C, 0x8073, 0xB87E, 0x3335, + 0xa436, 0x81D8, 0xa438, 0x5865, 0xB87C, 0x867c, 0xB87E, 0x0617, + 0xad94, 0x0092, 0xB87C, 0x89B1, 0xB87E, 0x5050, 0xB87C, 0x86E0, + 0xB87E, 0x809A, 0xB87C, 0x86E2, 0xB87E, 0xB34D, 0xB87C, 0x8FD2, + 0xB87E, 0x004B, 0xB87C, 0x8691, 0xB87E, 0x007D, 0xB87E, 0x00AF, + 0xB87E, 0x00E1, 0xB87E, 0x00FF, 0xB87C, 0x867F, 0xB87E, 0x0201, + 0xB87E, 0x0201, 0xB87E, 0x0201, 0xB87E, 0x0201, 0xB87E, 0x0201, + 0xB87E, 0x0201, 0xB87C, 0x86DA, 0xB87E, 0xCDCD, 0xB87E, 0xE6CD, + 0xB87E, 0xCDCD, 0xB87C, 0x8FE8, 0xB87E, 0x0368, 0xB87E, 0x033F, + 0xB87E, 0x1046, 0xB87E, 0x147D, 0xB87E, 0x147D, 0xB87E, 0x147D, + 0xB87E, 0x0368, 0xB87E, 0x033F, 0xB87E, 0x1046, 0xB87E, 0x147D, + 0xB87E, 0x147D, 0xB87E, 0x147D, 0xa436, 0x80dd, 0xa438, 0xf0AB, + 0xa436, 0x80df, 0xa438, 0xC009, 0xa436, 0x80e7, 0xa438, 0x401E, + 0xa436, 0x80e1, 0xa438, 0x120A, 0xa436, 0x86f2, 0xa438, 0x5094, + 0xa436, 0x8701, 0xa438, 0x5094, 0xa436, 0x80f1, 0xa438, 0x30CC, + 0xa436, 0x80f3, 0xa438, 0x0001, 0xa436, 0x80f5, 0xa438, 0x330B, + 0xa436, 0x80f8, 0xa438, 0xCB76, 0xa436, 0x8105, 0xa438, 0xf0D3, + 0xa436, 0x8107, 0xa438, 0x0002, 0xa436, 0x8109, 0xa438, 0xff0B, + 0xa436, 0x810c, 0xa438, 0xC86D, 0xB87C, 0x8a32, 0xB87E, 0x0400, + 0xa6f8, 0x0000, 0xa6f8, 0x0000, 0xa436, 0x81bc, 0xa438, 0x1300, + 0xa846, 0x2410, 0xa86A, 0x0801, 0xa85C, 0x9680, 0xa436, 0x841D, + 0xa438, 0x4A28, 0xa436, 0x8016, 0xa438, 0xBE05, 0xBF9C, 0x004A, + 0xBF96, 0x41FA, 0xBF9A, 0xDC81, 0xa436, 0x8018, 0xa438, 0x0700, + 0xa436, 0x8ff4, 0xa438, 0x01AE, 0xa436, 0x8fef, 0xa438, 0x0172, + 0xa438, 0x00dc, 0xc842, 0x0002, 0xFFFF, 0xFFFF +}; + +static const u_int16_t phy_mcu_ram_code_8126a_1_3[] = { + 0xb892, 0x0000, 0xB88E, 0xC236, 0xB890, 0x1A1C, 0xB88E, 0xC238, + 0xB890, 0x1C1C, 0xB890, 0x1C1C, 0xB890, 0x2D2D, 0xB890, 0x2D2D, + 0xB890, 0x2D2A, 0xB890, 0x2A2A, 0xB890, 0x2A2A, 0xB890, 0x2A19, + 0xB88E, 0xC272, 0xB890, 0x8484, 0xB890, 0x8484, 0xB890, 0x84B4, + 0xB890, 0xB4B4, 0xB890, 0xB4B4, 0xB890, 0xF8F8, 0xB890, 0xF8F8, + 0xB890, 0xF8F8, 0xB88E, 0xC000, 0xB890, 0x0303, 0xB890, 0x0405, + 0xB890, 0x0608, 0xB890, 0x0A0B, 0xB890, 0x0E11, 0xB890, 0x1519, + 0xB890, 0x2028, 0xB890, 0x3503, 0xB890, 0x0304, 0xB890, 0x0405, + 0xB890, 0x0606, 0xB890, 0x0708, 0xB890, 0x090A, 0xB890, 0x0B0D, + 0xB890, 0x0F11, 0xB890, 0x1315, 0xB890, 0x181A, 0xB890, 0x2029, + 0xB890, 0x2F36, 0xB890, 0x3D43, 0xB890, 0x0101, 0xB890, 0x0102, + 0xB890, 0x0202, 0xB890, 0x0303, 0xB890, 0x0405, 0xB890, 0x0607, + 0xB890, 0x090A, 0xB890, 0x0C0E, 0xB88E, 0xC038, 0xB890, 0x6AE1, + 0xB890, 0x8E6B, 0xB890, 0xA767, 0xB890, 0x01EF, 0xB890, 0x5A63, + 0xB890, 0x2B99, 0xB890, 0x7F5D, 0xB890, 0x361F, 0xB890, 0xA127, + 0xB890, 0xB558, 0xB890, 0x11C3, 0xB890, 0x7D85, 0xB890, 0xBAC5, + 0xB890, 0xE691, 0xB890, 0x8F79, 0xB890, 0x3164, 0xB890, 0x3293, + 0xB890, 0xB80D, 0xB890, 0xE2B7, 0xB890, 0x0D62, 0xB890, 0x4F85, + 0xB890, 0xC919, 0xB890, 0x78F3, 0xB890, 0x77FF, 0xB890, 0xBD9E, + 0xB890, 0x69D6, 0xB890, 0x6DA4, 0xB890, 0x0CC5, 0xB88E, 0xC1D2, + 0xB890, 0x2425, 0xB890, 0x2627, 0xB890, 0x2829, 0xB890, 0x2A2B, + 0xB890, 0x2C2D, 0xB890, 0x2E2F, 0xB890, 0x3031, 0xB890, 0x3233, + 0xB890, 0x2323, 0xB890, 0x2424, 0xB890, 0x2525, 0xB890, 0x2626, + 0xB890, 0x2727, 0xB890, 0x2828, 0xB890, 0x2929, 0xB890, 0x2A2A, + 0xB890, 0x2B2C, 0xB890, 0x2C2D, 0xB890, 0x2D2E, 0xB890, 0x2E2F, + 0xB890, 0x2F30, 0xB890, 0x1A1B, 0xB890, 0x1D1E, 0xB890, 0x1F20, + 0xB890, 0x2123, 0xB890, 0x2425, 0xB890, 0x2628, 0xB890, 0x292A, + 0xB890, 0x2B2C, 0xB890, 0x2E12, 0xB88E, 0xC09A, 0xB890, 0xD3D3, + 0xB890, 0xD3D3, 0xB890, 0xD3D3, 0xB890, 0xD3D3, 0xB890, 0xD3D3, + 0xB890, 0xD3D3, 0xB890, 0xD3D3, 0xB890, 0xD3D3, 0xFFFF, 0xFFFF +}; + +static const u_int16_t phy_mcu_ram_code_8126a_2_1[] = { + 0xa436, 0x8023, 0xa438, 0x4700, 0xa436, 0xB82E, 0xa438, 0x0001, + 0xb820, 0x0090, 0xa436, 0xA016, 0xa438, 0x0000, 0xa436, 0xA012, + 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, + 0xa438, 0x1800, 0xa438, 0x8025, 0xa438, 0x1800, 0xa438, 0x8033, + 0xa438, 0x1800, 0xa438, 0x8037, 0xa438, 0x1800, 0xa438, 0x803c, + 0xa438, 0x1800, 0xa438, 0x8044, 0xa438, 0x1800, 0xa438, 0x8054, + 0xa438, 0x1800, 0xa438, 0x8059, 0xa438, 0xd504, 0xa438, 0xc9b5, + 0xa438, 0xd500, 0xa438, 0xd707, 0xa438, 0x4070, 0xa438, 0x1800, + 0xa438, 0x107a, 0xa438, 0xd504, 0xa438, 0xc994, 0xa438, 0xd500, + 0xa438, 0xd707, 0xa438, 0x60d0, 0xa438, 0xd701, 0xa438, 0x252d, + 0xa438, 0x8023, 0xa438, 0x1800, 0xa438, 0x1064, 0xa438, 0x1800, + 0xa438, 0x107a, 0xa438, 0x1800, 0xa438, 0x1052, 0xa438, 0xd504, + 0xa438, 0xc9d0, 0xa438, 0xd500, 0xa438, 0xd707, 0xa438, 0x60d0, + 0xa438, 0xd701, 0xa438, 0x252d, 0xa438, 0x8031, 0xa438, 0x1800, + 0xa438, 0x1171, 0xa438, 0x1800, 0xa438, 0x1187, 0xa438, 0x1800, + 0xa438, 0x116a, 0xa438, 0xc0ff, 0xa438, 0xcaff, 0xa438, 0x1800, + 0xa438, 0x00d6, 0xa438, 0xd504, 0xa438, 0xa001, 0xa438, 0xd704, + 0xa438, 0x1800, 0xa438, 0x128b, 0xa438, 0xd707, 0xa438, 0x2005, + 0xa438, 0x8042, 0xa438, 0xd75e, 0xa438, 0x1800, 0xa438, 0x137a, + 0xa438, 0x1800, 0xa438, 0x13ed, 0xa438, 0x61d0, 0xa438, 0xd701, + 0xa438, 0x60a5, 0xa438, 0xd504, 0xa438, 0xc9b2, 0xa438, 0xd500, + 0xa438, 0xf004, 0xa438, 0xd504, 0xa438, 0xc9b1, 0xa438, 0xd500, + 0xa438, 0xd707, 0xa438, 0x6070, 0xa438, 0x1800, 0xa438, 0x10a8, + 0xa438, 0x1800, 0xa438, 0x10bd, 0xa438, 0xd500, 0xa438, 0xc492, + 0xa438, 0xd501, 0xa438, 0x1800, 0xa438, 0x13c1, 0xa438, 0xa980, + 0xa438, 0xd500, 0xa438, 0x1800, 0xa438, 0x143b, 0xa436, 0xA026, + 0xa438, 0x143a, 0xa436, 0xA024, 0xa438, 0x13c0, 0xa436, 0xA022, + 0xa438, 0x10bc, 0xa436, 0xA020, 0xa438, 0x1379, 0xa436, 0xA006, + 0xa438, 0x128a, 0xa436, 0xA004, 0xa438, 0x00d5, 0xa436, 0xA002, + 0xa438, 0x1182, 0xa436, 0xA000, 0xa438, 0x1075, 0xa436, 0xA008, + 0xa438, 0xff00, 0xa436, 0xA016, 0xa438, 0x0010, 0xa436, 0xA012, + 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, + 0xa438, 0x1800, 0xa438, 0x8015, 0xa438, 0x1800, 0xa438, 0x801a, + 0xa438, 0x1800, 0xa438, 0x801e, 0xa438, 0x1800, 0xa438, 0x8027, + 0xa438, 0x1800, 0xa438, 0x8027, 0xa438, 0x1800, 0xa438, 0x8027, + 0xa438, 0x1800, 0xa438, 0x8027, 0xa438, 0x0c0f, 0xa438, 0x0505, + 0xa438, 0xba01, 0xa438, 0x1800, 0xa438, 0x015e, 0xa438, 0x0c0f, + 0xa438, 0x0506, 0xa438, 0xba02, 0xa438, 0x1800, 0xa438, 0x017c, + 0xa438, 0x9910, 0xa438, 0x9a03, 0xa438, 0x1800, 0xa438, 0x02d4, + 0xa438, 0x8580, 0xa438, 0xc090, 0xa438, 0x9a03, 0xa438, 0x1000, + 0xa438, 0x02c9, 0xa438, 0xd700, 0xa438, 0x5fa3, 0xa438, 0x1800, + 0xa438, 0x0067, 0xa436, 0xA08E, 0xa438, 0xffff, 0xa436, 0xA08C, + 0xa438, 0xffff, 0xa436, 0xA08A, 0xa438, 0xffff, 0xa436, 0xA088, + 0xa438, 0xffff, 0xa436, 0xA086, 0xa438, 0x018c, 0xa436, 0xA084, + 0xa438, 0x02d3, 0xa436, 0xA082, 0xa438, 0x017a, 0xa436, 0xA080, + 0xa438, 0x015c, 0xa436, 0xA090, 0xa438, 0x000f, 0xa436, 0xA016, + 0xa438, 0x0020, 0xa436, 0xA012, 0xa438, 0x0000, 0xa436, 0xA014, + 0xa438, 0x1800, 0xa438, 0x8010, 0xa438, 0x1800, 0xa438, 0x8023, + 0xa438, 0x1800, 0xa438, 0x8313, 0xa438, 0x1800, 0xa438, 0x831a, + 0xa438, 0x1800, 0xa438, 0x8489, 0xa438, 0x1800, 0xa438, 0x86b9, + 0xa438, 0x1800, 0xa438, 0x86c1, 0xa438, 0x1800, 0xa438, 0x87ad, + 0xa438, 0x1000, 0xa438, 0x124e, 0xa438, 0x9308, 0xa438, 0xb201, + 0xa438, 0xb301, 0xa438, 0xd701, 0xa438, 0x5fe0, 0xa438, 0xd2ff, + 0xa438, 0xb302, 0xa438, 0xd200, 0xa438, 0xb201, 0xa438, 0xb309, + 0xa438, 0xd701, 0xa438, 0x5fe0, 0xa438, 0xd2ff, 0xa438, 0xb302, + 0xa438, 0xd200, 0xa438, 0x1800, 0xa438, 0x0025, 0xa438, 0xd706, + 0xa438, 0x6069, 0xa438, 0xd700, 0xa438, 0x6421, 0xa438, 0xd70c, + 0xa438, 0x43ab, 0xa438, 0x800a, 0xa438, 0x8190, 0xa438, 0x8204, + 0xa438, 0xa280, 0xa438, 0x8406, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa108, 0xa438, 0x9503, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x0c1f, 0xa438, 0x0f19, 0xa438, 0x9503, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd70c, 0xa438, 0x5fb3, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0x8f1f, 0xa438, 0x9503, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd70c, 0xa438, 0x7f33, 0xa438, 0x1000, + 0xa438, 0x11bd, 0xa438, 0x1800, 0xa438, 0x81aa, 0xa438, 0x8710, + 0xa438, 0xd701, 0xa438, 0x33b1, 0xa438, 0x8051, 0xa438, 0xd701, + 0xa438, 0x60b5, 0xa438, 0xd706, 0xa438, 0x6069, 0xa438, 0x1800, + 0xa438, 0x8056, 0xa438, 0xa00a, 0xa438, 0xa280, 0xa438, 0xa404, + 0xa438, 0x1800, 0xa438, 0x80f3, 0xa438, 0xd173, 0xa438, 0xd04d, + 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd700, 0xa438, 0x5fb4, + 0xa438, 0xd173, 0xa438, 0xd05d, 0xa438, 0xd10d, 0xa438, 0xd049, + 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd700, 0xa438, 0x5fb4, + 0xa438, 0xd700, 0xa438, 0x64f5, 0xa438, 0xd700, 0xa438, 0x5ee7, + 0xa438, 0xb920, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd71f, + 0xa438, 0x7fb4, 0xa438, 0x9920, 0xa438, 0xcb3c, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd71f, 0xa438, 0x7d94, 0xa438, 0x6045, + 0xa438, 0xfffa, 0xa438, 0xb820, 0xa438, 0x1000, 0xa438, 0x1175, + 0xa438, 0xd71f, 0xa438, 0x7fa5, 0xa438, 0x9820, 0xa438, 0xcb3d, + 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd700, 0xa438, 0x60b5, + 0xa438, 0xd71f, 0xa438, 0x7bb4, 0xa438, 0x61b6, 0xa438, 0xfff8, + 0xa438, 0xbb80, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd71f, + 0xa438, 0x5fb4, 0xa438, 0x9b80, 0xa438, 0xd700, 0xa438, 0x60e7, + 0xa438, 0xcb3f, 0xa438, 0x1800, 0xa438, 0x8094, 0xa438, 0xcb3e, + 0xa438, 0x1800, 0xa438, 0x810f, 0xa438, 0x1800, 0xa438, 0x80f3, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xae04, 0xa438, 0x9503, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x8e04, 0xa438, 0x9503, 0xa438, 0xd706, 0xa438, 0x65fe, + 0xa438, 0x0c1f, 0xa438, 0x0d04, 0xa438, 0x8dc0, 0xa438, 0x1000, + 0xa438, 0x11bd, 0xa438, 0xd70c, 0xa438, 0x414b, 0xa438, 0x0cc0, + 0xa438, 0x0040, 0xa438, 0x0c03, 0xa438, 0x0102, 0xa438, 0x0ce0, + 0xa438, 0x03e0, 0xa438, 0xccce, 0xa438, 0x1800, 0xa438, 0x80b7, + 0xa438, 0x0cc0, 0xa438, 0x0040, 0xa438, 0x0c03, 0xa438, 0x0100, + 0xa438, 0x0ce0, 0xa438, 0x0380, 0xa438, 0xcc9c, 0xa438, 0x8710, + 0xa438, 0x1000, 0xa438, 0x1118, 0xa438, 0xa104, 0xa438, 0x1000, + 0xa438, 0x112a, 0xa438, 0x8104, 0xa438, 0xa202, 0xa438, 0xa140, + 0xa438, 0x1000, 0xa438, 0x112a, 0xa438, 0x8140, 0xa438, 0x1000, + 0xa438, 0x1121, 0xa438, 0xaa0f, 0xa438, 0xa130, 0xa438, 0xaa2f, + 0xa438, 0xa2d5, 0xa438, 0xa405, 0xa438, 0xa720, 0xa438, 0xa00a, + 0xa438, 0x1800, 0xa438, 0x80f3, 0xa438, 0xd704, 0xa438, 0x3cf1, + 0xa438, 0x80d5, 0xa438, 0x0c1f, 0xa438, 0x0d02, 0xa438, 0x1800, + 0xa438, 0x80d7, 0xa438, 0x0c1f, 0xa438, 0x0d01, 0xa438, 0x0cc0, + 0xa438, 0x0d40, 0xa438, 0x1000, 0xa438, 0x11bd, 0xa438, 0x8710, + 0xa438, 0x1000, 0xa438, 0x1118, 0xa438, 0xa108, 0xa438, 0x1000, + 0xa438, 0x112a, 0xa438, 0x8108, 0xa438, 0xa203, 0xa438, 0x8a2f, + 0xa438, 0xa130, 0xa438, 0x8204, 0xa438, 0xa140, 0xa438, 0x1000, + 0xa438, 0x112a, 0xa438, 0x8140, 0xa438, 0x1000, 0xa438, 0x1121, + 0xa438, 0xd17a, 0xa438, 0xd04b, 0xa438, 0x1000, 0xa438, 0x1175, + 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xa204, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd700, 0xa438, 0x5fa7, 0xa438, 0xb920, + 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd71f, 0xa438, 0x7fb4, + 0xa438, 0x9920, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd71f, + 0xa438, 0x6125, 0xa438, 0x6054, 0xa438, 0xfffb, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd700, 0xa438, 0x5fa7, 0xa438, 0x1800, + 0xa438, 0x80f7, 0xa438, 0xb820, 0xa438, 0x1000, 0xa438, 0x1175, + 0xa438, 0xd71f, 0xa438, 0x7fa5, 0xa438, 0x9820, 0xa438, 0x9b01, + 0xa438, 0xd402, 0xa438, 0x1000, 0xa438, 0x110d, 0xa438, 0xd701, + 0xa438, 0x33b1, 0xa438, 0x811c, 0xa438, 0xd701, 0xa438, 0x60b5, + 0xa438, 0xd706, 0xa438, 0x6069, 0xa438, 0x1800, 0xa438, 0x811e, + 0xa438, 0x1800, 0xa438, 0x8183, 0xa438, 0xd70c, 0xa438, 0x40ab, + 0xa438, 0x800a, 0xa438, 0x8110, 0xa438, 0x8284, 0xa438, 0x8404, + 0xa438, 0xa710, 0xa438, 0x8120, 0xa438, 0x8241, 0xa438, 0x1000, + 0xa438, 0x1118, 0xa438, 0xa104, 0xa438, 0x1000, 0xa438, 0x112a, + 0xa438, 0x8104, 0xa438, 0x1000, 0xa438, 0x1121, 0xa438, 0xaa2f, + 0xa438, 0xd70c, 0xa438, 0x438b, 0xa438, 0xa284, 0xa438, 0xd078, + 0xa438, 0x800a, 0xa438, 0x8110, 0xa438, 0xa284, 0xa438, 0x8404, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa108, 0xa438, 0x9503, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c1f, 0xa438, 0x0f19, + 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd70c, + 0xa438, 0x5fb3, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8f1f, + 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd70c, + 0xa438, 0x7f33, 0xa438, 0x0c1f, 0xa438, 0x0d06, 0xa438, 0x8dc0, + 0xa438, 0x1000, 0xa438, 0x11bd, 0xa438, 0x8110, 0xa438, 0xa284, + 0xa438, 0xa404, 0xa438, 0xa00a, 0xa438, 0xd70c, 0xa438, 0x40a1, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xad10, 0xa438, 0x9503, + 0xa438, 0xd70c, 0xa438, 0x414b, 0xa438, 0x0cc0, 0xa438, 0x0080, + 0xa438, 0x0c03, 0xa438, 0x0102, 0xa438, 0x0ce0, 0xa438, 0x0340, + 0xa438, 0xcc52, 0xa438, 0x1800, 0xa438, 0x816b, 0xa438, 0x80c0, + 0xa438, 0x8103, 0xa438, 0x83e0, 0xa438, 0x8cff, 0xa438, 0xd193, + 0xa438, 0xd047, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0x1000, + 0xa438, 0x1193, 0xa438, 0xd700, 0xa438, 0x5f74, 0xa438, 0xa110, + 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0x1000, 0xa438, 0x1193, + 0xa438, 0xd700, 0xa438, 0x5f6a, 0xa438, 0xa180, 0xa438, 0xd1f5, + 0xa438, 0xd049, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0x1000, + 0xa438, 0x1193, 0xa438, 0xd700, 0xa438, 0x5f74, 0xa438, 0x8710, + 0xa438, 0xa00a, 0xa438, 0x8190, 0xa438, 0x8204, 0xa438, 0xa280, + 0xa438, 0xa404, 0xa438, 0xbb80, 0xa438, 0x1000, 0xa438, 0x1175, + 0xa438, 0xd71f, 0xa438, 0x5fb4, 0xa438, 0xb920, 0xa438, 0x9b80, + 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd71f, 0xa438, 0x7fb4, + 0xa438, 0x9920, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xcb33, + 0xa438, 0xd71f, 0xa438, 0x6105, 0xa438, 0x5f74, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd700, 0xa438, 0x5fa7, 0xa438, 0x1800, + 0xa438, 0x818e, 0xa438, 0xa710, 0xa438, 0xb820, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd71f, 0xa438, 0x7f65, 0xa438, 0x9820, + 0xa438, 0x1800, 0xa438, 0x81f1, 0xa438, 0x0c1f, 0xa438, 0x0d04, + 0xa438, 0x8dc0, 0xa438, 0x1000, 0xa438, 0x11bd, 0xa438, 0xa00a, + 0xa438, 0x8280, 0xa438, 0xa710, 0xa438, 0xd103, 0xa438, 0xd04c, + 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd700, 0xa438, 0x5fb4, + 0xa438, 0x0c1f, 0xa438, 0x0d06, 0xa438, 0x8dc0, 0xa438, 0x1000, + 0xa438, 0x11bd, 0xa438, 0x8710, 0xa438, 0xa190, 0xa438, 0xa204, + 0xa438, 0x8280, 0xa438, 0xa404, 0xa438, 0x1000, 0xa438, 0x1175, + 0xa438, 0xd700, 0xa438, 0x5fa7, 0xa438, 0xa00a, 0xa438, 0xa110, + 0xa438, 0xa284, 0xa438, 0xa404, 0xa438, 0xcb33, 0xa438, 0xd71f, + 0xa438, 0x5f54, 0xa438, 0xb920, 0xa438, 0x1000, 0xa438, 0x1175, + 0xa438, 0xd71f, 0xa438, 0x7fb4, 0xa438, 0x9920, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd71f, 0xa438, 0x6145, 0xa438, 0x6074, + 0xa438, 0x1800, 0xa438, 0x81d3, 0xa438, 0x1000, 0xa438, 0x1175, + 0xa438, 0xd700, 0xa438, 0x5fa7, 0xa438, 0x1800, 0xa438, 0x81cd, + 0xa438, 0xb820, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd71f, + 0xa438, 0x7fa5, 0xa438, 0xa710, 0xa438, 0x9820, 0xa438, 0xbb20, + 0xa438, 0x9308, 0xa438, 0xb210, 0xa438, 0xb301, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd701, 0xa438, 0x5fa4, 0xa438, 0xb302, + 0xa438, 0x9210, 0xa438, 0xa00a, 0xa438, 0xa190, 0xa438, 0xa284, + 0xa438, 0xa404, 0xa438, 0xcb34, 0xa438, 0xd701, 0xa438, 0x33b1, + 0xa438, 0x823f, 0xa438, 0xd706, 0xa438, 0x60a9, 0xa438, 0xd1f5, + 0xa438, 0xd049, 0xa438, 0x1800, 0xa438, 0x8201, 0xa438, 0xd13c, + 0xa438, 0xd04a, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0x1000, + 0xa438, 0x1193, 0xa438, 0xd700, 0xa438, 0x5f74, 0xa438, 0xd700, + 0xa438, 0x5f2b, 0xa438, 0x0c1f, 0xa438, 0x0d03, 0xa438, 0x8dc0, + 0xa438, 0x1000, 0xa438, 0x11bd, 0xa438, 0x8190, 0xa438, 0x8204, + 0xa438, 0xa280, 0xa438, 0xa00a, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x8304, 0xa438, 0x9503, 0xa438, 0xcb35, 0xa438, 0xd70c, + 0xa438, 0x414b, 0xa438, 0x8280, 0xa438, 0x800a, 0xa438, 0xd411, + 0xa438, 0x1000, 0xa438, 0x110d, 0xa438, 0x1000, 0xa438, 0x11bd, + 0xa438, 0xa280, 0xa438, 0xa00a, 0xa438, 0xd40a, 0xa438, 0xcb36, + 0xa438, 0x1000, 0xa438, 0x110d, 0xa438, 0xd706, 0xa438, 0x431b, + 0xa438, 0x800a, 0xa438, 0x8180, 0xa438, 0x8280, 0xa438, 0x8404, + 0xa438, 0xa004, 0xa438, 0x1000, 0xa438, 0x112a, 0xa438, 0x8004, + 0xa438, 0xa001, 0xa438, 0x1000, 0xa438, 0x112a, 0xa438, 0x8001, + 0xa438, 0x0c03, 0xa438, 0x0902, 0xa438, 0xa00a, 0xa438, 0xd14a, + 0xa438, 0xd048, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0x1000, + 0xa438, 0x1193, 0xa438, 0xd700, 0xa438, 0x5f74, 0xa438, 0x0c1f, + 0xa438, 0x0d06, 0xa438, 0x8dc0, 0xa438, 0x1000, 0xa438, 0x11bd, + 0xa438, 0xd70c, 0xa438, 0x414b, 0xa438, 0x0cc0, 0xa438, 0x0080, + 0xa438, 0x0c03, 0xa438, 0x0101, 0xa438, 0x0ce0, 0xa438, 0x03a0, + 0xa438, 0xccb5, 0xa438, 0x1800, 0xa438, 0x8256, 0xa438, 0x0cc0, + 0xa438, 0x0000, 0xa438, 0x0c03, 0xa438, 0x0101, 0xa438, 0x0ce0, + 0xa438, 0x0320, 0xa438, 0xcc21, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x0c30, 0xa438, 0x0120, 0xa438, 0xa304, 0xa438, 0x9503, + 0xa438, 0xd70c, 0xa438, 0x674b, 0xa438, 0xd704, 0xa438, 0x471a, + 0xa438, 0xa301, 0xa438, 0x800a, 0xa438, 0xa110, 0xa438, 0x8180, + 0xa438, 0xa204, 0xa438, 0x82a0, 0xa438, 0xa404, 0xa438, 0xaa40, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xaa01, 0xa438, 0x9503, + 0xa438, 0xd178, 0xa438, 0xd049, 0xa438, 0x1000, 0xa438, 0x1175, + 0xa438, 0x1000, 0xa438, 0x1193, 0xa438, 0xd700, 0xa438, 0x5f74, + 0xa438, 0x8301, 0xa438, 0xa00a, 0xa438, 0x8110, 0xa438, 0xa180, + 0xa438, 0xa284, 0xa438, 0x8220, 0xa438, 0xa404, 0xa438, 0xd178, + 0xa438, 0xd048, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0x1000, + 0xa438, 0x1193, 0xa438, 0xd700, 0xa438, 0x5f74, 0xa438, 0xcb3a, + 0xa438, 0x8301, 0xa438, 0xa00a, 0xa438, 0xa190, 0xa438, 0xa280, + 0xa438, 0x8224, 0xa438, 0xa404, 0xa438, 0xd700, 0xa438, 0x6041, + 0xa438, 0xa402, 0xa438, 0xd178, 0xa438, 0xd049, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0x1000, 0xa438, 0x1193, 0xa438, 0xd700, + 0xa438, 0x5f74, 0xa438, 0x1800, 0xa438, 0x82ab, 0xa438, 0xa00a, + 0xa438, 0xa190, 0xa438, 0xa2a4, 0xa438, 0xa404, 0xa438, 0xd700, + 0xa438, 0x6041, 0xa438, 0xa402, 0xa438, 0xcb37, 0xa438, 0xd706, + 0xa438, 0x60a9, 0xa438, 0xd13d, 0xa438, 0xd04a, 0xa438, 0x1800, + 0xa438, 0x82a7, 0xa438, 0xd13c, 0xa438, 0xd04b, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0x1000, 0xa438, 0x1193, 0xa438, 0xd700, + 0xa438, 0x5f6b, 0xa438, 0x0c1f, 0xa438, 0x0d07, 0xa438, 0x8dc0, + 0xa438, 0x1000, 0xa438, 0x11bd, 0xa438, 0xd40d, 0xa438, 0x1000, + 0xa438, 0x110d, 0xa438, 0xa208, 0xa438, 0x8204, 0xa438, 0xaa40, + 0xa438, 0xcb38, 0xa438, 0xd706, 0xa438, 0x6129, 0xa438, 0xd70c, + 0xa438, 0x608b, 0xa438, 0xd17a, 0xa438, 0xd047, 0xa438, 0xf006, + 0xa438, 0xd13d, 0xa438, 0xd04b, 0xa438, 0xf003, 0xa438, 0xd196, + 0xa438, 0xd04b, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0x1000, + 0xa438, 0x1193, 0xa438, 0xd700, 0xa438, 0x5f74, 0xa438, 0xd704, + 0xa438, 0x35ac, 0xa438, 0x8311, 0xa438, 0x0cc0, 0xa438, 0x0000, + 0xa438, 0x0c03, 0xa438, 0x0101, 0xa438, 0x0ce0, 0xa438, 0x0320, + 0xa438, 0xcc21, 0xa438, 0x0c1f, 0xa438, 0x0d03, 0xa438, 0x8dc0, + 0xa438, 0x1000, 0xa438, 0x11bd, 0xa438, 0x0cc0, 0xa438, 0x0000, + 0xa438, 0x0c07, 0xa438, 0x0c07, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa280, 0xa438, 0x8780, 0xa438, 0x0c60, 0xa438, 0x0700, + 0xa438, 0x9503, 0xa438, 0xd704, 0xa438, 0x409c, 0xa438, 0xd110, + 0xa438, 0xd04d, 0xa438, 0xf003, 0xa438, 0xd110, 0xa438, 0xd04d, + 0xa438, 0xcb4a, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd700, + 0xa438, 0x5fb4, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa240, + 0xa438, 0xa180, 0xa438, 0xa201, 0xa438, 0xa780, 0xa438, 0x9503, + 0xa438, 0xd114, 0xa438, 0xd04a, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0xcb4b, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0x1800, + 0xa438, 0x0bc3, 0xa438, 0x1800, 0xa438, 0x0bc3, 0xa438, 0x1000, + 0xa438, 0x110d, 0xa438, 0xd419, 0xa438, 0x1000, 0xa438, 0x110d, + 0xa438, 0x1800, 0xa438, 0x01ae, 0xa438, 0x8110, 0xa438, 0xa180, + 0xa438, 0x8280, 0xa438, 0xa404, 0xa438, 0xa00a, 0xa438, 0x8402, + 0xa438, 0xcb42, 0xa438, 0xd706, 0xa438, 0x3de9, 0xa438, 0x837a, + 0xa438, 0xd704, 0xa438, 0x35ac, 0xa438, 0x8380, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd700, 0xa438, 0x5fab, 0xa438, 0x0c1f, + 0xa438, 0x0d06, 0xa438, 0x8dc0, 0xa438, 0x1000, 0xa438, 0x11bd, + 0xa438, 0xd418, 0xa438, 0x1000, 0xa438, 0x110d, 0xa438, 0x0c1f, + 0xa438, 0x0d03, 0xa438, 0x8dc0, 0xa438, 0x1000, 0xa438, 0x11bd, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa780, 0xa438, 0xa20e, + 0xa438, 0x9503, 0xa438, 0xd704, 0xa438, 0x409c, 0xa438, 0xd114, + 0xa438, 0xd04d, 0xa438, 0xf003, 0xa438, 0xd114, 0xa438, 0xd04d, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa003, 0xa438, 0x9503, + 0xa438, 0xcb4c, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd700, + 0xa438, 0x5fb4, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c60, + 0xa438, 0x0720, 0xa438, 0xa220, 0xa438, 0x9503, 0xa438, 0xcb4d, + 0xa438, 0xd704, 0xa438, 0x409c, 0xa438, 0xd128, 0xa438, 0xd04f, + 0xa438, 0xf003, 0xa438, 0xd128, 0xa438, 0xd04f, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0x0c60, 0xa438, 0x0740, 0xa438, 0xa210, + 0xa438, 0x9503, 0xa438, 0xd704, 0xa438, 0x409c, 0xa438, 0xd114, + 0xa438, 0xd04e, 0xa438, 0xf003, 0xa438, 0xd114, 0xa438, 0xd04e, + 0xa438, 0xcb4e, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd700, + 0xa438, 0x5fb4, 0xa438, 0x0c1f, 0xa438, 0x0d06, 0xa438, 0x8dc0, + 0xa438, 0x1000, 0xa438, 0x11bd, 0xa438, 0x0cc0, 0xa438, 0x0000, + 0xa438, 0x0c07, 0xa438, 0x0c01, 0xa438, 0xd704, 0xa438, 0x40b5, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa23c, 0xa438, 0x9503, + 0xa438, 0xb920, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd71f, + 0xa438, 0x7fb4, 0xa438, 0x8710, 0xa438, 0x9920, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd71f, 0xa438, 0x6105, 0xa438, 0x6054, + 0xa438, 0xfffb, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd700, + 0xa438, 0x5fa7, 0xa438, 0xffef, 0xa438, 0xa710, 0xa438, 0xb820, + 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd71f, 0xa438, 0x7fa5, + 0xa438, 0x9820, 0xa438, 0xa00a, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa103, 0xa438, 0x9503, 0xa438, 0xbb20, 0xa438, 0xd706, + 0xa438, 0x60dd, 0xa438, 0x0c1f, 0xa438, 0x0d07, 0xa438, 0x8dc0, + 0xa438, 0x1000, 0xa438, 0x11bd, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x0c30, 0xa438, 0x0120, 0xa438, 0xa304, 0xa438, 0x9503, + 0xa438, 0xa190, 0xa438, 0xa2a0, 0xa438, 0xa404, 0xa438, 0xa00a, + 0xa438, 0xa604, 0xa438, 0xd700, 0xa438, 0x6041, 0xa438, 0xa402, + 0xa438, 0xcb43, 0xa438, 0xd17a, 0xa438, 0xd048, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0x1000, 0xa438, 0x1193, 0xa438, 0xd700, + 0xa438, 0x5f74, 0xa438, 0x609d, 0xa438, 0xd417, 0xa438, 0x1000, + 0xa438, 0x110d, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0x1000, + 0xa438, 0x1193, 0xa438, 0xd700, 0xa438, 0x5f7a, 0xa438, 0xd704, + 0xa438, 0x5f36, 0xa438, 0xd706, 0xa438, 0x6089, 0xa438, 0xd40c, + 0xa438, 0x1000, 0xa438, 0x110d, 0xa438, 0xaa40, 0xa438, 0xbb10, + 0xa438, 0xcb50, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0x1000, + 0xa438, 0x1193, 0xa438, 0xd71f, 0xa438, 0x5f75, 0xa438, 0x8190, + 0xa438, 0x82a0, 0xa438, 0x8402, 0xa438, 0xa404, 0xa438, 0x800a, + 0xa438, 0x8718, 0xa438, 0x9b10, 0xa438, 0x9b20, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd71f, 0xa438, 0x7fb5, 0xa438, 0xcb51, + 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd71f, 0xa438, 0x5f94, + 0xa438, 0xd706, 0xa438, 0x6089, 0xa438, 0xd141, 0xa438, 0xd043, + 0xa438, 0xf003, 0xa438, 0xd141, 0xa438, 0xd044, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xd700, + 0xa438, 0x60e5, 0xa438, 0xd704, 0xa438, 0x60be, 0xa438, 0xd706, + 0xa438, 0x29b1, 0xa438, 0x83fb, 0xa438, 0xf002, 0xa438, 0xa880, + 0xa438, 0xa00a, 0xa438, 0xa190, 0xa438, 0x8220, 0xa438, 0xa280, + 0xa438, 0xa404, 0xa438, 0xa620, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xc5aa, 0xa438, 0x9503, 0xa438, 0xd700, 0xa438, 0x6061, + 0xa438, 0xa402, 0xa438, 0xa480, 0xa438, 0xcb52, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd700, 0xa438, 0x5fba, 0xa438, 0xd704, + 0xa438, 0x5f76, 0xa438, 0xb920, 0xa438, 0xcb53, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd71f, 0xa438, 0x7fb4, 0xa438, 0x9920, + 0xa438, 0xa00a, 0xa438, 0xa190, 0xa438, 0xa280, 0xa438, 0x8220, + 0xa438, 0xa404, 0xa438, 0xb580, 0xa438, 0xd700, 0xa438, 0x40a1, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa602, 0xa438, 0x9503, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa310, 0xa438, 0x9503, + 0xa438, 0xcb60, 0xa438, 0xd1c8, 0xa438, 0xd045, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xaa10, + 0xa438, 0xd70c, 0xa438, 0x2833, 0xa438, 0x8434, 0xa438, 0xf003, + 0xa438, 0x1000, 0xa438, 0x1238, 0xa438, 0xd70c, 0xa438, 0x40a6, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa140, 0xa438, 0x9503, + 0xa438, 0xd70c, 0xa438, 0x40a3, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xac20, 0xa438, 0x9503, 0xa438, 0xa90c, 0xa438, 0xaa80, + 0xa438, 0x0c1f, 0xa438, 0x0d07, 0xa438, 0x8dc0, 0xa438, 0x1000, + 0xa438, 0x11bd, 0xa438, 0xa00a, 0xa438, 0xa190, 0xa438, 0xa280, + 0xa438, 0x8220, 0xa438, 0xa404, 0xa438, 0xb580, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0xc500, 0xa438, 0x9503, 0xa438, 0x83e0, + 0xa438, 0xd700, 0xa438, 0x40c1, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa602, 0xa438, 0x9503, 0xa438, 0x8e01, 0xa438, 0xd14a, + 0xa438, 0xd058, 0xa438, 0xd70c, 0xa438, 0x4063, 0xa438, 0x1000, + 0xa438, 0x11f2, 0xa438, 0xcb62, 0xa438, 0x1000, 0xa438, 0x1175, + 0xa438, 0xd704, 0xa438, 0x2e70, 0xa438, 0x8479, 0xa438, 0xd71f, + 0xa438, 0x626e, 0xa438, 0xd704, 0xa438, 0x3868, 0xa438, 0x847d, + 0xa438, 0xd70c, 0xa438, 0x2f18, 0xa438, 0x8483, 0xa438, 0xd700, + 0xa438, 0x5db5, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xc5aa, + 0xa438, 0x9503, 0xa438, 0x0ce0, 0xa438, 0x0320, 0xa438, 0x1800, + 0xa438, 0x0d6f, 0xa438, 0x1800, 0xa438, 0x0f15, 0xa438, 0x1800, + 0xa438, 0x0dae, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xc5aa, + 0xa438, 0x9503, 0xa438, 0x1800, 0xa438, 0x0fc9, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0xc5aa, 0xa438, 0x9503, 0xa438, 0x1800, + 0xa438, 0x0d84, 0xa438, 0x1000, 0xa438, 0x16e5, 0xa438, 0xd70c, + 0xa438, 0x5fa4, 0xa438, 0xa706, 0xa438, 0xd70c, 0xa438, 0x408b, + 0xa438, 0xa701, 0xa438, 0xa502, 0xa438, 0xa880, 0xa438, 0x8801, + 0xa438, 0x8e01, 0xa438, 0xca50, 0xa438, 0x1000, 0xa438, 0x852e, + 0xa438, 0xca51, 0xa438, 0xd70e, 0xa438, 0x2210, 0xa438, 0x852c, + 0xa438, 0xd70c, 0xa438, 0x4084, 0xa438, 0xd705, 0xa438, 0x5efd, + 0xa438, 0xf007, 0xa438, 0x1000, 0xa438, 0x16e9, 0xa438, 0xd70c, + 0xa438, 0x5ca2, 0xa438, 0x1800, 0xa438, 0x15b2, 0xa438, 0xd70c, + 0xa438, 0x605a, 0xa438, 0x9a10, 0xa438, 0x8e40, 0xa438, 0x8404, + 0xa438, 0x1000, 0xa438, 0x174e, 0xa438, 0x8e80, 0xa438, 0xca62, + 0xa438, 0xd705, 0xa438, 0x3084, 0xa438, 0x850e, 0xa438, 0xba10, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x1000, 0xa438, 0x8608, + 0xa438, 0x0c03, 0xa438, 0x0100, 0xa438, 0xd702, 0xa438, 0x4638, + 0xa438, 0xd1c4, 0xa438, 0xd044, 0xa438, 0x1000, 0xa438, 0x16e5, + 0xa438, 0x1000, 0xa438, 0x170f, 0xa438, 0xd70c, 0xa438, 0x5f7c, + 0xa438, 0x8108, 0xa438, 0x0c1f, 0xa438, 0x0907, 0xa438, 0x8940, + 0xa438, 0x1000, 0xa438, 0x1702, 0xa438, 0xa0c4, 0xa438, 0x8610, + 0xa438, 0x8030, 0xa438, 0x8706, 0xa438, 0x0c07, 0xa438, 0x0b06, + 0xa438, 0x8410, 0xa438, 0xa980, 0xa438, 0xa702, 0xa438, 0xd1c4, + 0xa438, 0xd045, 0xa438, 0x1000, 0xa438, 0x16e5, 0xa438, 0x1000, + 0xa438, 0x170f, 0xa438, 0xd70c, 0xa438, 0x5f7c, 0xa438, 0x0c07, + 0xa438, 0x0b06, 0xa438, 0xa030, 0xa438, 0xa610, 0xa438, 0xd700, + 0xa438, 0x6041, 0xa438, 0xa501, 0xa438, 0xa108, 0xa438, 0xd1c4, + 0xa438, 0xd045, 0xa438, 0xca63, 0xa438, 0x1000, 0xa438, 0x16e5, + 0xa438, 0x1000, 0xa438, 0x170f, 0xa438, 0xd70c, 0xa438, 0x5f7c, + 0xa438, 0xd702, 0xa438, 0x6078, 0xa438, 0x9920, 0xa438, 0xf003, + 0xa438, 0xb920, 0xa438, 0xa880, 0xa438, 0x9a10, 0xa438, 0x1000, + 0xa438, 0x16e5, 0xa438, 0x1000, 0xa438, 0x170f, 0xa438, 0xd71f, + 0xa438, 0x5f73, 0xa438, 0xf011, 0xa438, 0xd70c, 0xa438, 0x409b, + 0xa438, 0x9920, 0xa438, 0x9a10, 0xa438, 0xfff5, 0xa438, 0x80fe, + 0xa438, 0x8610, 0xa438, 0x8501, 0xa438, 0x8980, 0xa438, 0x8702, + 0xa438, 0xa410, 0xa438, 0xa940, 0xa438, 0x81c0, 0xa438, 0xae80, + 0xa438, 0x1800, 0xa438, 0x84b3, 0xa438, 0x8804, 0xa438, 0xa704, + 0xa438, 0x8788, 0xa438, 0xff80, 0xa438, 0xbb08, 0xa438, 0x0c1f, + 0xa438, 0x0907, 0xa438, 0x8940, 0xa438, 0x1000, 0xa438, 0x1702, + 0xa438, 0x8701, 0xa438, 0x8502, 0xa438, 0xa0f4, 0xa438, 0xa610, + 0xa438, 0xd700, 0xa438, 0x6061, 0xa438, 0xa002, 0xa438, 0xa501, + 0xa438, 0x8706, 0xa438, 0x8410, 0xa438, 0xa980, 0xa438, 0xca64, + 0xa438, 0xd110, 0xa438, 0xd040, 0xa438, 0x1000, 0xa438, 0x16e5, + 0xa438, 0x1000, 0xa438, 0x170f, 0xa438, 0xd70c, 0xa438, 0x5f7c, + 0xa438, 0x8804, 0xa438, 0xa706, 0xa438, 0x1800, 0xa438, 0x848d, + 0xa438, 0x1800, 0xa438, 0x1384, 0xa438, 0xd705, 0xa438, 0x405f, + 0xa438, 0xf036, 0xa438, 0xd705, 0xa438, 0x6234, 0xa438, 0xd70c, + 0xa438, 0x41c6, 0xa438, 0xd70d, 0xa438, 0x419d, 0xa438, 0xd70d, + 0xa438, 0x417e, 0xa438, 0xd704, 0xa438, 0x6127, 0xa438, 0x2951, + 0xa438, 0x8543, 0xa438, 0xd70c, 0xa438, 0x4083, 0xa438, 0xd70c, + 0xa438, 0x2e81, 0xa438, 0x8543, 0xa438, 0xf0c5, 0xa438, 0x80fe, + 0xa438, 0x8610, 0xa438, 0x8501, 0xa438, 0x8704, 0xa438, 0x0c30, + 0xa438, 0x0410, 0xa438, 0xa701, 0xa438, 0xac02, 0xa438, 0xa502, + 0xa438, 0x8980, 0xa438, 0xca60, 0xa438, 0xa004, 0xa438, 0xd70c, + 0xa438, 0x6065, 0xa438, 0x1800, 0xa438, 0x8554, 0xa438, 0x8004, + 0xa438, 0xa804, 0xa438, 0x0c0f, 0xa438, 0x0602, 0xa438, 0x0c70, + 0xa438, 0x0730, 0xa438, 0xa708, 0xa438, 0xd704, 0xa438, 0x609c, + 0xa438, 0x0c1f, 0xa438, 0x0912, 0xa438, 0xf003, 0xa438, 0x0c1f, + 0xa438, 0x090e, 0xa438, 0xa940, 0xa438, 0x1000, 0xa438, 0x1702, + 0xa438, 0xa780, 0xa438, 0xf0a2, 0xa438, 0xd704, 0xa438, 0x63eb, + 0xa438, 0xd705, 0xa438, 0x43b1, 0xa438, 0xd702, 0xa438, 0x339c, + 0xa438, 0x8607, 0xa438, 0x8788, 0xa438, 0x8704, 0xa438, 0x0c1f, + 0xa438, 0x0907, 0xa438, 0x8940, 0xa438, 0x1000, 0xa438, 0x1702, + 0xa438, 0x8410, 0xa438, 0xa0f4, 0xa438, 0xa610, 0xa438, 0xd700, + 0xa438, 0x6061, 0xa438, 0xa002, 0xa438, 0xa501, 0xa438, 0xa706, + 0xa438, 0x8804, 0xa438, 0xa980, 0xa438, 0xd70c, 0xa438, 0x6085, + 0xa438, 0x8701, 0xa438, 0x8502, 0xa438, 0x8c02, 0xa438, 0xa701, + 0xa438, 0xa502, 0xa438, 0xf082, 0xa438, 0xd70c, 0xa438, 0x60c5, + 0xa438, 0xd702, 0xa438, 0x6053, 0xa438, 0xf07d, 0xa438, 0x1800, + 0xa438, 0x8604, 0xa438, 0xd70d, 0xa438, 0x4d1b, 0xa438, 0xba10, + 0xa438, 0xae40, 0xa438, 0x0cfc, 0xa438, 0x03b4, 0xa438, 0x0cfc, + 0xa438, 0x05b4, 0xa438, 0xd1c4, 0xa438, 0xd044, 0xa438, 0x1000, + 0xa438, 0x16e5, 0xa438, 0x1000, 0xa438, 0x170f, 0xa438, 0xd70c, + 0xa438, 0x5f7c, 0xa438, 0x8706, 0xa438, 0x8280, 0xa438, 0xace0, + 0xa438, 0xa680, 0xa438, 0xa240, 0xa438, 0x1000, 0xa438, 0x16e5, + 0xa438, 0x1000, 0xa438, 0x170f, 0xa438, 0xd702, 0xa438, 0x5f79, + 0xa438, 0x8240, 0xa438, 0xd702, 0xa438, 0x6898, 0xa438, 0xd702, + 0xa438, 0x4957, 0xa438, 0x1800, 0xa438, 0x85f6, 0xa438, 0xa1c0, + 0xa438, 0x0c3f, 0xa438, 0x0220, 0xa438, 0x0cfc, 0xa438, 0x030c, + 0xa438, 0x0cfc, 0xa438, 0x050c, 0xa438, 0x8108, 0xa438, 0x8640, + 0xa438, 0xa120, 0xa438, 0xa640, 0xa438, 0x0c03, 0xa438, 0x0101, + 0xa438, 0xa110, 0xa438, 0xd1c4, 0xa438, 0xd044, 0xa438, 0xca84, + 0xa438, 0x1000, 0xa438, 0x16e5, 0xa438, 0x1000, 0xa438, 0x170f, + 0xa438, 0xd70c, 0xa438, 0x5f7c, 0xa438, 0xd702, 0xa438, 0x60fc, + 0xa438, 0x8210, 0xa438, 0x0ce0, 0xa438, 0x0320, 0xa438, 0x0ce0, + 0xa438, 0x0520, 0xa438, 0xf002, 0xa438, 0xa210, 0xa438, 0xd1c4, + 0xa438, 0xd043, 0xa438, 0x1000, 0xa438, 0x16e5, 0xa438, 0x1000, + 0xa438, 0x170f, 0xa438, 0xd70c, 0xa438, 0x5f7c, 0xa438, 0x8233, + 0xa438, 0x0cfc, 0xa438, 0x036c, 0xa438, 0x0cfc, 0xa438, 0x056c, + 0xa438, 0xd1c4, 0xa438, 0xd044, 0xa438, 0xca85, 0xa438, 0x1000, + 0xa438, 0x16e5, 0xa438, 0x1000, 0xa438, 0x170f, 0xa438, 0xd70c, + 0xa438, 0x5f7c, 0xa438, 0xa680, 0xa438, 0xa240, 0xa438, 0x1000, + 0xa438, 0x16e5, 0xa438, 0x1000, 0xa438, 0x170f, 0xa438, 0xd702, + 0xa438, 0x5f79, 0xa438, 0x8240, 0xa438, 0x0cfc, 0xa438, 0x0390, + 0xa438, 0x0cfc, 0xa438, 0x0590, 0xa438, 0xd702, 0xa438, 0x6058, + 0xa438, 0xf002, 0xa438, 0xfec7, 0xa438, 0x81c0, 0xa438, 0x8880, + 0xa438, 0x8706, 0xa438, 0xca61, 0xa438, 0xd1c4, 0xa438, 0xd054, + 0xa438, 0x1000, 0xa438, 0x16e5, 0xa438, 0x1000, 0xa438, 0x170f, + 0xa438, 0xd70c, 0xa438, 0x5f7d, 0xa438, 0xa706, 0xa438, 0xf004, + 0xa438, 0x8788, 0xa438, 0xa404, 0xa438, 0x8702, 0xa438, 0x0800, + 0xa438, 0x8443, 0xa438, 0x8303, 0xa438, 0x8280, 0xa438, 0x9920, + 0xa438, 0x8ce0, 0xa438, 0x8004, 0xa438, 0xa1c0, 0xa438, 0xd70e, + 0xa438, 0x404a, 0xa438, 0xa280, 0xa438, 0xd702, 0xa438, 0x3bd0, + 0xa438, 0x8618, 0xa438, 0x0c3f, 0xa438, 0x0223, 0xa438, 0xf003, + 0xa438, 0x0c3f, 0xa438, 0x0220, 0xa438, 0x0cfc, 0xa438, 0x0308, + 0xa438, 0x0cfc, 0xa438, 0x0508, 0xa438, 0x8108, 0xa438, 0x8640, + 0xa438, 0xa120, 0xa438, 0xa640, 0xa438, 0xd702, 0xa438, 0x6077, + 0xa438, 0x8103, 0xa438, 0xf003, 0xa438, 0x0c03, 0xa438, 0x0101, + 0xa438, 0xa110, 0xa438, 0xd702, 0xa438, 0x6077, 0xa438, 0xa108, + 0xa438, 0xf006, 0xa438, 0xd704, 0xa438, 0x6077, 0xa438, 0x8108, + 0xa438, 0xf002, 0xa438, 0xa108, 0xa438, 0xd193, 0xa438, 0xd045, + 0xa438, 0xca82, 0xa438, 0x1000, 0xa438, 0x16e5, 0xa438, 0xd70e, + 0xa438, 0x606a, 0xa438, 0x1000, 0xa438, 0x170f, 0xa438, 0xd70c, + 0xa438, 0x5f3c, 0xa438, 0xd702, 0xa438, 0x60fc, 0xa438, 0x8210, + 0xa438, 0x0ce0, 0xa438, 0x0320, 0xa438, 0x0ce0, 0xa438, 0x0520, + 0xa438, 0xf002, 0xa438, 0xa210, 0xa438, 0xd1c4, 0xa438, 0xd043, + 0xa438, 0x1000, 0xa438, 0x16e5, 0xa438, 0xd70e, 0xa438, 0x606a, + 0xa438, 0x1000, 0xa438, 0x170f, 0xa438, 0xd70c, 0xa438, 0x5f3c, + 0xa438, 0xd702, 0xa438, 0x3bd0, 0xa438, 0x8656, 0xa438, 0x0c3f, + 0xa438, 0x020c, 0xa438, 0xf002, 0xa438, 0x823f, 0xa438, 0x0cfc, + 0xa438, 0x034c, 0xa438, 0x0cfc, 0xa438, 0x054c, 0xa438, 0xd1c4, + 0xa438, 0xd044, 0xa438, 0x1000, 0xa438, 0x16e5, 0xa438, 0xd70e, + 0xa438, 0x606a, 0xa438, 0x1000, 0xa438, 0x170f, 0xa438, 0xd70c, + 0xa438, 0x5f3c, 0xa438, 0x820c, 0xa438, 0xa360, 0xa438, 0xa560, + 0xa438, 0xd1c4, 0xa438, 0xd043, 0xa438, 0xca83, 0xa438, 0x1000, + 0xa438, 0x16e5, 0xa438, 0xd70e, 0xa438, 0x606a, 0xa438, 0x1000, + 0xa438, 0x170f, 0xa438, 0xd70c, 0xa438, 0x5f3c, 0xa438, 0xd70e, + 0xa438, 0x406a, 0xa438, 0x8680, 0xa438, 0xf002, 0xa438, 0xa680, + 0xa438, 0xa240, 0xa438, 0x0c0f, 0xa438, 0x0604, 0xa438, 0x0c70, + 0xa438, 0x0750, 0xa438, 0xa708, 0xa438, 0xd704, 0xa438, 0x609c, + 0xa438, 0x0c1f, 0xa438, 0x0914, 0xa438, 0xf003, 0xa438, 0x0c1f, + 0xa438, 0x0910, 0xa438, 0xa940, 0xa438, 0x1000, 0xa438, 0x1702, + 0xa438, 0xa780, 0xa438, 0x1000, 0xa438, 0x16e5, 0xa438, 0xd70e, + 0xa438, 0x606a, 0xa438, 0x1000, 0xa438, 0x170f, 0xa438, 0xd702, + 0xa438, 0x399c, 0xa438, 0x8689, 0xa438, 0x8240, 0xa438, 0x8788, + 0xa438, 0xd702, 0xa438, 0x63f8, 0xa438, 0xd705, 0xa438, 0x643c, + 0xa438, 0xa402, 0xa438, 0xf012, 0xa438, 0x8402, 0xa438, 0xd705, + 0xa438, 0x611b, 0xa438, 0xa401, 0xa438, 0xa302, 0xa438, 0xd702, + 0xa438, 0x417d, 0xa438, 0xa440, 0xa438, 0xa280, 0xa438, 0xf008, + 0xa438, 0x8401, 0xa438, 0x8302, 0xa438, 0xd70c, 0xa438, 0x6060, + 0xa438, 0xa301, 0xa438, 0xf002, 0xa438, 0x8301, 0xa438, 0xd70c, + 0xa438, 0x4080, 0xa438, 0xd70e, 0xa438, 0x604a, 0xa438, 0xff5f, + 0xa438, 0xd705, 0xa438, 0x3cdd, 0xa438, 0x86b8, 0xa438, 0xff5b, + 0xa438, 0x0cfc, 0xa438, 0x0390, 0xa438, 0x0cfc, 0xa438, 0x0590, + 0xa438, 0x0800, 0xa438, 0x0c1f, 0xa438, 0x0d00, 0xa438, 0x8dc0, + 0xa438, 0x1000, 0xa438, 0x11bd, 0xa438, 0xa504, 0xa438, 0x1800, + 0xa438, 0x0fd3, 0xa438, 0xd70d, 0xa438, 0x407d, 0xa438, 0xa710, + 0xa438, 0xf002, 0xa438, 0xa710, 0xa438, 0x9580, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0xa304, 0xa438, 0x9503, 0xa438, 0x0c1f, + 0xa438, 0x0d07, 0xa438, 0x8dc0, 0xa438, 0x1000, 0xa438, 0x11bd, + 0xa438, 0xcb81, 0xa438, 0xd70c, 0xa438, 0x4882, 0xa438, 0xd706, + 0xa438, 0x407a, 0xa438, 0xd70c, 0xa438, 0x4807, 0xa438, 0xd706, + 0xa438, 0x405a, 0xa438, 0x8910, 0xa438, 0xa210, 0xa438, 0xd704, + 0xa438, 0x611c, 0xa438, 0x0cc0, 0xa438, 0x0080, 0xa438, 0x0c03, + 0xa438, 0x0101, 0xa438, 0x0ce0, 0xa438, 0x03a0, 0xa438, 0xccb5, + 0xa438, 0x0cc0, 0xa438, 0x0080, 0xa438, 0x0c03, 0xa438, 0x0102, + 0xa438, 0x0ce0, 0xa438, 0x0340, 0xa438, 0xcc52, 0xa438, 0xd706, + 0xa438, 0x42ba, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c1f, + 0xa438, 0x0f1c, 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x1175, + 0xa438, 0xd70c, 0xa438, 0x5fb3, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x8f1f, 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x1175, + 0xa438, 0xd70c, 0xa438, 0x7f33, 0xa438, 0x8190, 0xa438, 0x8204, + 0xa438, 0xf016, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c1f, + 0xa438, 0x0f1b, 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x1175, + 0xa438, 0xd70c, 0xa438, 0x5fb3, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x8f1f, 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x1175, + 0xa438, 0xd70c, 0xa438, 0x7f33, 0xa438, 0xd70c, 0xa438, 0x6047, + 0xa438, 0xf002, 0xa438, 0xf00c, 0xa438, 0xd403, 0xa438, 0xcb82, + 0xa438, 0x1000, 0xa438, 0x110d, 0xa438, 0xd40a, 0xa438, 0x1000, + 0xa438, 0x110d, 0xa438, 0xd70c, 0xa438, 0x4247, 0xa438, 0x1000, + 0xa438, 0x1225, 0xa438, 0x8a40, 0xa438, 0x1000, 0xa438, 0x1118, + 0xa438, 0xa104, 0xa438, 0x1000, 0xa438, 0x112a, 0xa438, 0x8104, + 0xa438, 0x1000, 0xa438, 0x1121, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa704, 0xa438, 0x9503, 0xa438, 0xcb88, 0xa438, 0xf012, + 0xa438, 0xa210, 0xa438, 0xa00a, 0xa438, 0xaa40, 0xa438, 0x1000, + 0xa438, 0x1118, 0xa438, 0xa104, 0xa438, 0x1000, 0xa438, 0x112a, + 0xa438, 0x8104, 0xa438, 0x1000, 0xa438, 0x1121, 0xa438, 0xa190, + 0xa438, 0xa284, 0xa438, 0xa404, 0xa438, 0x8a10, 0xa438, 0x8a80, + 0xa438, 0xcb84, 0xa438, 0xd13e, 0xa438, 0xd05a, 0xa438, 0xd13e, + 0xa438, 0xd06b, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd700, + 0xa438, 0x3559, 0xa438, 0x874b, 0xa438, 0xfffb, 0xa438, 0xd700, + 0xa438, 0x604b, 0xa438, 0xcb8a, 0xa438, 0x1000, 0xa438, 0x1175, + 0xa438, 0xd700, 0xa438, 0x3659, 0xa438, 0x8754, 0xa438, 0xfffb, + 0xa438, 0xd700, 0xa438, 0x606b, 0xa438, 0xcb8b, 0xa438, 0x5eeb, + 0xa438, 0xd700, 0xa438, 0x6041, 0xa438, 0xa402, 0xa438, 0xcb8c, + 0xa438, 0xd706, 0xa438, 0x609a, 0xa438, 0xd1f5, 0xa438, 0xd048, + 0xa438, 0xf003, 0xa438, 0xd160, 0xa438, 0xd04b, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xcb8d, + 0xa438, 0x8710, 0xa438, 0xd71f, 0xa438, 0x5fd4, 0xa438, 0xb920, + 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd71f, 0xa438, 0x7fb4, + 0xa438, 0x9920, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd71f, + 0xa438, 0x6105, 0xa438, 0x6054, 0xa438, 0xfffb, 0xa438, 0x1000, + 0xa438, 0x1175, 0xa438, 0xd700, 0xa438, 0x5fab, 0xa438, 0xfff0, + 0xa438, 0xa710, 0xa438, 0xb820, 0xa438, 0x1000, 0xa438, 0x1175, + 0xa438, 0xd71f, 0xa438, 0x7fa5, 0xa438, 0x9820, 0xa438, 0xd114, + 0xa438, 0xd040, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd700, + 0xa438, 0x5fba, 0xa438, 0xd704, 0xa438, 0x5f76, 0xa438, 0xd700, + 0xa438, 0x5f34, 0xa438, 0xd700, 0xa438, 0x6081, 0xa438, 0xd706, + 0xa438, 0x405a, 0xa438, 0xa480, 0xa438, 0xcb86, 0xa438, 0xd706, + 0xa438, 0x609a, 0xa438, 0xd1c8, 0xa438, 0xd045, 0xa438, 0xf003, + 0xa438, 0xd17a, 0xa438, 0xd04b, 0xa438, 0x1000, 0xa438, 0x1175, + 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0x0cc0, 0xa438, 0x0000, + 0xa438, 0x0c03, 0xa438, 0x0101, 0xa438, 0x0ce0, 0xa438, 0x0320, + 0xa438, 0xcc29, 0xa438, 0xa208, 0xa438, 0x8204, 0xa438, 0xd114, + 0xa438, 0xd040, 0xa438, 0xd700, 0xa438, 0x5ff4, 0xa438, 0x1800, + 0xa438, 0x0bc3, 0xa438, 0xa00a, 0xa438, 0x9308, 0xa438, 0xb210, + 0xa438, 0xb301, 0xa438, 0x1000, 0xa438, 0x1175, 0xa438, 0xd701, + 0xa438, 0x5fa4, 0xa438, 0xb302, 0xa438, 0x9210, 0xa438, 0x800a, + 0xa438, 0x1800, 0xa438, 0x0573, 0xa436, 0xA10E, 0xa438, 0x0572, + 0xa436, 0xA10C, 0xa438, 0x0e47, 0xa436, 0xA10A, 0xa438, 0x0fd2, + 0xa436, 0xA108, 0xa438, 0x1503, 0xa436, 0xA106, 0xa438, 0x0c0d, + 0xa436, 0xA104, 0xa438, 0x01ac, 0xa436, 0xA102, 0xa438, 0x0956, + 0xa436, 0xA100, 0xa438, 0x001c, 0xa436, 0xA110, 0xa438, 0x00ff, + 0xa436, 0xA016, 0xa438, 0x0020, 0xa436, 0xA012, 0xa438, 0x1ff8, + 0xa436, 0xA014, 0xa438, 0x0000, 0xa438, 0x85f0, 0xa438, 0xa2a0, + 0xa438, 0x8880, 0xa438, 0x0d00, 0xa438, 0xc500, 0xa438, 0x800a, + 0xa438, 0xae01, 0xa436, 0xA164, 0xa438, 0x1013, 0xa436, 0xA166, + 0xa438, 0x1014, 0xa436, 0xA168, 0xa438, 0x0F98, 0xa436, 0xA16A, + 0xa438, 0x0DCA, 0xa436, 0xA16C, 0xa438, 0x109B, 0xa436, 0xA16E, + 0xa438, 0x10A2, 0xa436, 0xA170, 0xa438, 0x0F33, 0xa436, 0xA172, + 0xa438, 0x0F6E, 0xa436, 0xA162, 0xa438, 0x00ff, 0xa436, 0xb87c, + 0xa438, 0x8a45, 0xa436, 0xb87e, 0xa438, 0xaf8a, 0xa438, 0x5daf, + 0xa438, 0x8a63, 0xa438, 0xaf8a, 0xa438, 0x6caf, 0xa438, 0x8a78, + 0xa438, 0xaf8a, 0xa438, 0x87af, 0xa438, 0x8a90, 0xa438, 0xaf8a, + 0xa438, 0x96af, 0xa438, 0x8acf, 0xa438, 0x028a, 0xa438, 0xecaf, + 0xa438, 0x211f, 0xa438, 0x0265, 0xa438, 0xcb02, 0xa438, 0x8fb4, + 0xa438, 0xaf21, 0xa438, 0x6fa1, 0xa438, 0x1903, 0xa438, 0x028f, + 0xa438, 0x3d02, 0xa438, 0x2261, 0xa438, 0xaf21, 0xa438, 0x2ead, + 0xa438, 0x2109, 0xa438, 0xe08f, 0xa438, 0xffac, 0xa438, 0x2503, + 0xa438, 0xaf4b, 0xa438, 0xeeaf, 0xa438, 0x4beb, 0xa438, 0xad35, + 0xa438, 0x03af, 0xa438, 0x421b, 0xa438, 0xaf42, 0xa438, 0x5ce1, + 0xa438, 0x8652, 0xa438, 0xaf49, 0xa438, 0xdcef, 0xa438, 0x31e1, + 0xa438, 0x8ffd, 0xa438, 0xac28, 0xa438, 0x2ebf, 0xa438, 0x6dda, + 0xa438, 0x0274, 0xa438, 0x95ad, 0xa438, 0x2825, 0xa438, 0xe28f, + 0xa438, 0xe4ef, 0xa438, 0x131b, 0xa438, 0x12ac, 0xa438, 0x2f10, + 0xa438, 0xef31, 0xa438, 0x1f44, 0xa438, 0xef13, 0xa438, 0xbf6c, + 0xa438, 0xcf02, 0xa438, 0x7476, 0xa438, 0x1a12, 0xa438, 0xae08, + 0xa438, 0xbf6c, 0xa438, 0xcf02, 0xa438, 0x744a, 0xa438, 0xef13, + 0xa438, 0xaf08, 0xa438, 0x66af, 0xa438, 0x085c, 0xa438, 0xe18f, + 0xa438, 0xe3ad, 0xa438, 0x2706, 0xa438, 0xe58f, 0xa438, 0xe9af, + 0xa438, 0x4091, 0xa438, 0xe08f, 0xa438, 0xe1ac, 0xa438, 0x2002, + 0xa438, 0xae03, 0xa438, 0xe18f, 0xa438, 0xe2e5, 0xa438, 0x8fe9, + 0xa438, 0xaf3f, 0xa438, 0xe5f8, 0xa438, 0xe08f, 0xa438, 0xe7a0, + 0xa438, 0x0005, 0xa438, 0x028b, 0xa438, 0x0dae, 0xa438, 0x13a0, + 0xa438, 0x0105, 0xa438, 0x028b, 0xa438, 0x96ae, 0xa438, 0x0ba0, + 0xa438, 0x0205, 0xa438, 0x028b, 0xa438, 0xc2ae, 0xa438, 0x0302, + 0xa438, 0x8c18, 0xa438, 0xfc04, 0xa438, 0xf8fa, 0xa438, 0xef69, + 0xa438, 0xfafb, 0xa438, 0xe080, 0xa438, 0x15ad, 0xa438, 0x2343, + 0xa438, 0xe08f, 0xa438, 0xfdac, 0xa438, 0x203d, 0xa438, 0xe08f, + 0xa438, 0xe9a0, 0xa438, 0x0002, 0xa438, 0xae35, 0xa438, 0xee8f, + 0xa438, 0xe800, 0xa438, 0x028c, 0xa438, 0xc8bf, 0xa438, 0x8feb, + 0xa438, 0xd819, 0xa438, 0xd9ef, 0xa438, 0x64bf, 0xa438, 0x8fef, + 0xa438, 0xd819, 0xa438, 0xd9ef, 0xa438, 0x7402, 0xa438, 0x73a4, + 0xa438, 0xad50, 0xa438, 0x18ee, 0xa438, 0x8fff, 0xa438, 0x0102, + 0xa438, 0x8e1b, 0xa438, 0x0273, 0xa438, 0xd7ef, 0xa438, 0x47e5, + 0xa438, 0x85a6, 0xa438, 0xe485, 0xa438, 0xa5ee, 0xa438, 0x8fe7, + 0xa438, 0x01ae, 0xa438, 0x33bf, 0xa438, 0x8f87, 0xa438, 0x0274, + 0xa438, 0x4abf, 0xa438, 0x8f8d, 0xa438, 0x0274, 0xa438, 0x4abf, + 0xa438, 0x8f93, 0xa438, 0x0274, 0xa438, 0x4abf, 0xa438, 0x8f99, + 0xa438, 0x0274, 0xa438, 0x4abf, 0xa438, 0x8f84, 0xa438, 0x0274, + 0xa438, 0x53bf, 0xa438, 0x8f8a, 0xa438, 0x0274, 0xa438, 0x53bf, + 0xa438, 0x8f90, 0xa438, 0x0274, 0xa438, 0x53bf, 0xa438, 0x8f96, + 0xa438, 0x0274, 0xa438, 0x5302, 0xa438, 0x2261, 0xa438, 0xfffe, + 0xa438, 0xef96, 0xa438, 0xfefc, 0xa438, 0x04f8, 0xa438, 0xfafb, + 0xa438, 0xe085, 0xa438, 0xa5e1, 0xa438, 0x85a6, 0xa438, 0xef64, + 0xa438, 0xd000, 0xa438, 0xe18f, 0xa438, 0xeaef, 0xa438, 0x7402, + 0xa438, 0x73f2, 0xa438, 0xad50, 0xa438, 0x10e0, 0xa438, 0x8fe8, + 0xa438, 0xac24, 0xa438, 0x06ee, 0xa438, 0x8fe7, 0xa438, 0x02ae, + 0xa438, 0x04ee, 0xa438, 0x8fe7, 0xa438, 0x03ff, 0xa438, 0xfefc, + 0xa438, 0x04f8, 0xa438, 0xf9fa, 0xa438, 0xef69, 0xa438, 0xfb02, + 0xa438, 0x8cc8, 0xa438, 0xbf8f, 0xa438, 0xebd8, 0xa438, 0x19d9, + 0xa438, 0xbf8f, 0xa438, 0xf3e2, 0xa438, 0x8fe8, 0xa438, 0xef32, + 0xa438, 0x4b02, 0xa438, 0x1a93, 0xa438, 0xdc19, 0xa438, 0xdd12, + 0xa438, 0xe68f, 0xa438, 0xe8e3, 0xa438, 0x8fe9, 0xa438, 0x1b23, + 0xa438, 0xad37, 0xa438, 0x07e0, 0xa438, 0x8fff, 0xa438, 0x4802, + 0xa438, 0xae09, 0xa438, 0xee8f, 0xa438, 0xe810, 0xa438, 0x1f00, + 0xa438, 0xe48f, 0xa438, 0xfee4, 0xa438, 0x8fff, 0xa438, 0x028e, + 0xa438, 0x1b02, 0xa438, 0x73d7, 0xa438, 0xef47, 0xa438, 0xe585, + 0xa438, 0xa6e4, 0xa438, 0x85a5, 0xa438, 0xee8f, 0xa438, 0xe701, + 0xa438, 0xffef, 0xa438, 0x96fe, 0xa438, 0xfdfc, 0xa438, 0x04f8, + 0xa438, 0xf9fa, 0xa438, 0xef69, 0xa438, 0xfafb, 0xa438, 0x028c, + 0xa438, 0xc8bf, 0xa438, 0x8feb, 0xa438, 0xd819, 0xa438, 0xd9ef, + 0xa438, 0x64bf, 0xa438, 0x8fef, 0xa438, 0xd819, 0xa438, 0xd9ef, + 0xa438, 0x7402, 0xa438, 0x73a4, 0xa438, 0xad50, 0xa438, 0x27bf, + 0xa438, 0x8fed, 0xa438, 0xd819, 0xa438, 0xd9ef, 0xa438, 0x64bf, + 0xa438, 0x8ff1, 0xa438, 0xd819, 0xa438, 0xd9ef, 0xa438, 0x7402, + 0xa438, 0x73a4, 0xa438, 0xad50, 0xa438, 0x11e2, 0xa438, 0x8fe8, + 0xa438, 0xe38f, 0xa438, 0xe9ef, 0xa438, 0x0258, 0xa438, 0x0f1b, + 0xa438, 0x03ac, 0xa438, 0x2744, 0xa438, 0xae09, 0xa438, 0xe08f, + 0xa438, 0xfee4, 0xa438, 0x8fff, 0xa438, 0x028e, 0xa438, 0x1b02, + 0xa438, 0x2261, 0xa438, 0xee8f, 0xa438, 0xe700, 0xa438, 0xbf8f, + 0xa438, 0x8702, 0xa438, 0x744a, 0xa438, 0xbf8f, 0xa438, 0x8d02, + 0xa438, 0x744a, 0xa438, 0xbf8f, 0xa438, 0x9302, 0xa438, 0x744a, + 0xa438, 0xbf8f, 0xa438, 0x9902, 0xa438, 0x744a, 0xa438, 0xbf8f, + 0xa438, 0x8402, 0xa438, 0x7453, 0xa438, 0xbf8f, 0xa438, 0x8a02, + 0xa438, 0x7453, 0xa438, 0xbf8f, 0xa438, 0x9002, 0xa438, 0x7453, + 0xa438, 0xbf8f, 0xa438, 0x9602, 0xa438, 0x7453, 0xa438, 0xae1f, + 0xa438, 0x12e6, 0xa438, 0x8fe8, 0xa438, 0xe08f, 0xa438, 0xffe4, + 0xa438, 0x8ffe, 0xa438, 0x028d, 0xa438, 0x3e02, 0xa438, 0x8e1b, + 0xa438, 0x0273, 0xa438, 0xd7ef, 0xa438, 0x47e5, 0xa438, 0x85a6, + 0xa438, 0xe485, 0xa438, 0xa5ee, 0xa438, 0x8fe7, 0xa438, 0x01ff, + 0xa438, 0xfeef, 0xa438, 0x96fe, 0xa438, 0xfdfc, 0xa438, 0x04f8, + 0xa438, 0xf9fa, 0xa438, 0xef69, 0xa438, 0xfafb, 0xa438, 0x1f22, + 0xa438, 0xee8f, 0xa438, 0xeb00, 0xa438, 0xee8f, 0xa438, 0xec00, + 0xa438, 0xee8f, 0xa438, 0xed00, 0xa438, 0xee8f, 0xa438, 0xee00, + 0xa438, 0x1f33, 0xa438, 0xee8f, 0xa438, 0xe500, 0xa438, 0xee8f, + 0xa438, 0xe600, 0xa438, 0xbf53, 0xa438, 0x7d02, 0xa438, 0x7662, + 0xa438, 0xef64, 0xa438, 0xbf8f, 0xa438, 0xe5d8, 0xa438, 0x19d9, + 0xa438, 0xef74, 0xa438, 0x0273, 0xa438, 0xbfef, 0xa438, 0x47dd, + 0xa438, 0x89dc, 0xa438, 0xd1ff, 0xa438, 0xb1fe, 0xa438, 0x13ad, + 0xa438, 0x3be0, 0xa438, 0x0d73, 0xa438, 0xbf8f, 0xa438, 0xedd8, + 0xa438, 0x19d9, 0xa438, 0xef64, 0xa438, 0xef47, 0xa438, 0x0273, + 0xa438, 0xa4ad, 0xa438, 0x5003, 0xa438, 0xdd89, 0xa438, 0xdcef, + 0xa438, 0x64bf, 0xa438, 0x8feb, 0xa438, 0xd819, 0xa438, 0xd91a, + 0xa438, 0x46dd, 0xa438, 0x89dc, 0xa438, 0x12ad, 0xa438, 0x32b0, + 0xa438, 0x0d42, 0xa438, 0xdc19, 0xa438, 0xddff, 0xa438, 0xfeef, + 0xa438, 0x96fe, 0xa438, 0xfdfc, 0xa438, 0x04f8, 0xa438, 0xf9fa, + 0xa438, 0xef69, 0xa438, 0xfafb, 0xa438, 0x1f22, 0xa438, 0xd6ff, + 0xa438, 0xffef, 0xa438, 0x03bf, 0xa438, 0x8ff3, 0xa438, 0xef32, + 0xa438, 0x4b02, 0xa438, 0x1a93, 0xa438, 0xef30, 0xa438, 0xd819, + 0xa438, 0xd9ef, 0xa438, 0x7402, 0xa438, 0x73a4, 0xa438, 0xac50, + 0xa438, 0x04ef, 0xa438, 0x32ef, 0xa438, 0x64e0, 0xa438, 0x8fe9, + 0xa438, 0x12ef, 0xa438, 0x121b, 0xa438, 0x10ac, 0xa438, 0x2fd9, + 0xa438, 0xef03, 0xa438, 0xbf8f, 0xa438, 0xf348, 0xa438, 0x021a, + 0xa438, 0x90ec, 0xa438, 0xff19, 0xa438, 0xecff, 0xa438, 0xd001, + 0xa438, 0xae03, 0xa438, 0x0c01, 0xa438, 0x83a3, 0xa438, 0x00fa, + 0xa438, 0xe18f, 0xa438, 0xff1e, 0xa438, 0x10e5, 0xa438, 0x8fff, + 0xa438, 0xfffe, 0xa438, 0xef96, 0xa438, 0xfefd, 0xa438, 0xfc04, + 0xa438, 0x725a, 0xa438, 0x725d, 0xa438, 0x7260, 0xa438, 0x7263, + 0xa438, 0x71fa, 0xa438, 0x71fd, 0xa438, 0x7200, 0xa438, 0x7203, + 0xa438, 0x8f4b, 0xa438, 0x8f4e, 0xa438, 0x8f51, 0xa438, 0x8f54, + 0xa438, 0x8f57, 0xa438, 0x8f5a, 0xa438, 0x8f5d, 0xa438, 0x8f60, + 0xa438, 0x722a, 0xa438, 0x722d, 0xa438, 0x7230, 0xa438, 0x7233, + 0xa438, 0x721e, 0xa438, 0x7221, 0xa438, 0x7224, 0xa438, 0x7227, + 0xa438, 0x7212, 0xa438, 0x7215, 0xa438, 0x7218, 0xa438, 0x721b, + 0xa438, 0x724e, 0xa438, 0x7251, 0xa438, 0x7254, 0xa438, 0x7257, + 0xa438, 0x7242, 0xa438, 0x7245, 0xa438, 0x7248, 0xa438, 0x724b, + 0xa438, 0x7236, 0xa438, 0x7239, 0xa438, 0x723c, 0xa438, 0x723f, + 0xa438, 0x8f84, 0xa438, 0x8f8a, 0xa438, 0x8f90, 0xa438, 0x8f96, + 0xa438, 0x8f9c, 0xa438, 0x8fa2, 0xa438, 0x8fa8, 0xa438, 0x8fae, + 0xa438, 0x8f87, 0xa438, 0x8f8d, 0xa438, 0x8f93, 0xa438, 0x8f99, + 0xa438, 0x8f9f, 0xa438, 0x8fa5, 0xa438, 0x8fab, 0xa438, 0x8fb1, + 0xa438, 0x8f63, 0xa438, 0x8f66, 0xa438, 0x8f69, 0xa438, 0x8f6c, + 0xa438, 0x8f6f, 0xa438, 0x8f72, 0xa438, 0x8f75, 0xa438, 0x8f78, + 0xa438, 0x8f7b, 0xa438, 0xf8f9, 0xa438, 0xfaef, 0xa438, 0x69fa, + 0xa438, 0xfbe2, 0xa438, 0x8fff, 0xa438, 0xad30, 0xa438, 0x06d1, + 0xa438, 0x00d3, 0xa438, 0x00ae, 0xa438, 0x04d1, 0xa438, 0x01d3, + 0xa438, 0x0fbf, 0xa438, 0x8d99, 0xa438, 0xd700, 0xa438, 0x0802, + 0xa438, 0x7677, 0xa438, 0xef13, 0xa438, 0xbf8d, 0xa438, 0xa1d7, + 0xa438, 0x0008, 0xa438, 0x0276, 0xa438, 0x77ad, 0xa438, 0x3106, + 0xa438, 0xd100, 0xa438, 0xd300, 0xa438, 0xae04, 0xa438, 0xd101, + 0xa438, 0xd30f, 0xa438, 0xbf8d, 0xa438, 0xa9d7, 0xa438, 0x0008, + 0xa438, 0x0276, 0xa438, 0x77ef, 0xa438, 0x13bf, 0xa438, 0x8db1, + 0xa438, 0xd700, 0xa438, 0x0802, 0xa438, 0x7677, 0xa438, 0xad32, + 0xa438, 0x06d1, 0xa438, 0x00d3, 0xa438, 0x00ae, 0xa438, 0x04d1, + 0xa438, 0x01d3, 0xa438, 0x03bf, 0xa438, 0x8db9, 0xa438, 0xd700, + 0xa438, 0x1802, 0xa438, 0x7677, 0xa438, 0xef13, 0xa438, 0xbf8d, + 0xa438, 0xd1d7, 0xa438, 0x0018, 0xa438, 0x0276, 0xa438, 0x77ad, + 0xa438, 0x3304, 0xa438, 0xd101, 0xa438, 0xae02, 0xa438, 0xd100, + 0xa438, 0xd300, 0xa438, 0xbf8d, 0xa438, 0xe9d7, 0xa438, 0x0010, + 0xa438, 0x0276, 0xa438, 0x77ef, 0xa438, 0x13bf, 0xa438, 0x8df9, + 0xa438, 0xd700, 0xa438, 0x1002, 0xa438, 0x7677, 0xa438, 0x1f33, + 0xa438, 0xe38f, 0xa438, 0xfdac, 0xa438, 0x3803, 0xa438, 0xaf8f, + 0xa438, 0x35ad, 0xa438, 0x3405, 0xa438, 0xe18f, 0xa438, 0xfbae, + 0xa438, 0x02d1, 0xa438, 0x00bf, 0xa438, 0x8e09, 0xa438, 0xd700, + 0xa438, 0x1202, 0xa438, 0x7677, 0xa438, 0xad35, 0xa438, 0x06d1, + 0xa438, 0x01d3, 0xa438, 0x04ae, 0xa438, 0x04d1, 0xa438, 0x00d3, + 0xa438, 0x00bf, 0xa438, 0x6f8a, 0xa438, 0x0274, 0xa438, 0x76bf, + 0xa438, 0x6bd0, 0xa438, 0x0274, 0xa438, 0x951a, 0xa438, 0x13bf, + 0xa438, 0x6bd0, 0xa438, 0x0274, 0xa438, 0x76bf, 0xa438, 0x6d2c, + 0xa438, 0x0274, 0xa438, 0x95ac, 0xa438, 0x280b, 0xa438, 0xbf6d, + 0xa438, 0x2f02, 0xa438, 0x7495, 0xa438, 0xac28, 0xa438, 0x02ae, + 0xa438, 0x0bad, 0xa438, 0x3504, 0xa438, 0xd101, 0xa438, 0xae0d, + 0xa438, 0xd10f, 0xa438, 0xae09, 0xa438, 0xad35, 0xa438, 0x04d1, + 0xa438, 0x05ae, 0xa438, 0x02d1, 0xa438, 0x0fbf, 0xa438, 0x8f7e, + 0xa438, 0x0274, 0xa438, 0x76e3, 0xa438, 0x8ffc, 0xa438, 0xac38, + 0xa438, 0x05ad, 0xa438, 0x3618, 0xa438, 0xae08, 0xa438, 0xbf71, + 0xa438, 0x9d02, 0xa438, 0x744a, 0xa438, 0xae0e, 0xa438, 0xd102, + 0xa438, 0xbf8f, 0xa438, 0x8102, 0xa438, 0x7476, 0xa438, 0xbf71, + 0xa438, 0x9d02, 0xa438, 0x7476, 0xa438, 0xfffe, 0xa438, 0xef96, + 0xa438, 0xfefd, 0xa438, 0xfc04, 0xa438, 0xf91f, 0xa438, 0x33e3, + 0xa438, 0x8ffd, 0xa438, 0xad38, 0xa438, 0x0302, 0xa438, 0x8e1b, + 0xa438, 0xfd04, 0xa438, 0x55b0, 0xa438, 0x2055, 0xa438, 0xb0a0, + 0xa438, 0x55b1, 0xa438, 0x2055, 0xa438, 0xb1a0, 0xa438, 0xfcb0, + 0xa438, 0x22fc, 0xa438, 0xb0a2, 0xa438, 0xfcb1, 0xa438, 0x22fc, + 0xa438, 0xb1a2, 0xa438, 0xfdad, 0xa438, 0xdaca, 0xa438, 0xadda, + 0xa438, 0x97ad, 0xa438, 0xda64, 0xa438, 0xadda, 0xa438, 0x20ad, + 0xa438, 0xdafd, 0xa438, 0xaddc, 0xa438, 0xcaad, 0xa438, 0xdc97, + 0xa438, 0xaddc, 0xa438, 0x64ad, 0xa438, 0xdca7, 0xa438, 0xbf1e, + 0xa438, 0x20bc, 0xa438, 0x3299, 0xa438, 0xadfe, 0xa438, 0x85ad, + 0xa438, 0xfe44, 0xa438, 0xadfe, 0xa438, 0x30ad, 0xa438, 0xfeff, + 0xa438, 0xae00, 0xa438, 0xebae, 0xa438, 0x00aa, 0xa438, 0xae00, + 0xa438, 0x96ae, 0xa438, 0x00dd, 0xa438, 0xad94, 0xa438, 0xccad, + 0xa438, 0x9499, 0xa438, 0xad94, 0xa438, 0x88ad, 0xa438, 0x94ff, + 0xa438, 0xad94, 0xa438, 0xeead, 0xa438, 0x94bb, 0xa438, 0xad94, + 0xa438, 0xaaad, 0xa438, 0x94f9, 0xa438, 0xe28f, 0xa438, 0xffee, + 0xa438, 0x8fff, 0xa438, 0x00e3, 0xa438, 0x8ffd, 0xa438, 0xee8f, + 0xa438, 0xfd01, 0xa438, 0xee8f, 0xa438, 0xfc01, 0xa438, 0x028e, + 0xa438, 0x1be6, 0xa438, 0x8fff, 0xa438, 0xe78f, 0xa438, 0xfdee, + 0xa438, 0x8ffc, 0xa438, 0x00ee, 0xa438, 0x8fe7, 0xa438, 0x00fd, + 0xa438, 0x0400, 0xa436, 0xb85e, 0xa438, 0x211C, 0xa436, 0xb860, + 0xa438, 0x216C, 0xa436, 0xb862, 0xa438, 0x212B, 0xa436, 0xb864, + 0xa438, 0x4BE8, 0xa436, 0xb886, 0xa438, 0x4209, 0xa436, 0xb888, + 0xa438, 0x49DA, 0xa436, 0xb88a, 0xa438, 0x085A, 0xa436, 0xb88c, + 0xa438, 0x3FDF, 0xa436, 0xb838, 0xa438, 0x00ff, 0xb820, 0x0010, + 0xa466, 0x0003, 0xa436, 0x8528, 0xa438, 0x0000, 0xa436, 0x85f8, + 0xa438, 0xaf86, 0xa438, 0x10af, 0xa438, 0x8622, 0xa438, 0xaf86, + 0xa438, 0x4aaf, 0xa438, 0x8658, 0xa438, 0xaf86, 0xa438, 0x64af, + 0xa438, 0x8685, 0xa438, 0xaf86, 0xa438, 0xc4af, 0xa438, 0x86cf, + 0xa438, 0xa104, 0xa438, 0x0ce0, 0xa438, 0x8394, 0xa438, 0xad20, + 0xa438, 0x03af, 0xa438, 0x2b67, 0xa438, 0xaf2a, 0xa438, 0xf0af, + 0xa438, 0x2b8d, 0xa438, 0xbf6b, 0xa438, 0x7202, 0xa438, 0x72dc, + 0xa438, 0xa106, 0xa438, 0x19e1, 0xa438, 0x8164, 0xa438, 0xbf6d, + 0xa438, 0x5b02, 0xa438, 0x72bd, 0xa438, 0x0d13, 0xa438, 0xbf6d, + 0xa438, 0x5802, 0xa438, 0x72bd, 0xa438, 0x0d13, 0xa438, 0xbf6d, + 0xa438, 0x6a02, 0xa438, 0x72bd, 0xa438, 0x0275, 0xa438, 0x12af, + 0xa438, 0x380d, 0xa438, 0x0d55, 0xa438, 0x5d07, 0xa438, 0xffbf, + 0xa438, 0x8b09, 0xa438, 0x0272, 0xa438, 0x91af, 0xa438, 0x3ee2, + 0xa438, 0x023d, 0xa438, 0xffbf, 0xa438, 0x8b09, 0xa438, 0x0272, + 0xa438, 0x9aaf, 0xa438, 0x41a6, 0xa438, 0x0223, 0xa438, 0x24f8, + 0xa438, 0xfaef, 0xa438, 0x69bf, 0xa438, 0x6b9c, 0xa438, 0x0272, + 0xa438, 0xdce0, 0xa438, 0x8f7a, 0xa438, 0x1f01, 0xa438, 0x9e06, + 0xa438, 0xe58f, 0xa438, 0x7a02, 0xa438, 0x7550, 0xa438, 0xef96, + 0xa438, 0xfefc, 0xa438, 0xaf06, 0xa438, 0x8702, 0xa438, 0x1cac, + 0xa438, 0xf8f9, 0xa438, 0xfaef, 0xa438, 0x69fb, 0xa438, 0xd78f, + 0xa438, 0x97ae, 0xa438, 0x00bf, 0xa438, 0x6d4f, 0xa438, 0x0272, + 0xa438, 0x91d3, 0xa438, 0x00a3, 0xa438, 0x1202, 0xa438, 0xae1b, + 0xa438, 0xbf6d, 0xa438, 0x52ef, 0xa438, 0x1302, 0xa438, 0x72bd, + 0xa438, 0xef97, 0xa438, 0xd9bf, 0xa438, 0x6d55, 0xa438, 0x0272, + 0xa438, 0xbd17, 0xa438, 0x13ae, 0xa438, 0xe6bf, 0xa438, 0x6d4f, + 0xa438, 0x0272, 0xa438, 0x9aff, 0xa438, 0xef96, 0xa438, 0xfefd, + 0xa438, 0xfcaf, 0xa438, 0x1c05, 0xa438, 0x0000, 0xa438, 0x021b, + 0xa438, 0xf202, 0xa438, 0x8700, 0xa438, 0xaf1b, 0xa438, 0x73ad, + 0xa438, 0x2003, 0xa438, 0x0206, 0xa438, 0x6ead, 0xa438, 0x2108, + 0xa438, 0xe280, 0xa438, 0x51f7, 0xa438, 0x30e6, 0xa438, 0x8051, + 0xa438, 0xe180, 0xa438, 0x421e, 0xa438, 0x10e5, 0xa438, 0x8042, + 0xa438, 0xe0ff, 0xa438, 0xeee1, 0xa438, 0x8043, 0xa438, 0x1e10, + 0xa438, 0xe580, 0xa438, 0x43e0, 0xa438, 0xffef, 0xa438, 0xad20, + 0xa438, 0x04ee, 0xa438, 0x804f, 0xa438, 0x1eaf, 0xa438, 0x0661, + 0xa438, 0xf8fa, 0xa438, 0xef69, 0xa438, 0xe080, 0xa438, 0x4fac, + 0xa438, 0x2417, 0xa438, 0xe080, 0xa438, 0x44ad, 0xa438, 0x241a, + 0xa438, 0x0287, 0xa438, 0x2fe0, 0xa438, 0x8044, 0xa438, 0xac24, + 0xa438, 0x11bf, 0xa438, 0x8b0c, 0xa438, 0x0272, 0xa438, 0x9aae, + 0xa438, 0x0902, 0xa438, 0x88c8, 0xa438, 0x028a, 0xa438, 0x9502, + 0xa438, 0x8a8a, 0xa438, 0xef96, 0xa438, 0xfefc, 0xa438, 0x04f8, + 0xa438, 0xe08f, 0xa438, 0x96a0, 0xa438, 0x0005, 0xa438, 0x0288, + 0xa438, 0x6cae, 0xa438, 0x38a0, 0xa438, 0x0105, 0xa438, 0x0287, + 0xa438, 0x75ae, 0xa438, 0x30a0, 0xa438, 0x0205, 0xa438, 0x0287, + 0xa438, 0xb3ae, 0xa438, 0x28a0, 0xa438, 0x0305, 0xa438, 0x0287, + 0xa438, 0xc9ae, 0xa438, 0x20a0, 0xa438, 0x0405, 0xa438, 0x0287, + 0xa438, 0xd6ae, 0xa438, 0x18a0, 0xa438, 0x0505, 0xa438, 0x0288, + 0xa438, 0x1aae, 0xa438, 0x10a0, 0xa438, 0x0605, 0xa438, 0x0288, + 0xa438, 0x27ae, 0xa438, 0x08a0, 0xa438, 0x0705, 0xa438, 0x0288, + 0xa438, 0x48ae, 0xa438, 0x00fc, 0xa438, 0x04f8, 0xa438, 0xfaef, + 0xa438, 0x69e0, 0xa438, 0x8018, 0xa438, 0xad25, 0xa438, 0x2c02, + 0xa438, 0x8a67, 0xa438, 0xe184, 0xa438, 0x5de5, 0xa438, 0x8f92, + 0xa438, 0xe58f, 0xa438, 0x93e5, 0xa438, 0x8f94, 0xa438, 0xe58f, + 0xa438, 0x9502, 0xa438, 0x88e6, 0xa438, 0xe184, 0xa438, 0xf759, + 0xa438, 0x0fe5, 0xa438, 0x8f7b, 0xa438, 0xe58f, 0xa438, 0x7ce5, + 0xa438, 0x8f7d, 0xa438, 0xe58f, 0xa438, 0x7eee, 0xa438, 0x8f96, + 0xa438, 0x02ae, 0xa438, 0x0302, 0xa438, 0x8a8a, 0xa438, 0xef96, + 0xa438, 0xfefc, 0xa438, 0x04f9, 0xa438, 0x0289, 0xa438, 0x19ac, + 0xa438, 0x3009, 0xa438, 0xee8f, 0xa438, 0x9603, 0xa438, 0x0288, + 0xa438, 0x8eae, 0xa438, 0x04ee, 0xa438, 0x8f96, 0xa438, 0x04fd, + 0xa438, 0x04fb, 0xa438, 0x0288, 0xa438, 0x55ad, 0xa438, 0x5004, + 0xa438, 0xee8f, 0xa438, 0x9602, 0xa438, 0xff04, 0xa438, 0xf902, + 0xa438, 0x8943, 0xa438, 0xe28f, 0xa438, 0x920c, 0xa438, 0x245a, + 0xa438, 0xf0e3, 0xa438, 0x84f7, 0xa438, 0x5bf0, 0xa438, 0x1b23, + 0xa438, 0x9e0f, 0xa438, 0x028a, 0xa438, 0x52ee, 0xa438, 0x8f96, + 0xa438, 0x0502, 0xa438, 0x888e, 0xa438, 0x0287, 0xa438, 0xffae, + 0xa438, 0x04ee, 0xa438, 0x8f96, 0xa438, 0x06fd, 0xa438, 0x04f8, + 0xa438, 0xf9fa, 0xa438, 0xef69, 0xa438, 0xfa1f, 0xa438, 0x44d2, + 0xa438, 0x04bf, 0xa438, 0x8f7f, 0xa438, 0xdc19, 0xa438, 0xdd19, + 0xa438, 0x829f, 0xa438, 0xf9fe, 0xa438, 0xef96, 0xa438, 0xfefd, + 0xa438, 0xfc04, 0xa438, 0xfb02, 0xa438, 0x8855, 0xa438, 0xad50, + 0xa438, 0x04ee, 0xa438, 0x8f96, 0xa438, 0x04ff, 0xa438, 0x04f8, + 0xa438, 0xf9fa, 0xa438, 0xef69, 0xa438, 0x0289, 0xa438, 0x19ac, + 0xa438, 0x3009, 0xa438, 0xee8f, 0xa438, 0x9607, 0xa438, 0x0288, + 0xa438, 0x8eae, 0xa438, 0x0702, 0xa438, 0x8a8a, 0xa438, 0xee8f, + 0xa438, 0x9601, 0xa438, 0xef96, 0xa438, 0xfefd, 0xa438, 0xfc04, + 0xa438, 0xfb02, 0xa438, 0x8855, 0xa438, 0xad50, 0xa438, 0x04ee, + 0xa438, 0x8f96, 0xa438, 0x06ff, 0xa438, 0x04f8, 0xa438, 0xfae0, + 0xa438, 0x8457, 0xa438, 0xe184, 0xa438, 0x58ef, 0xa438, 0x64e1, + 0xa438, 0x8f90, 0xa438, 0xd000, 0xa438, 0xef74, 0xa438, 0x0271, + 0xa438, 0xfffe, 0xa438, 0xfc04, 0xa438, 0xf8fa, 0xa438, 0xef69, + 0xa438, 0xee8f, 0xa438, 0x9601, 0xa438, 0xee8f, 0xa438, 0x9004, + 0xa438, 0xee8f, 0xa438, 0x8f40, 0xa438, 0xbf8b, 0xa438, 0x0f02, + 0xa438, 0x72dc, 0xa438, 0xe584, 0xa438, 0x5dee, 0xa438, 0x8f91, + 0xa438, 0x77ef, 0xa438, 0x96fe, 0xa438, 0xfc04, 0xa438, 0xf8fa, + 0xa438, 0xfbef, 0xa438, 0x69e1, 0xa438, 0x8f92, 0xa438, 0xbf8b, + 0xa438, 0x0f02, 0xa438, 0x72bd, 0xa438, 0xe18f, 0xa438, 0x93bf, + 0xa438, 0x8b12, 0xa438, 0x0272, 0xa438, 0xbde1, 0xa438, 0x8f94, + 0xa438, 0xbf8b, 0xa438, 0x1502, 0xa438, 0x72bd, 0xa438, 0xe18f, + 0xa438, 0x95bf, 0xa438, 0x8b18, 0xa438, 0x0272, 0xa438, 0xbd02, + 0xa438, 0x71e4, 0xa438, 0xef47, 0xa438, 0xe484, 0xa438, 0x57e5, + 0xa438, 0x8458, 0xa438, 0xef96, 0xa438, 0xfffe, 0xa438, 0xfc04, + 0xa438, 0xf8e0, 0xa438, 0x8018, 0xa438, 0xad25, 0xa438, 0x15ee, + 0xa438, 0x8f96, 0xa438, 0x00d0, 0xa438, 0x08e4, 0xa438, 0x8f92, + 0xa438, 0xe48f, 0xa438, 0x93e4, 0xa438, 0x8f94, 0xa438, 0xe48f, + 0xa438, 0x9502, 0xa438, 0x888e, 0xa438, 0xfc04, 0xa438, 0xf9e2, + 0xa438, 0x845d, 0xa438, 0xe38f, 0xa438, 0x910d, 0xa438, 0x345b, + 0xa438, 0x0f1a, 0xa438, 0x32ac, 0xa438, 0x3c09, 0xa438, 0x0c34, + 0xa438, 0x5bf0, 0xa438, 0xe784, 0xa438, 0xf7ae, 0xa438, 0x04ee, + 0xa438, 0x84f7, 0xa438, 0xf0e3, 0xa438, 0x8f91, 0xa438, 0x5b0f, + 0xa438, 0x1b23, 0xa438, 0xac37, 0xa438, 0x0ae3, 0xa438, 0x84f7, + 0xa438, 0x1e32, 0xa438, 0xe784, 0xa438, 0xf7ae, 0xa438, 0x00fd, + 0xa438, 0x04f8, 0xa438, 0xfaef, 0xa438, 0x69fa, 0xa438, 0xfbd2, + 0xa438, 0x01d3, 0xa438, 0x04d6, 0xa438, 0x8f92, 0xa438, 0xd78f, + 0xa438, 0x7bef, 0xa438, 0x97d9, 0xa438, 0xef96, 0xa438, 0xd81b, + 0xa438, 0x109e, 0xa438, 0x0480, 0xa438, 0xdcd2, 0xa438, 0x0016, + 0xa438, 0x1783, 0xa438, 0x9fed, 0xa438, 0xfffe, 0xa438, 0xef96, + 0xa438, 0xfefc, 0xa438, 0x04f8, 0xa438, 0xf9fa, 0xa438, 0xfbef, + 0xa438, 0x79fb, 0xa438, 0xcffb, 0xa438, 0xd200, 0xa438, 0xbe00, + 0xa438, 0x00ef, 0xa438, 0x1229, 0xa438, 0x40d0, 0xa438, 0x041c, + 0xa438, 0x081a, 0xa438, 0x10bf, 0xa438, 0x8b27, 0xa438, 0x0272, + 0xa438, 0xbd02, 0xa438, 0x89ee, 0xa438, 0xbf8f, 0xa438, 0x7fef, + 0xa438, 0x1249, 0xa438, 0x021a, 0xa438, 0x91d8, 0xa438, 0x19d9, + 0xa438, 0xef74, 0xa438, 0x0271, 0xa438, 0xccef, 0xa438, 0x47dd, + 0xa438, 0x89dc, 0xa438, 0x18a8, 0xa438, 0x0002, 0xa438, 0xd202, + 0xa438, 0x8990, 0xa438, 0x12a2, 0xa438, 0x04c8, 0xa438, 0xffc7, + 0xa438, 0xffef, 0xa438, 0x97ff, 0xa438, 0xfefd, 0xa438, 0xfc04, + 0xa438, 0xf8f9, 0xa438, 0xfafb, 0xa438, 0xef79, 0xa438, 0xfbbf, + 0xa438, 0x8f7f, 0xa438, 0xef12, 0xa438, 0x4902, 0xa438, 0x1a91, + 0xa438, 0xd819, 0xa438, 0xd9ef, 0xa438, 0x64bf, 0xa438, 0x8f87, + 0xa438, 0xef12, 0xa438, 0x4902, 0xa438, 0x1a91, 0xa438, 0xd819, + 0xa438, 0xd9ef, 0xa438, 0x7489, 0xa438, 0x0271, 0xa438, 0xb1ad, + 0xa438, 0x502c, 0xa438, 0xef46, 0xa438, 0xdc19, 0xa438, 0xdda2, + 0xa438, 0x0006, 0xa438, 0xbf8b, 0xa438, 0x0f02, 0xa438, 0x72dc, + 0xa438, 0xa201, 0xa438, 0x06bf, 0xa438, 0x8b12, 0xa438, 0x0272, + 0xa438, 0xdca2, 0xa438, 0x0206, 0xa438, 0xbf8b, 0xa438, 0x1502, + 0xa438, 0x72dc, 0xa438, 0xbf8b, 0xa438, 0x1802, 0xa438, 0x72dc, + 0xa438, 0xbf8f, 0xa438, 0x7b1a, 0xa438, 0x92dd, 0xa438, 0xffef, + 0xa438, 0x97ff, 0xa438, 0xfefd, 0xa438, 0xfc04, 0xa438, 0xf9f8, + 0xa438, 0xfbef, 0xa438, 0x79fb, 0xa438, 0x028a, 0xa438, 0xa0bf, + 0xa438, 0x8b1b, 0xa438, 0x0272, 0xa438, 0x9a16, 0xa438, 0xbf8b, + 0xa438, 0x1e02, 0xa438, 0x72dc, 0xa438, 0xac28, 0xa438, 0x02ae, + 0xa438, 0xf4d6, 0xa438, 0x0000, 0xa438, 0xbf8b, 0xa438, 0x1b02, + 0xa438, 0x7291, 0xa438, 0xae03, 0xa438, 0x028a, 0xa438, 0x8ad2, + 0xa438, 0x00d7, 0xa438, 0x0000, 0xa438, 0xe18f, 0xa438, 0x8f1b, + 0xa438, 0x12a1, 0xa438, 0x0004, 0xa438, 0xef67, 0xa438, 0xae1d, + 0xa438, 0xef12, 0xa438, 0xbf8b, 0xa438, 0x2102, 0xa438, 0x72bd, + 0xa438, 0x12bf, 0xa438, 0x8b24, 0xa438, 0x0272, 0xa438, 0xdcef, + 0xa438, 0x64ad, 0xa438, 0x4f04, 0xa438, 0x7eff, 0xa438, 0xff16, + 0xa438, 0x0271, 0xa438, 0xccae, 0xa438, 0xd7bf, 0xa438, 0x8b2d, + 0xa438, 0x0272, 0xa438, 0x91ff, 0xa438, 0xef97, 0xa438, 0xfffc, + 0xa438, 0xfd04, 0xa438, 0xf8fa, 0xa438, 0xef69, 0xa438, 0xd104, + 0xa438, 0xbf8f, 0xa438, 0x92d8, 0xa438, 0x10dc, 0xa438, 0x1981, + 0xa438, 0x9ff9, 0xa438, 0xef96, 0xa438, 0xfefc, 0xa438, 0x04f8, + 0xa438, 0xfbfa, 0xa438, 0xef69, 0xa438, 0xbf8f, 0xa438, 0x87d0, + 0xa438, 0x08d1, 0xa438, 0xff02, 0xa438, 0x8a7c, 0xa438, 0xef96, + 0xa438, 0xfeff, 0xa438, 0xfc04, 0xa438, 0xf8fa, 0xa438, 0xef69, + 0xa438, 0xdd19, 0xa438, 0x809f, 0xa438, 0xfbef, 0xa438, 0x96fe, + 0xa438, 0xfc04, 0xa438, 0xf8e0, 0xa438, 0x8044, 0xa438, 0xf624, + 0xa438, 0xe480, 0xa438, 0x44fc, 0xa438, 0x04f8, 0xa438, 0xe080, + 0xa438, 0x4ff6, 0xa438, 0x24e4, 0xa438, 0x804f, 0xa438, 0xfc04, + 0xa438, 0xf8fa, 0xa438, 0xfbef, 0xa438, 0x79fb, 0xa438, 0xbf8b, + 0xa438, 0x2a02, 0xa438, 0x7291, 0xa438, 0xbf8b, 0xa438, 0x3302, + 0xa438, 0x7291, 0xa438, 0xd68b, 0xa438, 0x2dd7, 0xa438, 0x8b30, + 0xa438, 0x0116, 0xa438, 0xad50, 0xa438, 0x0cbf, 0xa438, 0x8b2a, + 0xa438, 0x0272, 0xa438, 0x9abf, 0xa438, 0x8b33, 0xa438, 0x0272, + 0xa438, 0x9aff, 0xa438, 0xef97, 0xa438, 0xfffe, 0xa438, 0xfc04, + 0xa438, 0xf8f9, 0xa438, 0xfaef, 0xa438, 0x49f8, 0xa438, 0xccf8, + 0xa438, 0xef96, 0xa438, 0x0272, 0xa438, 0x9a1f, 0xa438, 0x22c7, + 0xa438, 0xbd02, 0xa438, 0x72dc, 0xa438, 0xac28, 0xa438, 0x16ac, + 0xa438, 0x3008, 0xa438, 0x0271, 0xa438, 0xe4ef, 0xa438, 0x6712, + 0xa438, 0xaeee, 0xa438, 0xd700, 0xa438, 0x0202, 0xa438, 0x71ff, + 0xa438, 0xac50, 0xa438, 0x05ae, 0xa438, 0xe3d7, 0xa438, 0x0000, + 0xa438, 0xfcc4, 0xa438, 0xfcef, 0xa438, 0x94fe, 0xa438, 0xfdfc, + 0xa438, 0x04cc, 0xa438, 0xc010, 0xa438, 0x44ac, 0xa438, 0x0030, + 0xa438, 0xbce0, 0xa438, 0x74bc, 0xa438, 0xe0b8, 0xa438, 0xbce0, + 0xa438, 0xfcbc, 0xa438, 0xe011, 0xa438, 0xacb4, 0xa438, 0xddac, + 0xa438, 0xb6fa, 0xa438, 0xacb4, 0xa438, 0xf0ac, 0xa438, 0xba92, + 0xa438, 0xacb4, 0xa438, 0xffac, 0xa438, 0x5600, 0xa438, 0xacb4, + 0xa438, 0xccac, 0xa438, 0xb6ff, 0xa438, 0xb034, 0xa436, 0xb818, + 0xa438, 0x2ae4, 0xa436, 0xb81a, 0xa438, 0x380A, 0xa436, 0xb81c, + 0xa438, 0x3EDD, 0xa436, 0xb81e, 0xa438, 0x41A3, 0xa436, 0xb850, + 0xa438, 0x0684, 0xa436, 0xb852, 0xa438, 0x1C02, 0xa436, 0xb878, + 0xa438, 0x1B70, 0xa436, 0xb884, 0xa438, 0x0633, 0xa436, 0xb832, + 0xa438, 0x00ff, 0xa436, 0xacfc, 0xa438, 0x0100, 0xa436, 0xacfe, + 0xa438, 0x8000, 0xa436, 0xad00, 0xa438, 0x27ff, 0xa436, 0xad02, + 0xa438, 0x3c67, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x000f, 0xa436, 0xad00, + 0xa438, 0x47ff, 0xa436, 0xad02, 0xa438, 0x3e67, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x000f, 0xa436, 0xad00, 0xa438, 0x67ff, 0xa436, 0xad02, + 0xa438, 0x3067, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x000f, 0xa436, 0xad00, + 0xa438, 0x87ff, 0xa436, 0xad02, 0xa438, 0x3267, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x000f, 0xa436, 0xad00, 0xa438, 0xa7ff, 0xa436, 0xad02, + 0xa438, 0x3467, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x000f, 0xa436, 0xad00, + 0xa438, 0xcfff, 0xa436, 0xad02, 0xa438, 0x3667, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x000f, 0xa436, 0xad00, 0xa438, 0xefff, 0xa436, 0xad02, + 0xa438, 0x3867, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x000f, 0xa436, 0xad00, + 0xa438, 0x0fff, 0xa436, 0xad02, 0xa438, 0x3a67, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x000f, 0xa436, 0xad00, 0xa438, 0x2fff, 0xa436, 0xad02, + 0xa438, 0x3ce7, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x4fff, 0xa436, 0xad02, 0xa438, 0x3ee7, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x6fff, 0xa436, 0xad02, + 0xa438, 0x30e7, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x8fff, 0xa436, 0xad02, 0xa438, 0x32e7, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xafff, 0xa436, 0xad02, + 0xa438, 0x34e7, 0xa436, 0xad04, 0xa438, 0x1008, 0xa436, 0xad06, + 0xa438, 0xfff4, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0x36ff, 0xa436, 0xad04, + 0xa438, 0x1048, 0xa436, 0xad06, 0xa438, 0xfff5, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0x38ff, 0xa436, 0xad04, 0xa438, 0x1088, 0xa436, 0xad06, + 0xa438, 0xfff6, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0x3aff, 0xa436, 0xad04, + 0xa438, 0x10c8, 0xa436, 0xad06, 0xa438, 0xf417, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0xffff, 0xa436, 0xad04, 0xa438, 0x1109, 0xa436, 0xad06, + 0xa438, 0xf434, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x0207, 0xa436, 0xad02, 0xa438, 0xffe2, 0xa436, 0xad04, + 0xa438, 0x1149, 0xa436, 0xad06, 0xa438, 0x0455, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x2227, 0xa436, 0xad02, + 0xa438, 0xffe2, 0xa436, 0xad04, 0xa438, 0x1189, 0xa436, 0xad06, + 0xa438, 0x1476, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x4247, 0xa436, 0xad02, 0xa438, 0xffe2, 0xa436, 0xad04, + 0xa438, 0x11c9, 0xa436, 0xad06, 0xa438, 0x2517, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x6267, 0xa436, 0xad02, + 0xa438, 0xffe2, 0xa436, 0xad04, 0xa438, 0x1209, 0xa436, 0xad06, + 0xa438, 0x3534, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x0007, 0xa436, 0xad02, 0xa438, 0xffe0, 0xa436, 0xad04, + 0xa438, 0x1249, 0xa436, 0xad06, 0xa438, 0x0555, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x2027, 0xa436, 0xad02, + 0xa438, 0xffe0, 0xa436, 0xad04, 0xa438, 0x1289, 0xa436, 0xad06, + 0xa438, 0x1576, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x4047, 0xa436, 0xad02, 0xa438, 0xffe0, 0xa436, 0xad04, + 0xa438, 0x12c9, 0xa436, 0xad06, 0xa438, 0x2517, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x6067, 0xa436, 0xad02, + 0xa438, 0xffe0, 0xa436, 0xad04, 0xa438, 0x1309, 0xa436, 0xad06, + 0xa438, 0x3534, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x8087, 0xa436, 0xad02, 0xa438, 0xffe0, 0xa436, 0xad04, + 0xa438, 0x1349, 0xa436, 0xad06, 0xa438, 0x0555, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xa0a7, 0xa436, 0xad02, + 0xa438, 0xffe0, 0xa436, 0xad04, 0xa438, 0x1389, 0xa436, 0xad06, + 0xa438, 0x1576, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0xc0c7, 0xa436, 0xad02, 0xa438, 0xffe0, 0xa436, 0xad04, + 0xa438, 0x13c9, 0xa436, 0xad06, 0xa438, 0x2517, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xe0e7, 0xa436, 0xad02, + 0xa438, 0xffe0, 0xa436, 0xad04, 0xa438, 0x140b, 0xa436, 0xad06, + 0xa438, 0x3534, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x0107, 0xa436, 0xad02, 0xa438, 0xffe1, 0xa436, 0xad04, + 0xa438, 0x144b, 0xa436, 0xad06, 0xa438, 0x0555, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x2127, 0xa436, 0xad02, + 0xa438, 0xffe1, 0xa436, 0xad04, 0xa438, 0x148b, 0xa436, 0xad06, + 0xa438, 0x1576, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x4147, 0xa436, 0xad02, 0xa438, 0xffe1, 0xa436, 0xad04, + 0xa438, 0x14cb, 0xa436, 0xad06, 0xa438, 0x2417, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x6167, 0xa436, 0xad02, + 0xa438, 0xffe1, 0xa436, 0xad04, 0xa438, 0x5109, 0xa436, 0xad06, + 0xa438, 0x3434, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x8287, 0xa436, 0xad02, 0xa438, 0xffe2, 0xa436, 0xad04, + 0xa438, 0x5149, 0xa436, 0xad06, 0xa438, 0x0455, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xa2a7, 0xa436, 0xad02, + 0xa438, 0xffe2, 0xa436, 0xad04, 0xa438, 0x5189, 0xa436, 0xad06, + 0xa438, 0x1476, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0xc2c7, 0xa436, 0xad02, 0xa438, 0xffe2, 0xa436, 0xad04, + 0xa438, 0x51c9, 0xa436, 0xad06, 0xa438, 0x2417, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xe2e7, 0xa436, 0xad02, + 0xa438, 0xffe2, 0xa436, 0xad04, 0xa438, 0x5009, 0xa436, 0xad06, + 0xa438, 0x3434, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x0a0f, 0xa436, 0xad02, 0xa438, 0xffe2, 0xa436, 0xad04, + 0xa438, 0x5049, 0xa436, 0xad06, 0xa438, 0x0455, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x2a2f, 0xa436, 0xad02, + 0xa438, 0xffe2, 0xa436, 0xad04, 0xa438, 0x5089, 0xa436, 0xad06, + 0xa438, 0x1476, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x4a4f, 0xa436, 0xad02, 0xa438, 0xffe2, 0xa436, 0xad04, + 0xa438, 0x50c9, 0xa436, 0xad06, 0xa438, 0x2517, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x6a6f, 0xa436, 0xad02, + 0xa438, 0xffe2, 0xa436, 0xad04, 0xa438, 0x5209, 0xa436, 0xad06, + 0xa438, 0x3534, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x080f, 0xa436, 0xad02, 0xa438, 0xffe0, 0xa436, 0xad04, + 0xa438, 0x5249, 0xa436, 0xad06, 0xa438, 0x0555, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x282f, 0xa436, 0xad02, + 0xa438, 0xffe0, 0xa436, 0xad04, 0xa438, 0x5289, 0xa436, 0xad06, + 0xa438, 0x1576, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x484f, 0xa436, 0xad02, 0xa438, 0xffe0, 0xa436, 0xad04, + 0xa438, 0x52c9, 0xa436, 0xad06, 0xa438, 0x2517, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x686f, 0xa436, 0xad02, + 0xa438, 0xffe0, 0xa436, 0xad04, 0xa438, 0x5309, 0xa436, 0xad06, + 0xa438, 0x3534, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x888f, 0xa436, 0xad02, 0xa438, 0xffe0, 0xa436, 0xad04, + 0xa438, 0x5349, 0xa436, 0xad06, 0xa438, 0x0555, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xa8af, 0xa436, 0xad02, + 0xa438, 0xffe0, 0xa436, 0xad04, 0xa438, 0x5389, 0xa436, 0xad06, + 0xa438, 0x1576, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0xc8cf, 0xa436, 0xad02, 0xa438, 0xffe0, 0xa436, 0xad04, + 0xa438, 0x53c9, 0xa436, 0xad06, 0xa438, 0x2517, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xe8ef, 0xa436, 0xad02, + 0xa438, 0xffe0, 0xa436, 0xad04, 0xa438, 0x550b, 0xa436, 0xad06, + 0xa438, 0x3534, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x090f, 0xa436, 0xad02, 0xa438, 0xffe1, 0xa436, 0xad04, + 0xa438, 0x554b, 0xa436, 0xad06, 0xa438, 0x0555, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x292f, 0xa436, 0xad02, + 0xa438, 0xffe1, 0xa436, 0xad04, 0xa438, 0x558b, 0xa436, 0xad06, + 0xa438, 0x1576, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x494f, 0xa436, 0xad02, 0xa438, 0xffe1, 0xa436, 0xad04, + 0xa438, 0x55cb, 0xa436, 0xad06, 0xa438, 0x2417, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x696f, 0xa436, 0xad02, + 0xa438, 0xffe1, 0xa436, 0xad04, 0xa438, 0x9209, 0xa436, 0xad06, + 0xa438, 0x3434, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x8a8f, 0xa436, 0xad02, 0xa438, 0xffe2, 0xa436, 0xad04, + 0xa438, 0x9249, 0xa436, 0xad06, 0xa438, 0x0455, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xaaaf, 0xa436, 0xad02, + 0xa438, 0xffe2, 0xa436, 0xad04, 0xa438, 0x9289, 0xa436, 0xad06, + 0xa438, 0x1476, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0xcacf, 0xa436, 0xad02, 0xa438, 0xffe2, 0xa436, 0xad04, + 0xa438, 0x92c9, 0xa436, 0xad06, 0xa438, 0x2417, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xeaef, 0xa436, 0xad02, + 0xa438, 0xffe2, 0xa436, 0xad04, 0xa438, 0x9009, 0xa436, 0xad06, + 0xa438, 0x3434, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x1217, 0xa436, 0xad02, 0xa438, 0xffe2, 0xa436, 0xad04, + 0xa438, 0x9049, 0xa436, 0xad06, 0xa438, 0x0455, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x3237, 0xa436, 0xad02, + 0xa438, 0xffe2, 0xa436, 0xad04, 0xa438, 0x9089, 0xa436, 0xad06, + 0xa438, 0x1476, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x5257, 0xa436, 0xad02, 0xa438, 0xffe2, 0xa436, 0xad04, + 0xa438, 0x90c9, 0xa436, 0xad06, 0xa438, 0x2517, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x7277, 0xa436, 0xad02, + 0xa438, 0xffe2, 0xa436, 0xad04, 0xa438, 0x9109, 0xa436, 0xad06, + 0xa438, 0x3534, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x1017, 0xa436, 0xad02, 0xa438, 0xffe0, 0xa436, 0xad04, + 0xa438, 0x9149, 0xa436, 0xad06, 0xa438, 0x0555, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x3037, 0xa436, 0xad02, + 0xa438, 0xffe0, 0xa436, 0xad04, 0xa438, 0x9189, 0xa436, 0xad06, + 0xa438, 0x1576, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x5057, 0xa436, 0xad02, 0xa438, 0xffe0, 0xa436, 0xad04, + 0xa438, 0x91c9, 0xa436, 0xad06, 0xa438, 0x2517, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x7077, 0xa436, 0xad02, + 0xa438, 0xffe0, 0xa436, 0xad04, 0xa438, 0x9309, 0xa436, 0xad06, + 0xa438, 0x3534, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x9097, 0xa436, 0xad02, 0xa438, 0xffe0, 0xa436, 0xad04, + 0xa438, 0x9349, 0xa436, 0xad06, 0xa438, 0x0555, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xb0b7, 0xa436, 0xad02, + 0xa438, 0xffe0, 0xa436, 0xad04, 0xa438, 0x9389, 0xa436, 0xad06, + 0xa438, 0x1576, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0xd0d7, 0xa436, 0xad02, 0xa438, 0xffe0, 0xa436, 0xad04, + 0xa438, 0x93c9, 0xa436, 0xad06, 0xa438, 0x2517, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xf0f7, 0xa436, 0xad02, + 0xa438, 0xffe0, 0xa436, 0xad04, 0xa438, 0x960b, 0xa436, 0xad06, + 0xa438, 0x3534, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x1117, 0xa436, 0xad02, 0xa438, 0xffe1, 0xa436, 0xad04, + 0xa438, 0x964b, 0xa436, 0xad06, 0xa438, 0x0555, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x3137, 0xa436, 0xad02, + 0xa438, 0xffe1, 0xa436, 0xad04, 0xa438, 0x968b, 0xa436, 0xad06, + 0xa438, 0x1576, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x5157, 0xa436, 0xad02, 0xa438, 0xffe1, 0xa436, 0xad04, + 0xa438, 0x96cb, 0xa436, 0xad06, 0xa438, 0x2417, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x7177, 0xa436, 0xad02, + 0xa438, 0xffe1, 0xa436, 0xad04, 0xa438, 0xd309, 0xa436, 0xad06, + 0xa438, 0x3434, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x9297, 0xa436, 0xad02, 0xa438, 0xffe2, 0xa436, 0xad04, + 0xa438, 0xd349, 0xa436, 0xad06, 0xa438, 0x0455, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xb2b7, 0xa436, 0xad02, + 0xa438, 0xffe2, 0xa436, 0xad04, 0xa438, 0xd389, 0xa436, 0xad06, + 0xa438, 0x1476, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0xd2d7, 0xa436, 0xad02, 0xa438, 0xffe2, 0xa436, 0xad04, + 0xa438, 0xd3c9, 0xa436, 0xad06, 0xa438, 0x2417, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xf2f7, 0xa436, 0xad02, + 0xa438, 0xffe2, 0xa436, 0xad04, 0xa438, 0xd009, 0xa436, 0xad06, + 0xa438, 0x3434, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x1a1f, 0xa436, 0xad02, 0xa438, 0xffe2, 0xa436, 0xad04, + 0xa438, 0xd049, 0xa436, 0xad06, 0xa438, 0x0455, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x3a3f, 0xa436, 0xad02, + 0xa438, 0xffe2, 0xa436, 0xad04, 0xa438, 0xd089, 0xa436, 0xad06, + 0xa438, 0x1476, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x5a5f, 0xa436, 0xad02, 0xa438, 0xffe2, 0xa436, 0xad04, + 0xa438, 0xd0c9, 0xa436, 0xad06, 0xa438, 0x2517, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x7a7f, 0xa436, 0xad02, + 0xa438, 0xffe2, 0xa436, 0xad04, 0xa438, 0xd109, 0xa436, 0xad06, + 0xa438, 0x3534, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x181f, 0xa436, 0xad02, 0xa438, 0xffe0, 0xa436, 0xad04, + 0xa438, 0xd149, 0xa436, 0xad06, 0xa438, 0x0555, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x383f, 0xa436, 0xad02, + 0xa438, 0xffe0, 0xa436, 0xad04, 0xa438, 0xd189, 0xa436, 0xad06, + 0xa438, 0x1576, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x585f, 0xa436, 0xad02, 0xa438, 0xffe0, 0xa436, 0xad04, + 0xa438, 0xd1c9, 0xa436, 0xad06, 0xa438, 0x2517, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x787f, 0xa436, 0xad02, + 0xa438, 0xffe0, 0xa436, 0xad04, 0xa438, 0xd209, 0xa436, 0xad06, + 0xa438, 0x3534, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x989f, 0xa436, 0xad02, 0xa438, 0xffe0, 0xa436, 0xad04, + 0xa438, 0xd249, 0xa436, 0xad06, 0xa438, 0x0555, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xb8bf, 0xa436, 0xad02, + 0xa438, 0xffe0, 0xa436, 0xad04, 0xa438, 0xd289, 0xa436, 0xad06, + 0xa438, 0x1576, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0xd8df, 0xa436, 0xad02, 0xa438, 0xffe0, 0xa436, 0xad04, + 0xa438, 0xd2c9, 0xa436, 0xad06, 0xa438, 0x2517, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xf8ff, 0xa436, 0xad02, + 0xa438, 0xffe0, 0xa436, 0xad04, 0xa438, 0xd70b, 0xa436, 0xad06, + 0xa438, 0x3534, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x191f, 0xa436, 0xad02, 0xa438, 0xffe1, 0xa436, 0xad04, + 0xa438, 0xd74b, 0xa436, 0xad06, 0xa438, 0x0555, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x393f, 0xa436, 0xad02, + 0xa438, 0xffe1, 0xa436, 0xad04, 0xa438, 0xd78b, 0xa436, 0xad06, + 0xa438, 0x1576, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x595f, 0xa436, 0xad02, 0xa438, 0xffe1, 0xa436, 0xad04, + 0xa438, 0xd7cb, 0xa436, 0xad06, 0xa438, 0x2417, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0x797f, 0xa436, 0xad02, + 0xa438, 0xffe1, 0xa436, 0xad04, 0xa438, 0x000d, 0xa436, 0xad06, + 0xa438, 0x3434, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x9a9f, 0xa436, 0xad02, 0xa438, 0xffe2, 0xa436, 0xad04, + 0xa438, 0x004d, 0xa436, 0xad06, 0xa438, 0x0455, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xbabf, 0xa436, 0xad02, + 0xa438, 0xffe2, 0xa436, 0xad04, 0xa438, 0x008d, 0xa436, 0xad06, + 0xa438, 0x1476, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0xdadf, 0xa436, 0xad02, 0xa438, 0xffe2, 0xa436, 0xad04, + 0xa438, 0x00cd, 0xa436, 0xad06, 0xa438, 0x2c17, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xfaf8, 0xa436, 0xad02, + 0xa438, 0xffe2, 0xa436, 0xad04, 0xa438, 0x400d, 0xa436, 0xad06, + 0xa438, 0x3c34, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x8187, 0xa436, 0xad02, 0xa438, 0xffe1, 0xa436, 0xad04, + 0xa438, 0x404d, 0xa436, 0xad06, 0xa438, 0x0c55, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xa1a7, 0xa436, 0xad02, + 0xa438, 0xffe1, 0xa436, 0xad04, 0xa438, 0x408d, 0xa436, 0xad06, + 0xa438, 0x1c76, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0xc1c7, 0xa436, 0xad02, 0xa438, 0xffe1, 0xa436, 0xad04, + 0xa438, 0x40cd, 0xa436, 0xad06, 0xa438, 0x2c97, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xe1e7, 0xa436, 0xad02, + 0xa438, 0xffe1, 0xa436, 0xad04, 0xa438, 0x800d, 0xa436, 0xad06, + 0xa438, 0x3cb4, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x898f, 0xa436, 0xad02, 0xa438, 0xffe1, 0xa436, 0xad04, + 0xa438, 0x804d, 0xa436, 0xad06, 0xa438, 0x0cd5, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xa9af, 0xa436, 0xad02, + 0xa438, 0xffe1, 0xa436, 0xad04, 0xa438, 0x808d, 0xa436, 0xad06, + 0xa438, 0x1cf6, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0xc9cf, 0xa436, 0xad02, 0xa438, 0xffe1, 0xa436, 0xad04, + 0xa438, 0x80cd, 0xa436, 0xad06, 0xa438, 0x2d17, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xe9ef, 0xa436, 0xad02, + 0xa438, 0xffe1, 0xa436, 0xad04, 0xa438, 0xc00d, 0xa436, 0xad06, + 0xa438, 0x3d34, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x9197, 0xa436, 0xad02, 0xa438, 0xffe1, 0xa436, 0xad04, + 0xa438, 0xc04d, 0xa436, 0xad06, 0xa438, 0x0d55, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xb1b7, 0xa436, 0xad02, + 0xa438, 0xffe1, 0xa436, 0xad04, 0xa438, 0xc08d, 0xa436, 0xad06, + 0xa438, 0x1d76, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0xd1d7, 0xa436, 0xad02, 0xa438, 0xffe1, 0xa436, 0xad04, + 0xa438, 0xc0cd, 0xa436, 0xad06, 0xa438, 0x2d97, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xf1f7, 0xa436, 0xad02, + 0xa438, 0xffe1, 0xa436, 0xad04, 0xa438, 0xffff, 0xa436, 0xad06, + 0xa438, 0x3dbf, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0x999f, 0xa436, 0xad02, 0xa438, 0xffe1, 0xa436, 0xad04, + 0xa438, 0xffff, 0xa436, 0xad06, 0xa438, 0x0ddf, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xb9bf, 0xa436, 0xad02, + 0xa438, 0xffe1, 0xa436, 0xad04, 0xa438, 0xffff, 0xa436, 0xad06, + 0xa438, 0x1dff, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0xd9df, 0xa436, 0xad02, 0xa438, 0xffe1, 0xa436, 0xad04, + 0xa438, 0xffff, 0xa436, 0xad06, 0xa438, 0x2fff, 0xa436, 0xad08, + 0xa438, 0x0002, 0xa436, 0xad00, 0xa438, 0xf9ff, 0xa436, 0xad02, + 0xa438, 0xffe1, 0xa436, 0xad04, 0xa438, 0xffff, 0xa436, 0xad06, + 0xa438, 0x3fff, 0xa436, 0xad08, 0xa438, 0x0002, 0xa436, 0xad00, + 0xa438, 0xd7ff, 0xa436, 0xad02, 0xa438, 0xffe7, 0xa436, 0xad04, + 0xa438, 0xffff, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xf7ff, 0xa436, 0xad02, + 0xa438, 0xffe7, 0xa436, 0xad04, 0xa438, 0xffff, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x17ff, 0xa436, 0xad02, 0xa438, 0xffe7, 0xa436, 0xad04, + 0xa438, 0xffff, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x37ff, 0xa436, 0xad02, + 0xa438, 0x3d67, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x57ff, 0xa436, 0xad02, 0xa438, 0x3f67, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x77ff, 0xa436, 0xad02, + 0xa438, 0x3167, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x97ff, 0xa436, 0xad02, 0xa438, 0x3367, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xb7ff, 0xa436, 0xad02, + 0xa438, 0x3567, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xdfff, 0xa436, 0xad02, 0xa438, 0x3767, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0x3967, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x1fff, 0xa436, 0xad02, 0xa438, 0x3b67, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x3fff, 0xa436, 0xad02, + 0xa438, 0x3de7, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x5fff, 0xa436, 0xad02, 0xa438, 0x3fe7, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x7fff, 0xa436, 0xad02, + 0xa438, 0x31e7, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x9fff, 0xa436, 0xad02, 0xa438, 0x33e7, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xbfff, 0xa436, 0xad02, + 0xa438, 0x35e7, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x07ff, 0xa436, 0xad02, 0xa438, 0x37e6, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x27ff, 0xa436, 0xad02, + 0xa438, 0x39e6, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x47ff, 0xa436, 0xad02, 0xa438, 0x3be6, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x67ff, 0xa436, 0xad02, + 0xa438, 0x2066, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x07ff, 0xa436, 0xad02, 0xa438, 0x2264, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x27ff, 0xa436, 0xad02, + 0xa438, 0x2464, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x47ff, 0xa436, 0xad02, 0xa438, 0x2664, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x67ff, 0xa436, 0xad02, + 0xa438, 0x0064, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x87ff, 0xa436, 0xad02, 0xa438, 0x0264, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xa7ff, 0xa436, 0xad02, + 0xa438, 0x0464, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xc7ff, 0xa436, 0xad02, 0xa438, 0x0664, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xe7ff, 0xa436, 0xad02, + 0xa438, 0x0864, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x07ff, 0xa436, 0xad02, 0xa438, 0x0a65, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x27ff, 0xa436, 0xad02, + 0xa438, 0x0c65, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x47ff, 0xa436, 0xad02, 0xa438, 0x0e65, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x67ff, 0xa436, 0xad02, + 0xa438, 0x1065, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x87ff, 0xa436, 0xad02, 0xa438, 0x1266, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xa7ff, 0xa436, 0xad02, + 0xa438, 0x1466, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xc7ff, 0xa436, 0xad02, 0xa438, 0x1666, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xe7ff, 0xa436, 0xad02, + 0xa438, 0x2866, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x0fff, 0xa436, 0xad02, 0xa438, 0x2a66, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x2fff, 0xa436, 0xad02, + 0xa438, 0x2c66, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x4fff, 0xa436, 0xad02, 0xa438, 0x2e66, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x6fff, 0xa436, 0xad02, + 0xa438, 0x20e6, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x0fff, 0xa436, 0xad02, 0xa438, 0x22e4, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x2fff, 0xa436, 0xad02, + 0xa438, 0x24e4, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x4fff, 0xa436, 0xad02, 0xa438, 0x26e4, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x6fff, 0xa436, 0xad02, + 0xa438, 0x00e4, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x8fff, 0xa436, 0xad02, 0xa438, 0x02e4, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xafff, 0xa436, 0xad02, + 0xa438, 0x04e4, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xcfff, 0xa436, 0xad02, 0xa438, 0x06e4, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xefff, 0xa436, 0xad02, + 0xa438, 0x08e4, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x0fff, 0xa436, 0xad02, 0xa438, 0x0ae5, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x2fff, 0xa436, 0xad02, + 0xa438, 0x0ce5, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x4fff, 0xa436, 0xad02, 0xa438, 0x0ee5, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x6fff, 0xa436, 0xad02, + 0xa438, 0x10e5, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x8fff, 0xa436, 0xad02, 0xa438, 0x12e6, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xafff, 0xa436, 0xad02, + 0xa438, 0x14e6, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xcfff, 0xa436, 0xad02, 0xa438, 0x16e6, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xefff, 0xa436, 0xad02, + 0xa438, 0x28e6, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x17ff, 0xa436, 0xad02, 0xa438, 0x2ae6, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x37ff, 0xa436, 0xad02, + 0xa438, 0x2ce6, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x57ff, 0xa436, 0xad02, 0xa438, 0x2ee6, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x77ff, 0xa436, 0xad02, + 0xa438, 0x2166, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x17ff, 0xa436, 0xad02, 0xa438, 0x2364, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x37ff, 0xa436, 0xad02, + 0xa438, 0x2564, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x57ff, 0xa436, 0xad02, 0xa438, 0x2764, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x77ff, 0xa436, 0xad02, + 0xa438, 0x0164, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x97ff, 0xa436, 0xad02, 0xa438, 0x0364, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xb7ff, 0xa436, 0xad02, + 0xa438, 0x0564, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xd7ff, 0xa436, 0xad02, 0xa438, 0x0764, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xf7ff, 0xa436, 0xad02, + 0xa438, 0x0964, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x17ff, 0xa436, 0xad02, 0xa438, 0x0b65, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x37ff, 0xa436, 0xad02, + 0xa438, 0x0d65, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x57ff, 0xa436, 0xad02, 0xa438, 0x0f65, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x77ff, 0xa436, 0xad02, + 0xa438, 0x1165, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x97ff, 0xa436, 0xad02, 0xa438, 0x1366, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xb7ff, 0xa436, 0xad02, + 0xa438, 0x1566, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xd7ff, 0xa436, 0xad02, 0xa438, 0x1766, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xf7ff, 0xa436, 0xad02, + 0xa438, 0x2966, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x1fff, 0xa436, 0xad02, 0xa438, 0x2b66, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x3fff, 0xa436, 0xad02, + 0xa438, 0x2d66, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x5fff, 0xa436, 0xad02, 0xa438, 0x2f66, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x7fff, 0xa436, 0xad02, + 0xa438, 0x21e6, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x1fff, 0xa436, 0xad02, 0xa438, 0x23e4, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x3fff, 0xa436, 0xad02, + 0xa438, 0x25e4, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x5fff, 0xa436, 0xad02, 0xa438, 0x27e4, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x7fff, 0xa436, 0xad02, + 0xa438, 0x01e4, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x9fff, 0xa436, 0xad02, 0xa438, 0x03e4, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xbfff, 0xa436, 0xad02, + 0xa438, 0x05e4, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xdfff, 0xa436, 0xad02, 0xa438, 0x07e4, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0x09e4, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x1fff, 0xa436, 0xad02, 0xa438, 0x0be5, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x3fff, 0xa436, 0xad02, + 0xa438, 0x0de5, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x5fff, 0xa436, 0xad02, 0xa438, 0x0fe5, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x7fff, 0xa436, 0xad02, + 0xa438, 0x11e5, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x9fff, 0xa436, 0xad02, 0xa438, 0x13e6, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xbfff, 0xa436, 0xad02, + 0xa438, 0x15e6, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xdfff, 0xa436, 0xad02, 0xa438, 0x17e6, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0x29e6, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x87ff, 0xa436, 0xad02, 0xa438, 0x2be5, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xa7ff, 0xa436, 0xad02, + 0xa438, 0x2de5, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xc7ff, 0xa436, 0xad02, 0xa438, 0x2fe5, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xe7ff, 0xa436, 0xad02, + 0xa438, 0x1865, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x8fff, 0xa436, 0xad02, 0xa438, 0x1a65, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xafff, 0xa436, 0xad02, + 0xa438, 0x1c65, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xcfff, 0xa436, 0xad02, 0xa438, 0x1e65, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xefff, 0xa436, 0xad02, + 0xa438, 0x18e5, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x97ff, 0xa436, 0xad02, 0xa438, 0x1ae5, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xb7ff, 0xa436, 0xad02, + 0xa438, 0x1ce5, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xd7ff, 0xa436, 0xad02, 0xa438, 0x1ee5, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xf7ff, 0xa436, 0xad02, + 0xa438, 0x1965, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x9fff, 0xa436, 0xad02, 0xa438, 0x1b65, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xbfff, 0xa436, 0xad02, + 0xa438, 0x1d65, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xdfff, 0xa436, 0xad02, 0xa438, 0x1f65, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0x19e5, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x07ff, 0xa436, 0xad02, 0xa438, 0x1b9c, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x27ff, 0xa436, 0xad02, + 0xa438, 0x1d9c, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x0fff, 0xa436, 0xad02, 0xa438, 0x1f9c, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x2fff, 0xa436, 0xad02, + 0xa438, 0x589c, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x17ff, 0xa436, 0xad02, 0xa438, 0x5c9c, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x37ff, 0xa436, 0xad02, + 0xa438, 0x599c, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x1fff, 0xa436, 0xad02, 0xa438, 0x5d9c, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x3fff, 0xa436, 0xad02, + 0xa438, 0x5a9c, 0xa436, 0xad04, 0xa438, 0x100e, 0xa436, 0xad06, + 0xa438, 0xfff6, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0x5eff, 0xa436, 0xad04, + 0xa438, 0x104e, 0xa436, 0xad06, 0xa438, 0xfff7, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0x5bff, 0xa436, 0xad04, 0xa438, 0x110e, 0xa436, 0xad06, + 0xa438, 0xfff6, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0x5fff, 0xa436, 0xad04, + 0xa438, 0x114e, 0xa436, 0xad06, 0xa438, 0xf817, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0xffff, 0xa436, 0xad04, 0xa438, 0x120f, 0xa436, 0xad06, + 0xa438, 0xf836, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xc3c7, 0xa436, 0xad02, 0xa438, 0xffe3, 0xa436, 0xad04, + 0xa438, 0x124f, 0xa436, 0xad06, 0xa438, 0x0997, 0xa436, 0xad08, + 0xa438, 0x0004, 0xa436, 0xad00, 0xa438, 0xe3e7, 0xa436, 0xad02, + 0xa438, 0xffe3, 0xa436, 0xad04, 0xa438, 0x130f, 0xa436, 0xad06, + 0xa438, 0x19b6, 0xa436, 0xad08, 0xa438, 0x0004, 0xa436, 0xad00, + 0xa438, 0x0307, 0xa436, 0xad02, 0xa438, 0xffe3, 0xa436, 0xad04, + 0xa438, 0x134f, 0xa436, 0xad06, 0xa438, 0x4917, 0xa436, 0xad08, + 0xa438, 0x0004, 0xa436, 0xad00, 0xa438, 0x2327, 0xa436, 0xad02, + 0xa438, 0xffe3, 0xa436, 0xad04, 0xa438, 0x510f, 0xa436, 0xad06, + 0xa438, 0x5936, 0xa436, 0xad08, 0xa438, 0x0004, 0xa436, 0xad00, + 0xa438, 0x4347, 0xa436, 0xad02, 0xa438, 0xffe3, 0xa436, 0xad04, + 0xa438, 0x514f, 0xa436, 0xad06, 0xa438, 0x0997, 0xa436, 0xad08, + 0xa438, 0x0004, 0xa436, 0xad00, 0xa438, 0x6367, 0xa436, 0xad02, + 0xa438, 0xffe3, 0xa436, 0xad04, 0xa438, 0x500f, 0xa436, 0xad06, + 0xa438, 0x19b6, 0xa436, 0xad08, 0xa438, 0x0004, 0xa436, 0xad00, + 0xa438, 0x8387, 0xa436, 0xad02, 0xa438, 0xffe3, 0xa436, 0xad04, + 0xa438, 0x504f, 0xa436, 0xad06, 0xa438, 0x4817, 0xa436, 0xad08, + 0xa438, 0x0004, 0xa436, 0xad00, 0xa438, 0xa3a7, 0xa436, 0xad02, + 0xa438, 0xffe3, 0xa436, 0xad04, 0xa438, 0x520f, 0xa436, 0xad06, + 0xa438, 0x5836, 0xa436, 0xad08, 0xa438, 0x0004, 0xa436, 0xad00, + 0xa438, 0xcbcf, 0xa436, 0xad02, 0xa438, 0xffe3, 0xa436, 0xad04, + 0xa438, 0x524f, 0xa436, 0xad06, 0xa438, 0x0997, 0xa436, 0xad08, + 0xa438, 0x0004, 0xa436, 0xad00, 0xa438, 0xebef, 0xa436, 0xad02, + 0xa438, 0xffe3, 0xa436, 0xad04, 0xa438, 0x530f, 0xa436, 0xad06, + 0xa438, 0x19b6, 0xa436, 0xad08, 0xa438, 0x0004, 0xa436, 0xad00, + 0xa438, 0x0b0f, 0xa436, 0xad02, 0xa438, 0xffe3, 0xa436, 0xad04, + 0xa438, 0x534f, 0xa436, 0xad06, 0xa438, 0x4917, 0xa436, 0xad08, + 0xa438, 0x0004, 0xa436, 0xad00, 0xa438, 0x2b2f, 0xa436, 0xad02, + 0xa438, 0xffe3, 0xa436, 0xad04, 0xa438, 0x920f, 0xa436, 0xad06, + 0xa438, 0x5936, 0xa436, 0xad08, 0xa438, 0x0004, 0xa436, 0xad00, + 0xa438, 0x4b4f, 0xa436, 0xad02, 0xa438, 0xffe3, 0xa436, 0xad04, + 0xa438, 0x924f, 0xa436, 0xad06, 0xa438, 0x0997, 0xa436, 0xad08, + 0xa438, 0x0004, 0xa436, 0xad00, 0xa438, 0x6b6f, 0xa436, 0xad02, + 0xa438, 0xffe3, 0xa436, 0xad04, 0xa438, 0x900f, 0xa436, 0xad06, + 0xa438, 0x19b6, 0xa436, 0xad08, 0xa438, 0x0004, 0xa436, 0xad00, + 0xa438, 0x8b8f, 0xa436, 0xad02, 0xa438, 0xffe3, 0xa436, 0xad04, + 0xa438, 0x904f, 0xa436, 0xad06, 0xa438, 0x4817, 0xa436, 0xad08, + 0xa438, 0x0004, 0xa436, 0xad00, 0xa438, 0xabaf, 0xa436, 0xad02, + 0xa438, 0xffe3, 0xa436, 0xad04, 0xa438, 0x910f, 0xa436, 0xad06, + 0xa438, 0x5836, 0xa436, 0xad08, 0xa438, 0x0004, 0xa436, 0xad00, + 0xa438, 0xd3d7, 0xa436, 0xad02, 0xa438, 0xffe3, 0xa436, 0xad04, + 0xa438, 0x914f, 0xa436, 0xad06, 0xa438, 0x0997, 0xa436, 0xad08, + 0xa438, 0x0004, 0xa436, 0xad00, 0xa438, 0xf3f7, 0xa436, 0xad02, + 0xa438, 0xffe3, 0xa436, 0xad04, 0xa438, 0x930f, 0xa436, 0xad06, + 0xa438, 0x19b6, 0xa436, 0xad08, 0xa438, 0x0004, 0xa436, 0xad00, + 0xa438, 0x1317, 0xa436, 0xad02, 0xa438, 0xffe3, 0xa436, 0xad04, + 0xa438, 0x934f, 0xa436, 0xad06, 0xa438, 0x4917, 0xa436, 0xad08, + 0xa438, 0x0004, 0xa436, 0xad00, 0xa438, 0x3337, 0xa436, 0xad02, + 0xa438, 0xffe3, 0xa436, 0xad04, 0xa438, 0xd30f, 0xa436, 0xad06, + 0xa438, 0x5936, 0xa436, 0xad08, 0xa438, 0x0004, 0xa436, 0xad00, + 0xa438, 0x5357, 0xa436, 0xad02, 0xa438, 0xffe3, 0xa436, 0xad04, + 0xa438, 0xd34f, 0xa436, 0xad06, 0xa438, 0x0997, 0xa436, 0xad08, + 0xa438, 0x0004, 0xa436, 0xad00, 0xa438, 0x7377, 0xa436, 0xad02, + 0xa438, 0xffe3, 0xa436, 0xad04, 0xa438, 0xd00f, 0xa436, 0xad06, + 0xa438, 0x19b6, 0xa436, 0xad08, 0xa438, 0x0004, 0xa436, 0xad00, + 0xa438, 0x9397, 0xa436, 0xad02, 0xa438, 0xffe3, 0xa436, 0xad04, + 0xa438, 0xd04f, 0xa436, 0xad06, 0xa438, 0x4817, 0xa436, 0xad08, + 0xa438, 0x0004, 0xa436, 0xad00, 0xa438, 0xb3b7, 0xa436, 0xad02, + 0xa438, 0xffe3, 0xa436, 0xad04, 0xa438, 0xd10f, 0xa436, 0xad06, + 0xa438, 0x5836, 0xa436, 0xad08, 0xa438, 0x0004, 0xa436, 0xad00, + 0xa438, 0xdbdf, 0xa436, 0xad02, 0xa438, 0xffe3, 0xa436, 0xad04, + 0xa438, 0xd14f, 0xa436, 0xad06, 0xa438, 0x0997, 0xa436, 0xad08, + 0xa438, 0x0004, 0xa436, 0xad00, 0xa438, 0xfbff, 0xa436, 0xad02, + 0xa438, 0xffe3, 0xa436, 0xad04, 0xa438, 0xd20f, 0xa436, 0xad06, + 0xa438, 0x19b6, 0xa436, 0xad08, 0xa438, 0x0004, 0xa436, 0xad00, + 0xa438, 0x1b1f, 0xa436, 0xad02, 0xa438, 0xffe3, 0xa436, 0xad04, + 0xa438, 0xd24f, 0xa436, 0xad06, 0xa438, 0x4917, 0xa436, 0xad08, + 0xa438, 0x0004, 0xa436, 0xad00, 0xa438, 0x3b3f, 0xa436, 0xad02, + 0xa438, 0xffe3, 0xa436, 0xad04, 0xa438, 0xffff, 0xa436, 0xad06, + 0xa438, 0x593f, 0xa436, 0xad08, 0xa438, 0x0004, 0xa436, 0xad00, + 0xa438, 0x5b5f, 0xa436, 0xad02, 0xa438, 0xffe3, 0xa436, 0xad04, + 0xa438, 0xffff, 0xa436, 0xad06, 0xa438, 0x099f, 0xa436, 0xad08, + 0xa438, 0x0004, 0xa436, 0xad00, 0xa438, 0x7b7f, 0xa436, 0xad02, + 0xa438, 0xffe3, 0xa436, 0xad04, 0xa438, 0xffff, 0xa436, 0xad06, + 0xa438, 0x19bf, 0xa436, 0xad08, 0xa438, 0x0004, 0xa436, 0xad00, + 0xa438, 0x9b9f, 0xa436, 0xad02, 0xa438, 0xffe3, 0xa436, 0xad04, + 0xa438, 0xffff, 0xa436, 0xad06, 0xa438, 0x4fff, 0xa436, 0xad08, + 0xa438, 0x0004, 0xa436, 0xad00, 0xa438, 0xbbbf, 0xa436, 0xad02, + 0xa438, 0xffe3, 0xa436, 0xad04, 0xa438, 0xffff, 0xa436, 0xad06, + 0xa438, 0x5fff, 0xa436, 0xad08, 0xa438, 0x0004, 0xa436, 0xad00, + 0xa438, 0x07ff, 0xa436, 0xad02, 0xa438, 0xffa4, 0xa436, 0xad04, + 0xa438, 0xffff, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x27ff, 0xa436, 0xad02, + 0xa438, 0xffa4, 0xa436, 0xad04, 0xa438, 0xffff, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x47ff, 0xa436, 0xad02, 0xa438, 0xffa4, 0xa436, 0xad04, + 0xa438, 0xffff, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x67ff, 0xa436, 0xad02, + 0xa438, 0x58a4, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x0fff, 0xa436, 0xad02, 0xa438, 0x5ca4, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x2fff, 0xa436, 0xad02, + 0xa438, 0x50a4, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x4fff, 0xa436, 0xad02, 0xa438, 0x54a4, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x6fff, 0xa436, 0xad02, + 0xa438, 0x59a4, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x17ff, 0xa436, 0xad02, 0xa438, 0x5da4, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x37ff, 0xa436, 0xad02, + 0xa438, 0x51a4, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x57ff, 0xa436, 0xad02, 0xa438, 0x55a4, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x77ff, 0xa436, 0xad02, + 0xa438, 0x5aa4, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x1fff, 0xa436, 0xad02, 0xa438, 0x5ea4, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x3fff, 0xa436, 0xad02, + 0xa438, 0x52a4, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0x5fff, 0xa436, 0xad02, 0xa438, 0x56a4, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0x7fff, 0xa436, 0xad02, + 0xa438, 0x5ba4, 0xa436, 0xad04, 0xa438, 0x2a06, 0xa436, 0xad06, + 0xa438, 0xfff6, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0x5fff, 0xa436, 0xad04, + 0xa438, 0x2b06, 0xa436, 0xad06, 0xa438, 0xfff7, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0x53ff, 0xa436, 0xad04, 0xa438, 0x2a06, 0xa436, 0xad06, + 0xa438, 0xfff4, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0x57ff, 0xa436, 0xad04, + 0xa438, 0x2b06, 0xa436, 0xad06, 0xa438, 0xf615, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0xffff, 0xa436, 0xad04, 0xa438, 0xffff, 0xa436, 0xad06, + 0xa438, 0xf63f, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0xffff, 0xa436, 0xad04, + 0xa438, 0xffff, 0xa436, 0xad06, 0xa438, 0x069f, 0xa436, 0xad08, + 0xa438, 0x0003, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0xffff, 0xa436, 0xad04, 0xa438, 0xffff, 0xa436, 0xad06, + 0xa438, 0x16bf, 0xa436, 0xad08, 0xa438, 0x0003, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0xffff, 0xa436, 0xad04, + 0xa438, 0xffff, 0xa436, 0xad06, 0xa438, 0x4fff, 0xa436, 0xad08, + 0xa438, 0x0003, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0xd0ff, 0xa436, 0xad04, 0xa438, 0x6a46, 0xa436, 0xad06, + 0xa438, 0x5ff6, 0xa436, 0xad08, 0xa438, 0x0003, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0xd4ff, 0xa436, 0xad04, + 0xa438, 0x6b46, 0xa436, 0xad06, 0xa438, 0xfff7, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0xd8ff, 0xa436, 0xad04, 0xa438, 0x6a46, 0xa436, 0xad06, + 0xa438, 0xfff4, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0xdcff, 0xa436, 0xad04, + 0xa438, 0x6b46, 0xa436, 0xad06, 0xa438, 0xf615, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0xffff, 0xa436, 0xad04, 0xa438, 0xffff, 0xa436, 0xad06, + 0xa438, 0xf63f, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0xffff, 0xa436, 0xad04, + 0xa438, 0xffff, 0xa436, 0xad06, 0xa438, 0x069f, 0xa436, 0xad08, + 0xa438, 0x0003, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0xffff, 0xa436, 0xad04, 0xa438, 0xffff, 0xa436, 0xad06, + 0xa438, 0x16bf, 0xa436, 0xad08, 0xa438, 0x0003, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0xffff, 0xa436, 0xad04, + 0xa438, 0xffff, 0xa436, 0xad06, 0xa438, 0x4fff, 0xa436, 0xad08, + 0xa438, 0x0003, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0xd1ff, 0xa436, 0xad04, 0xa438, 0xaa86, 0xa436, 0xad06, + 0xa438, 0x5ff6, 0xa436, 0xad08, 0xa438, 0x0003, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0xd5ff, 0xa436, 0xad04, + 0xa438, 0xab86, 0xa436, 0xad06, 0xa438, 0xfff7, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0xd9ff, 0xa436, 0xad04, 0xa438, 0xaa86, 0xa436, 0xad06, + 0xa438, 0xfff4, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0xddff, 0xa436, 0xad04, + 0xa438, 0xab86, 0xa436, 0xad06, 0xa438, 0xf615, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0xffff, 0xa436, 0xad04, 0xa438, 0xffff, 0xa436, 0xad06, + 0xa438, 0xf63f, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0xffff, 0xa436, 0xad04, + 0xa438, 0xffff, 0xa436, 0xad06, 0xa438, 0x069f, 0xa436, 0xad08, + 0xa438, 0x0003, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0xffff, 0xa436, 0xad04, 0xa438, 0xffff, 0xa436, 0xad06, + 0xa438, 0x16bf, 0xa436, 0xad08, 0xa438, 0x0003, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0xffff, 0xa436, 0xad04, + 0xa438, 0xffff, 0xa436, 0xad06, 0xa438, 0x4fff, 0xa436, 0xad08, + 0xa438, 0x0003, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0xd2ff, 0xa436, 0xad04, 0xa438, 0xeac6, 0xa436, 0xad06, + 0xa438, 0x5ff6, 0xa436, 0xad08, 0xa438, 0x0003, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0xd6ff, 0xa436, 0xad04, + 0xa438, 0xebc6, 0xa436, 0xad06, 0xa438, 0xfff7, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0xdaff, 0xa436, 0xad04, 0xa438, 0xeac6, 0xa436, 0xad06, + 0xa438, 0xfff4, 0xa436, 0xad08, 0xa438, 0x0007, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0xdeff, 0xa436, 0xad04, + 0xa438, 0xebc6, 0xa436, 0xad06, 0xa438, 0xf615, 0xa436, 0xad08, + 0xa438, 0x0007, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0xffff, 0xa436, 0xad04, 0xa438, 0xffff, 0xa436, 0xad06, + 0xa438, 0xf63f, 0xa436, 0xad08, 0xa438, 0x0017, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0xffff, 0xa436, 0xad04, + 0xa438, 0xffff, 0xa436, 0xad06, 0xa438, 0x069f, 0xa436, 0xad08, + 0xa438, 0x0013, 0xa436, 0xad00, 0xa438, 0xffff, 0xa436, 0xad02, + 0xa438, 0xffff, 0xa436, 0xad04, 0xa438, 0xffff, 0xa436, 0xad06, + 0xa438, 0x16bf, 0xa436, 0xad08, 0xa438, 0x0013, 0xa436, 0xad00, + 0xa438, 0xffff, 0xa436, 0xad02, 0xa438, 0xffff, 0xa436, 0xad04, + 0xa438, 0xffff, 0xa436, 0xad06, 0xa438, 0x4fff, 0xa436, 0xad08, + 0xa438, 0x0013, 0xa436, 0xad00, 0xa438, 0xfffa, 0xa436, 0xad02, + 0xa438, 0xd3ff, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0x5fff, 0xa436, 0xad08, 0xa438, 0x0013, 0xa436, 0xad00, + 0xa438, 0xc7ff, 0xa436, 0xad02, 0xa438, 0xd7e7, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0017, 0xa436, 0xad00, 0xa438, 0xe7ff, 0xa436, 0xad02, + 0xa438, 0xdbe7, 0xa436, 0xad04, 0xa438, 0xfffe, 0xa436, 0xad06, + 0xa438, 0xffff, 0xa436, 0xad08, 0xa438, 0x0017, 0xa436, 0xad00, + 0xa438, 0x07ff, 0xa436, 0xad02, 0xa438, 0xdfe7, 0xa436, 0xad04, + 0xa438, 0xfffe, 0xa436, 0xad06, 0xa438, 0xffff, 0xa436, 0xad08, + 0xa438, 0x0017, 0xa436, 0xacfc, 0xa438, 0x0000, 0xa436, 0xaccc, + 0xa438, 0x2000, 0xa436, 0xacce, 0xa438, 0x6000, 0xa436, 0xaccc, + 0xa438, 0x2001, 0xa436, 0xacce, 0xa438, 0x6008, 0xa436, 0xaccc, + 0xa438, 0x2002, 0xa436, 0xacce, 0xa438, 0x6010, 0xa436, 0xaccc, + 0xa438, 0x2003, 0xa436, 0xacce, 0xa438, 0x6020, 0xa436, 0xaccc, + 0xa438, 0x2004, 0xa436, 0xacce, 0xa438, 0x6060, 0xa436, 0xaccc, + 0xa438, 0x2005, 0xa436, 0xacce, 0xa438, 0x60a0, 0xa436, 0xaccc, + 0xa438, 0x2006, 0xa436, 0xacce, 0xa438, 0x60e0, 0xa436, 0xaccc, + 0xa438, 0x2007, 0xa436, 0xacce, 0xa438, 0x6128, 0xa436, 0xaccc, + 0xa438, 0x2008, 0xa436, 0xacce, 0xa438, 0x6178, 0xa436, 0xaccc, + 0xa438, 0x2009, 0xa436, 0xacce, 0xa438, 0x61a8, 0xa436, 0xaccc, + 0xa438, 0x200a, 0xa436, 0xacce, 0xa438, 0x61f0, 0xa436, 0xaccc, + 0xa438, 0x200b, 0xa436, 0xacce, 0xa438, 0x6248, 0xa436, 0xaccc, + 0xa438, 0x200c, 0xa436, 0xacce, 0xa438, 0x6258, 0xa436, 0xaccc, + 0xa438, 0x200d, 0xa436, 0xacce, 0xa438, 0x6268, 0xa436, 0xaccc, + 0xa438, 0x200e, 0xa436, 0xacce, 0xa438, 0x6270, 0xa436, 0xaccc, + 0xa438, 0x200f, 0xa436, 0xacce, 0xa438, 0x6274, 0xa436, 0xaccc, + 0xa438, 0x2010, 0xa436, 0xacce, 0xa438, 0x627c, 0xa436, 0xaccc, + 0xa438, 0x2011, 0xa436, 0xacce, 0xa438, 0x6284, 0xa436, 0xaccc, + 0xa438, 0x2012, 0xa436, 0xacce, 0xa438, 0x6294, 0xa436, 0xaccc, + 0xa438, 0x2013, 0xa436, 0xacce, 0xa438, 0x629c, 0xa436, 0xaccc, + 0xa438, 0x2014, 0xa436, 0xacce, 0xa438, 0x62ac, 0xa436, 0xaccc, + 0xa438, 0x2015, 0xa436, 0xacce, 0xa438, 0x62bc, 0xa436, 0xaccc, + 0xa438, 0x2016, 0xa436, 0xacce, 0xa438, 0x62c4, 0xa436, 0xaccc, + 0xa438, 0x2017, 0xa436, 0xacce, 0xa438, 0x7000, 0xa436, 0xaccc, + 0xa438, 0x2018, 0xa436, 0xacce, 0xa438, 0x6000, 0xa436, 0xaccc, + 0xa438, 0x2019, 0xa436, 0xacce, 0xa438, 0x6000, 0xa436, 0xaccc, + 0xa438, 0x201a, 0xa436, 0xacce, 0xa438, 0x6000, 0xa436, 0xaccc, + 0xa438, 0x201b, 0xa436, 0xacce, 0xa438, 0x6000, 0xa436, 0xaccc, + 0xa438, 0x201c, 0xa436, 0xacce, 0xa438, 0x6000, 0xa436, 0xaccc, + 0xa438, 0x201d, 0xa436, 0xacce, 0xa438, 0x6000, 0xa436, 0xaccc, + 0xa438, 0x201e, 0xa436, 0xacce, 0xa438, 0x6000, 0xa436, 0xaccc, + 0xa438, 0x201f, 0xa436, 0xacce, 0xa438, 0x6000, 0xa436, 0xacce, + 0xa438, 0x0000, 0xa436, 0x0000, 0xa438, 0x0000, 0xb82e, 0x0000, + 0xa436, 0x8023, 0xa438, 0x0000, 0xa436, 0x801E, 0xa438, 0x0027, + 0xB820, 0x0000, 0xFFFF, 0xFFFF +}; + +static const u_int16_t phy_mcu_ram_code_8126a_2_3[] = { + 0xb892, 0x0000, 0xb88e, 0xC15C, 0xb890, 0x0303, 0xb890, 0x0506, + 0xb890, 0x0807, 0xb890, 0x090B, 0xb890, 0x0E12, 0xb890, 0x1617, + 0xb890, 0x1C24, 0xb890, 0x2B37, 0xb890, 0x0203, 0xb890, 0x0304, + 0xb890, 0x0504, 0xb890, 0x0506, 0xb890, 0x0708, 0xb890, 0x090A, + 0xb890, 0x0B0E, 0xb890, 0x1013, 0xb890, 0x1519, 0xb890, 0x1D22, + 0xb890, 0x282E, 0xb890, 0x363E, 0xb890, 0x474B, 0xb88e, 0xC196, + 0xb890, 0x3F5E, 0xb890, 0xF834, 0xb890, 0x6C01, 0xb890, 0xA67F, + 0xb890, 0xA06C, 0xb890, 0x043B, 0xb890, 0x6190, 0xb890, 0x88DB, + 0xb890, 0x9ECD, 0xb890, 0x4DBC, 0xb890, 0x6E0E, 0xb890, 0x9F2D, + 0xb890, 0x2C18, 0xb890, 0x5E8C, 0xb890, 0x5BFE, 0xb890, 0x183C, + 0xb890, 0x23C9, 0xb890, 0x3E84, 0xb890, 0x3C20, 0xb890, 0xCC56, + 0xb890, 0x3480, 0xb890, 0x0040, 0xb88e, 0xC00F, 0xb890, 0x3502, + 0xb890, 0x0203, 0xb890, 0x0303, 0xb890, 0x0404, 0xb890, 0x0506, + 0xb890, 0x0607, 0xb890, 0x080A, 0xb890, 0x0B0D, 0xb890, 0x0E10, + 0xb890, 0x1114, 0xb890, 0x171B, 0xb890, 0x1F22, 0xb890, 0x2832, + 0xb890, 0x0101, 0xb890, 0x0101, 0xb890, 0x0202, 0xb890, 0x0303, + 0xb890, 0x0404, 0xb890, 0x0506, 0xb890, 0x0709, 0xb890, 0x0A0D, + 0xb88e, 0xC047, 0xb890, 0x365F, 0xb890, 0xBE10, 0xb890, 0x84E4, + 0xb890, 0x60E9, 0xb890, 0xA86A, 0xb890, 0xF1E3, 0xb890, 0xF73F, + 0xb890, 0x5C02, 0xb890, 0x9547, 0xb890, 0xC30C, 0xb890, 0xB064, + 0xb890, 0x079A, 0xb890, 0x1E23, 0xb890, 0x1B5D, 0xb890, 0x92E7, + 0xb890, 0x4BAF, 0xb890, 0x2386, 0xb890, 0x01B6, 0xb890, 0x6F82, + 0xb890, 0xDC1C, 0xb890, 0x8C92, 0xb88e, 0xC110, 0xb890, 0x0C7F, + 0xb890, 0x1014, 0xb890, 0x231D, 0xb890, 0x2023, 0xb890, 0x2628, + 0xb890, 0x2A2D, 0xb890, 0x2D2C, 0xb890, 0x2C2E, 0xb890, 0x320D, + 0xb88e, 0xC186, 0xb890, 0x0306, 0xb890, 0x0804, 0xb890, 0x0406, + 0xb890, 0x0707, 0xb890, 0x0709, 0xb890, 0x0B0F, 0xb890, 0x161D, + 0xb890, 0x202A, 0xb890, 0x3F5E, 0xb88e, 0xC1C1, 0xb890, 0x0040, + 0xb890, 0x5920, 0xb890, 0x88CD, 0xb890, 0x1CA1, 0xb890, 0x3D20, + 0xb890, 0x3AE4, 0xb890, 0x6A43, 0xb890, 0x30AF, 0xb890, 0xDD16, + 0xb88e, 0xC283, 0xb890, 0x1611, 0xb890, 0x161C, 0xb890, 0x2127, + 0xb890, 0x2C32, 0xb890, 0x373D, 0xb890, 0x4247, 0xb890, 0x4D52, + 0xb890, 0x585A, 0xb890, 0x0004, 0xb890, 0x080C, 0xb890, 0x1014, + 0xb890, 0x181B, 0xb890, 0x1F23, 0xb890, 0x272B, 0xb890, 0x2F33, + 0xb890, 0x363A, 0xb890, 0x3E42, 0xb890, 0x464A, 0xb890, 0x4D51, + 0xb890, 0x5559, 0xb890, 0x5D65, 0xb890, 0xE769, 0xb890, 0xEB56, + 0xb890, 0xC04B, 0xb890, 0xD502, 0xb890, 0x2FB1, 0xb890, 0x33B5, + 0xb890, 0x37F8, 0xb890, 0xBB98, 0xb890, 0x7450, 0xb890, 0x4C48, + 0xb890, 0x12DC, 0xb890, 0xDCDC, 0xb890, 0x934A, 0xb890, 0x3E33, + 0xb890, 0xE496, 0xb890, 0x724E, 0xb890, 0x2B07, 0xb890, 0xE4C0, + 0xb890, 0x9C79, 0xb890, 0x5512, 0xb88e, 0xC212, 0xb890, 0x2020, + 0xb890, 0x2020, 0xb890, 0x2020, 0xb890, 0x2020, 0xb890, 0x2020, + 0xb890, 0x2019, 0xb88e, 0xC24D, 0xb890, 0x8400, 0xb890, 0x0000, + 0xb890, 0x0000, 0xb890, 0x0000, 0xb890, 0x0000, 0xb890, 0x0000, + 0xb88e, 0xC2D3, 0xb890, 0x5524, 0xb890, 0x2526, 0xb890, 0x2728, + 0xb88e, 0xC2E3, 0xb890, 0x3323, 0xb890, 0x2324, 0xb890, 0x2425, + 0xFFFF, 0xFFFF +}; + +static const u_int16_t phy_mcu_ram_code_8126a_3_1[] = { + 0xa436, 0x8023, 0xa438, 0x4701, 0xa436, 0xB82E, 0xa438, 0x0001, + 0xb820, 0x0090, 0xa436, 0xA016, 0xa438, 0x0000, 0xa436, 0xA012, + 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, + 0xa438, 0x1800, 0xa438, 0x801a, 0xa438, 0x1800, 0xa438, 0x802a, + 0xa438, 0x1800, 0xa438, 0x8032, 0xa438, 0x1800, 0xa438, 0x803a, + 0xa438, 0x1800, 0xa438, 0x803e, 0xa438, 0x1800, 0xa438, 0x8044, + 0xa438, 0x1800, 0xa438, 0x804b, 0xa438, 0xd504, 0xa438, 0xc9b5, + 0xa438, 0xd500, 0xa438, 0xd707, 0xa438, 0x4070, 0xa438, 0x1800, + 0xa438, 0x1082, 0xa438, 0xd504, 0xa438, 0x1800, 0xa438, 0x107a, + 0xa438, 0x61d0, 0xa438, 0xd701, 0xa438, 0x60a5, 0xa438, 0xd504, + 0xa438, 0xc9b2, 0xa438, 0xd500, 0xa438, 0xf004, 0xa438, 0xd504, + 0xa438, 0xc9b1, 0xa438, 0xd500, 0xa438, 0xd707, 0xa438, 0x6070, + 0xa438, 0x1800, 0xa438, 0x10b0, 0xa438, 0x1800, 0xa438, 0x10c5, + 0xa438, 0xd707, 0xa438, 0x2005, 0xa438, 0x8030, 0xa438, 0xd75e, + 0xa438, 0x1800, 0xa438, 0x138c, 0xa438, 0x1800, 0xa438, 0x13ff, + 0xa438, 0xc504, 0xa438, 0xce20, 0xa438, 0xcf01, 0xa438, 0xd70a, + 0xa438, 0x4005, 0xa438, 0xcf02, 0xa438, 0x1800, 0xa438, 0x1b99, + 0xa438, 0xa980, 0xa438, 0xd500, 0xa438, 0x1800, 0xa438, 0x144d, + 0xa438, 0x907f, 0xa438, 0x91a3, 0xa438, 0x9306, 0xa438, 0xb118, + 0xa438, 0x1800, 0xa438, 0x2147, 0xa438, 0x907f, 0xa438, 0x9209, + 0xa438, 0x91a3, 0xa438, 0x9306, 0xa438, 0xb118, 0xa438, 0x1800, + 0xa438, 0x203c, 0xa436, 0xA026, 0xa438, 0xffff, 0xa436, 0xA024, + 0xa438, 0x2033, 0xa436, 0xA022, 0xa438, 0x213f, 0xa436, 0xA020, + 0xa438, 0x144c, 0xa436, 0xA006, 0xa438, 0x1b98, 0xa436, 0xA004, + 0xa438, 0x138b, 0xa436, 0xA002, 0xa438, 0x10c4, 0xa436, 0xA000, + 0xa438, 0x1079, 0xa436, 0xA008, 0xa438, 0x7f00, 0xa436, 0xA016, + 0xa438, 0x0000, 0xa436, 0xA012, 0xa438, 0x0ff8, 0xa436, 0xA014, + 0xa438, 0xd04d, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa436, 0xA152, 0xa438, 0x12dc, 0xa436, 0xA154, 0xa438, 0x3fff, + 0xa436, 0xA156, 0xa438, 0x3fff, 0xa436, 0xA158, 0xa438, 0x3fff, + 0xa436, 0xA15A, 0xa438, 0x3fff, 0xa436, 0xA15C, 0xa438, 0x3fff, + 0xa436, 0xA15E, 0xa438, 0x3fff, 0xa436, 0xA160, 0xa438, 0x3fff, + 0xa436, 0xA150, 0xa438, 0x0001, 0xa436, 0xA016, 0xa438, 0x0020, + 0xa436, 0xA012, 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800, + 0xa438, 0x8010, 0xa438, 0x1800, 0xa438, 0x801a, 0xa438, 0x1800, + 0xa438, 0x8022, 0xa438, 0x1800, 0xa438, 0x8112, 0xa438, 0x1800, + 0xa438, 0x8206, 0xa438, 0x1800, 0xa438, 0x8433, 0xa438, 0x1800, + 0xa438, 0x84ed, 0xa438, 0x1800, 0xa438, 0x8583, 0xa438, 0xd706, + 0xa438, 0x60a9, 0xa438, 0xd700, 0xa438, 0x60a1, 0xa438, 0x1800, + 0xa438, 0x0962, 0xa438, 0x1800, 0xa438, 0x0962, 0xa438, 0x1800, + 0xa438, 0x0982, 0xa438, 0x800a, 0xa438, 0x0c1f, 0xa438, 0x0d00, + 0xa438, 0x8dc0, 0xa438, 0x1000, 0xa438, 0x12b5, 0xa438, 0x1800, + 0xa438, 0x0f99, 0xa438, 0xd70d, 0xa438, 0x40fd, 0xa438, 0xd702, + 0xa438, 0x40a0, 0xa438, 0xd70c, 0xa438, 0x4066, 0xa438, 0x8710, + 0xa438, 0xf002, 0xa438, 0xa710, 0xa438, 0x9580, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0xa304, 0xa438, 0x9503, 0xa438, 0x0c1f, + 0xa438, 0x0d07, 0xa438, 0x8dc0, 0xa438, 0x1000, 0xa438, 0x12b5, + 0xa438, 0xcb81, 0xa438, 0xd70c, 0xa438, 0x4882, 0xa438, 0xd706, + 0xa438, 0x407a, 0xa438, 0xd70c, 0xa438, 0x4807, 0xa438, 0xd706, + 0xa438, 0x405a, 0xa438, 0x8910, 0xa438, 0xa210, 0xa438, 0xd704, + 0xa438, 0x611c, 0xa438, 0x0cc0, 0xa438, 0x0080, 0xa438, 0x0c03, + 0xa438, 0x0101, 0xa438, 0x0ce0, 0xa438, 0x03a0, 0xa438, 0xccb5, + 0xa438, 0x0cc0, 0xa438, 0x0080, 0xa438, 0x0c03, 0xa438, 0x0102, + 0xa438, 0x0ce0, 0xa438, 0x0340, 0xa438, 0xcc52, 0xa438, 0xd706, + 0xa438, 0x42ba, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c1f, + 0xa438, 0x0f1c, 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd70c, 0xa438, 0x5fb3, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x8f1f, 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd70c, 0xa438, 0x7f33, 0xa438, 0x8190, 0xa438, 0x8204, + 0xa438, 0xf016, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c1f, + 0xa438, 0x0f1b, 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd70c, 0xa438, 0x5fb3, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x8f1f, 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd70c, 0xa438, 0x7f33, 0xa438, 0xd70c, 0xa438, 0x6047, + 0xa438, 0xf002, 0xa438, 0xf00c, 0xa438, 0xd403, 0xa438, 0xcb82, + 0xa438, 0x1000, 0xa438, 0x1203, 0xa438, 0xd40a, 0xa438, 0x1000, + 0xa438, 0x1203, 0xa438, 0xd70c, 0xa438, 0x4247, 0xa438, 0x1000, + 0xa438, 0x131d, 0xa438, 0x8a40, 0xa438, 0x1000, 0xa438, 0x120e, + 0xa438, 0xa104, 0xa438, 0x1000, 0xa438, 0x1220, 0xa438, 0x8104, + 0xa438, 0x1000, 0xa438, 0x1217, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa704, 0xa438, 0x9503, 0xa438, 0xcb88, 0xa438, 0xf012, + 0xa438, 0xa210, 0xa438, 0xa00a, 0xa438, 0xaa40, 0xa438, 0x1000, + 0xa438, 0x120e, 0xa438, 0xa104, 0xa438, 0x1000, 0xa438, 0x1220, + 0xa438, 0x8104, 0xa438, 0x1000, 0xa438, 0x1217, 0xa438, 0xa190, + 0xa438, 0xa284, 0xa438, 0xa404, 0xa438, 0x8a10, 0xa438, 0x8a80, + 0xa438, 0xcb84, 0xa438, 0xd13e, 0xa438, 0xd05a, 0xa438, 0xd13e, + 0xa438, 0xd06b, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd700, + 0xa438, 0x3559, 0xa438, 0x80b0, 0xa438, 0xfffb, 0xa438, 0xd700, + 0xa438, 0x604b, 0xa438, 0xcb8a, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd700, 0xa438, 0x3659, 0xa438, 0x80b9, 0xa438, 0xfffb, + 0xa438, 0xd700, 0xa438, 0x606b, 0xa438, 0xcb8b, 0xa438, 0x5eeb, + 0xa438, 0xd700, 0xa438, 0x6041, 0xa438, 0xa402, 0xa438, 0xcb8c, + 0xa438, 0xd706, 0xa438, 0x609a, 0xa438, 0xd1b7, 0xa438, 0xd049, + 0xa438, 0xf003, 0xa438, 0xd160, 0xa438, 0xd04b, 0xa438, 0x1000, + 0xa438, 0x126b, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xcb8d, + 0xa438, 0x8710, 0xa438, 0xd71f, 0xa438, 0x5fd4, 0xa438, 0xb920, + 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd71f, 0xa438, 0x7fb4, + 0xa438, 0x9920, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd71f, + 0xa438, 0x6105, 0xa438, 0x6054, 0xa438, 0xfffb, 0xa438, 0x1000, + 0xa438, 0x126b, 0xa438, 0xd700, 0xa438, 0x5fab, 0xa438, 0xfff0, + 0xa438, 0xa710, 0xa438, 0xb820, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd71f, 0xa438, 0x7fa5, 0xa438, 0x9820, 0xa438, 0xd114, + 0xa438, 0xd040, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd700, + 0xa438, 0x5fba, 0xa438, 0xd704, 0xa438, 0x5f76, 0xa438, 0xd700, + 0xa438, 0x5f34, 0xa438, 0xd700, 0xa438, 0x6081, 0xa438, 0xd706, + 0xa438, 0x405a, 0xa438, 0xa480, 0xa438, 0xcb86, 0xa438, 0xd706, + 0xa438, 0x609a, 0xa438, 0xd1c8, 0xa438, 0xd045, 0xa438, 0xf003, + 0xa438, 0xd17a, 0xa438, 0xd04b, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0x0cc0, 0xa438, 0x0000, + 0xa438, 0x0c03, 0xa438, 0x0101, 0xa438, 0x0ce0, 0xa438, 0x0320, + 0xa438, 0xcc29, 0xa438, 0xa208, 0xa438, 0x8204, 0xa438, 0xd114, + 0xa438, 0xd040, 0xa438, 0xd700, 0xa438, 0x5ff4, 0xa438, 0x1800, + 0xa438, 0x0c3e, 0xa438, 0xd706, 0xa438, 0x609d, 0xa438, 0xd417, + 0xa438, 0x1000, 0xa438, 0x1203, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0x1000, 0xa438, 0x1289, 0xa438, 0xd700, 0xa438, 0x5f7a, + 0xa438, 0xd704, 0xa438, 0x5f36, 0xa438, 0xd706, 0xa438, 0x6089, + 0xa438, 0xd40c, 0xa438, 0x1000, 0xa438, 0x1203, 0xa438, 0xaa40, + 0xa438, 0xbb10, 0xa438, 0xcb50, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa310, 0xa438, 0x9503, 0xa438, 0xcb5f, 0xa438, 0x1000, + 0xa438, 0x126b, 0xa438, 0x1000, 0xa438, 0x1289, 0xa438, 0xd71f, + 0xa438, 0x5f75, 0xa438, 0x8190, 0xa438, 0x82a0, 0xa438, 0x8402, + 0xa438, 0xa404, 0xa438, 0x800a, 0xa438, 0x8718, 0xa438, 0x9b10, + 0xa438, 0x9b20, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd71f, + 0xa438, 0x7fb5, 0xa438, 0xcb51, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd71f, 0xa438, 0x5f94, 0xa438, 0xd706, 0xa438, 0x6089, + 0xa438, 0xd141, 0xa438, 0xd043, 0xa438, 0xf003, 0xa438, 0xd141, + 0xa438, 0xd044, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd700, + 0xa438, 0x5fb4, 0xa438, 0xd700, 0xa438, 0x60e5, 0xa438, 0xd704, + 0xa438, 0x60be, 0xa438, 0xd706, 0xa438, 0x29b1, 0xa438, 0x8156, + 0xa438, 0xf002, 0xa438, 0xa880, 0xa438, 0xa00a, 0xa438, 0xa190, + 0xa438, 0x8220, 0xa438, 0xa280, 0xa438, 0xa404, 0xa438, 0xa620, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xc5aa, 0xa438, 0x9503, + 0xa438, 0xd700, 0xa438, 0x6061, 0xa438, 0xa402, 0xa438, 0xa480, + 0xa438, 0xcb52, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd700, + 0xa438, 0x5fba, 0xa438, 0xd704, 0xa438, 0x5f76, 0xa438, 0xb920, + 0xa438, 0xcb53, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd71f, + 0xa438, 0x7fb4, 0xa438, 0x9920, 0xa438, 0xa00a, 0xa438, 0xa190, + 0xa438, 0xa280, 0xa438, 0x8220, 0xa438, 0xa404, 0xa438, 0xb580, + 0xa438, 0xd700, 0xa438, 0x40a1, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa602, 0xa438, 0x9503, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa310, 0xa438, 0x9503, 0xa438, 0xcb60, 0xa438, 0xd1c8, + 0xa438, 0xd045, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd700, + 0xa438, 0x5fb4, 0xa438, 0xaa10, 0xa438, 0xd70c, 0xa438, 0x2833, + 0xa438, 0x818f, 0xa438, 0xf003, 0xa438, 0x1000, 0xa438, 0x1330, + 0xa438, 0xd70c, 0xa438, 0x40a6, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa140, 0xa438, 0x9503, 0xa438, 0xd70c, 0xa438, 0x40a3, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xac20, 0xa438, 0x9503, + 0xa438, 0xa90c, 0xa438, 0xaa80, 0xa438, 0x0c1f, 0xa438, 0x0d07, + 0xa438, 0x8dc0, 0xa438, 0x1000, 0xa438, 0x12b5, 0xa438, 0xa00a, + 0xa438, 0xa190, 0xa438, 0xa280, 0xa438, 0x8220, 0xa438, 0xa404, + 0xa438, 0xb580, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xc500, + 0xa438, 0x9503, 0xa438, 0x83e0, 0xa438, 0x8e01, 0xa438, 0xd700, + 0xa438, 0x40a1, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa602, + 0xa438, 0x9503, 0xa438, 0xd14a, 0xa438, 0xd058, 0xa438, 0x1000, + 0xa438, 0x12d7, 0xa438, 0xd70c, 0xa438, 0x4063, 0xa438, 0x1000, + 0xa438, 0x12ea, 0xa438, 0xcb6f, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd704, 0xa438, 0x2e70, 0xa438, 0x81fd, 0xa438, 0xd71f, + 0xa438, 0x676e, 0xa438, 0xd704, 0xa438, 0x3868, 0xa438, 0x81d8, + 0xa438, 0xd706, 0xa438, 0x61c2, 0xa438, 0xd70c, 0xa438, 0x2f18, + 0xa438, 0x81de, 0xa438, 0xd700, 0xa438, 0x5d35, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0xc5aa, 0xa438, 0x9503, 0xa438, 0x0ce0, + 0xa438, 0x0320, 0xa438, 0x1800, 0xa438, 0x81e4, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0xc5aa, 0xa438, 0x9503, 0xa438, 0x1800, + 0xa438, 0x8202, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xc5aa, + 0xa438, 0x9503, 0xa438, 0x1800, 0xa438, 0x8204, 0xa438, 0x1000, + 0xa438, 0x12d7, 0xa438, 0xae02, 0xa438, 0xd70c, 0xa438, 0x4063, + 0xa438, 0x1000, 0xa438, 0x12ea, 0xa438, 0xcb61, 0xa438, 0x1000, + 0xa438, 0x126b, 0xa438, 0xd704, 0xa438, 0x2e70, 0xa438, 0x81fd, + 0xa438, 0xd704, 0xa438, 0x3868, 0xa438, 0x8202, 0xa438, 0xd706, + 0xa438, 0x61a2, 0xa438, 0xd71f, 0xa438, 0x612e, 0xa438, 0xd70c, + 0xa438, 0x2f18, 0xa438, 0x8204, 0xa438, 0x1800, 0xa438, 0x81e4, + 0xa438, 0x8e02, 0xa438, 0x1800, 0xa438, 0x0f99, 0xa438, 0x1800, + 0xa438, 0x0e31, 0xa438, 0x1800, 0xa438, 0x8480, 0xa438, 0x1800, + 0xa438, 0x0e07, 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0xd70c, + 0xa438, 0x5fa4, 0xa438, 0xa706, 0xa438, 0xd70c, 0xa438, 0x404b, + 0xa438, 0xa880, 0xa438, 0x8801, 0xa438, 0x8e01, 0xa438, 0xca50, + 0xa438, 0x1000, 0xa438, 0x82a9, 0xa438, 0xca51, 0xa438, 0xd70e, + 0xa438, 0x2210, 0xa438, 0x82a7, 0xa438, 0xd70c, 0xa438, 0x4084, + 0xa438, 0xd705, 0xa438, 0x5efd, 0xa438, 0xf007, 0xa438, 0x1000, + 0xa438, 0x17c2, 0xa438, 0xd70c, 0xa438, 0x5ce2, 0xa438, 0x1800, + 0xa438, 0x1692, 0xa438, 0xd70c, 0xa438, 0x605a, 0xa438, 0x9a10, + 0xa438, 0x8e40, 0xa438, 0x8404, 0xa438, 0x1000, 0xa438, 0x1827, + 0xa438, 0x8e80, 0xa438, 0xca62, 0xa438, 0xd705, 0xa438, 0x3084, + 0xa438, 0x8289, 0xa438, 0xba10, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x1000, 0xa438, 0x8382, 0xa438, 0x0c03, 0xa438, 0x0100, + 0xa438, 0xd702, 0xa438, 0x4638, 0xa438, 0xd1c4, 0xa438, 0xd044, + 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0x1000, 0xa438, 0x17e8, + 0xa438, 0xd70c, 0xa438, 0x5f7c, 0xa438, 0x8108, 0xa438, 0x0c1f, + 0xa438, 0x0907, 0xa438, 0x8940, 0xa438, 0x1000, 0xa438, 0x17db, + 0xa438, 0xa0c4, 0xa438, 0x8610, 0xa438, 0x8030, 0xa438, 0x8706, + 0xa438, 0x0c07, 0xa438, 0x0b06, 0xa438, 0x8410, 0xa438, 0xa980, + 0xa438, 0xa702, 0xa438, 0xd1c4, 0xa438, 0xd045, 0xa438, 0x1000, + 0xa438, 0x17be, 0xa438, 0x1000, 0xa438, 0x17e8, 0xa438, 0xd70c, + 0xa438, 0x5f7c, 0xa438, 0x0c07, 0xa438, 0x0b06, 0xa438, 0xa030, + 0xa438, 0xa610, 0xa438, 0xd700, 0xa438, 0x6041, 0xa438, 0xa501, + 0xa438, 0xa108, 0xa438, 0xd1c4, 0xa438, 0xd045, 0xa438, 0xca63, + 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0x1000, 0xa438, 0x17e8, + 0xa438, 0xd70c, 0xa438, 0x5f7c, 0xa438, 0xd702, 0xa438, 0x6078, + 0xa438, 0x9920, 0xa438, 0xf003, 0xa438, 0xb920, 0xa438, 0xa880, + 0xa438, 0x9a10, 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0x1000, + 0xa438, 0x17e8, 0xa438, 0xd71f, 0xa438, 0x5f73, 0xa438, 0xf011, + 0xa438, 0xd70c, 0xa438, 0x409b, 0xa438, 0x9920, 0xa438, 0x9a10, + 0xa438, 0xfff5, 0xa438, 0x80fe, 0xa438, 0x8610, 0xa438, 0x8501, + 0xa438, 0x8980, 0xa438, 0x8702, 0xa438, 0xa410, 0xa438, 0xa940, + 0xa438, 0x81c0, 0xa438, 0xae80, 0xa438, 0x1800, 0xa438, 0x822e, + 0xa438, 0x8804, 0xa438, 0xa704, 0xa438, 0x8788, 0xa438, 0xff82, + 0xa438, 0xbb08, 0xa438, 0x0c1f, 0xa438, 0x0907, 0xa438, 0x8940, + 0xa438, 0x1000, 0xa438, 0x17db, 0xa438, 0x8701, 0xa438, 0x8502, + 0xa438, 0xa0f4, 0xa438, 0xa610, 0xa438, 0xd700, 0xa438, 0x6061, + 0xa438, 0xa002, 0xa438, 0xa501, 0xa438, 0x8706, 0xa438, 0x8410, + 0xa438, 0xa980, 0xa438, 0xca64, 0xa438, 0xd110, 0xa438, 0xd040, + 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0x1000, 0xa438, 0x17e8, + 0xa438, 0xd70c, 0xa438, 0x5f7c, 0xa438, 0x8804, 0xa438, 0xa706, + 0xa438, 0x1800, 0xa438, 0x820a, 0xa438, 0x1800, 0xa438, 0x147c, + 0xa438, 0xd705, 0xa438, 0x405f, 0xa438, 0xf037, 0xa438, 0xd701, + 0xa438, 0x4259, 0xa438, 0xd705, 0xa438, 0x6234, 0xa438, 0xd70c, + 0xa438, 0x41c6, 0xa438, 0xd70d, 0xa438, 0x419d, 0xa438, 0xd70d, + 0xa438, 0x417e, 0xa438, 0xd704, 0xa438, 0x6127, 0xa438, 0x2951, + 0xa438, 0x82c0, 0xa438, 0xd70c, 0xa438, 0x4083, 0xa438, 0xd70c, + 0xa438, 0x2e81, 0xa438, 0x82c0, 0xa438, 0xf0c2, 0xa438, 0x80fe, + 0xa438, 0x8610, 0xa438, 0x8501, 0xa438, 0x8704, 0xa438, 0x0c30, + 0xa438, 0x0410, 0xa438, 0xac02, 0xa438, 0xa502, 0xa438, 0x8980, + 0xa438, 0xca60, 0xa438, 0xa004, 0xa438, 0xd70c, 0xa438, 0x6065, + 0xa438, 0x1800, 0xa438, 0x82d0, 0xa438, 0x8004, 0xa438, 0xa804, + 0xa438, 0x0c0f, 0xa438, 0x0602, 0xa438, 0x0c70, 0xa438, 0x0730, + 0xa438, 0xa708, 0xa438, 0xd704, 0xa438, 0x609c, 0xa438, 0x0c1f, + 0xa438, 0x0912, 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x090e, + 0xa438, 0xa940, 0xa438, 0x1000, 0xa438, 0x17db, 0xa438, 0xa780, + 0xa438, 0xf0a0, 0xa438, 0xd704, 0xa438, 0x63ab, 0xa438, 0xd705, + 0xa438, 0x4371, 0xa438, 0xd702, 0xa438, 0x339c, 0xa438, 0x8381, + 0xa438, 0x8788, 0xa438, 0x8704, 0xa438, 0x0c1f, 0xa438, 0x0907, + 0xa438, 0x8940, 0xa438, 0x1000, 0xa438, 0x17db, 0xa438, 0x8410, + 0xa438, 0xa0f4, 0xa438, 0xa610, 0xa438, 0xd700, 0xa438, 0x6061, + 0xa438, 0xa002, 0xa438, 0xa501, 0xa438, 0xa706, 0xa438, 0x8804, + 0xa438, 0xa980, 0xa438, 0xd70c, 0xa438, 0x6085, 0xa438, 0x8701, + 0xa438, 0x8502, 0xa438, 0x8c02, 0xa438, 0xf082, 0xa438, 0xd70c, + 0xa438, 0x60c5, 0xa438, 0xd702, 0xa438, 0x6053, 0xa438, 0xf07d, + 0xa438, 0x1800, 0xa438, 0x837e, 0xa438, 0xd70d, 0xa438, 0x4d1b, + 0xa438, 0xba10, 0xa438, 0xae40, 0xa438, 0x0cfc, 0xa438, 0x03b4, + 0xa438, 0x0cfc, 0xa438, 0x05b4, 0xa438, 0xd1c4, 0xa438, 0xd044, + 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0x1000, 0xa438, 0x17e8, + 0xa438, 0xd70c, 0xa438, 0x5f7c, 0xa438, 0x8706, 0xa438, 0x8280, + 0xa438, 0xace0, 0xa438, 0xa680, 0xa438, 0xa240, 0xa438, 0x1000, + 0xa438, 0x17be, 0xa438, 0x1000, 0xa438, 0x17e8, 0xa438, 0xd702, + 0xa438, 0x5f79, 0xa438, 0x8240, 0xa438, 0xd702, 0xa438, 0x6898, + 0xa438, 0xd702, 0xa438, 0x4957, 0xa438, 0x1800, 0xa438, 0x8370, + 0xa438, 0xa1c0, 0xa438, 0x0c3f, 0xa438, 0x0220, 0xa438, 0x0cfc, + 0xa438, 0x030c, 0xa438, 0x0cfc, 0xa438, 0x050c, 0xa438, 0x8108, + 0xa438, 0x8640, 0xa438, 0xa120, 0xa438, 0xa640, 0xa438, 0x0c03, + 0xa438, 0x0101, 0xa438, 0xa110, 0xa438, 0xd1c4, 0xa438, 0xd044, + 0xa438, 0xca84, 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0x1000, + 0xa438, 0x17e8, 0xa438, 0xd70c, 0xa438, 0x5f7c, 0xa438, 0xd702, + 0xa438, 0x60fc, 0xa438, 0x8210, 0xa438, 0x0ce0, 0xa438, 0x0320, + 0xa438, 0x0ce0, 0xa438, 0x0520, 0xa438, 0xf002, 0xa438, 0xa210, + 0xa438, 0xd1c4, 0xa438, 0xd043, 0xa438, 0x1000, 0xa438, 0x17be, + 0xa438, 0x1000, 0xa438, 0x17e8, 0xa438, 0xd70c, 0xa438, 0x5f7c, + 0xa438, 0x8233, 0xa438, 0x0cfc, 0xa438, 0x036c, 0xa438, 0x0cfc, + 0xa438, 0x056c, 0xa438, 0xd1c4, 0xa438, 0xd044, 0xa438, 0xca85, + 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0x1000, 0xa438, 0x17e8, + 0xa438, 0xd70c, 0xa438, 0x5f7c, 0xa438, 0xa680, 0xa438, 0xa240, + 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0x1000, 0xa438, 0x17e8, + 0xa438, 0xd702, 0xa438, 0x5f79, 0xa438, 0x8240, 0xa438, 0x0cfc, + 0xa438, 0x0390, 0xa438, 0x0cfc, 0xa438, 0x0590, 0xa438, 0xd702, + 0xa438, 0x6058, 0xa438, 0xf002, 0xa438, 0xfec8, 0xa438, 0x81c0, + 0xa438, 0x8880, 0xa438, 0x8706, 0xa438, 0xca61, 0xa438, 0xd1c4, + 0xa438, 0xd054, 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0x1000, + 0xa438, 0x17e8, 0xa438, 0xd70c, 0xa438, 0x5f7d, 0xa438, 0xa706, + 0xa438, 0xf004, 0xa438, 0x8788, 0xa438, 0xa404, 0xa438, 0x8702, + 0xa438, 0x0800, 0xa438, 0x8443, 0xa438, 0x8303, 0xa438, 0x8280, + 0xa438, 0x9920, 0xa438, 0x8ce0, 0xa438, 0x8004, 0xa438, 0xa1c0, + 0xa438, 0xd70e, 0xa438, 0x404a, 0xa438, 0xa280, 0xa438, 0xd702, + 0xa438, 0x3bd0, 0xa438, 0x8392, 0xa438, 0x0c3f, 0xa438, 0x0223, + 0xa438, 0xf003, 0xa438, 0x0c3f, 0xa438, 0x0220, 0xa438, 0x0cfc, + 0xa438, 0x0308, 0xa438, 0x0cfc, 0xa438, 0x0508, 0xa438, 0x8108, + 0xa438, 0x8640, 0xa438, 0xa120, 0xa438, 0xa640, 0xa438, 0xd702, + 0xa438, 0x6077, 0xa438, 0x8103, 0xa438, 0xf003, 0xa438, 0x0c03, + 0xa438, 0x0101, 0xa438, 0xa110, 0xa438, 0xd702, 0xa438, 0x6077, + 0xa438, 0xa108, 0xa438, 0xf006, 0xa438, 0xd704, 0xa438, 0x6077, + 0xa438, 0x8108, 0xa438, 0xf002, 0xa438, 0xa108, 0xa438, 0xd193, + 0xa438, 0xd045, 0xa438, 0xca82, 0xa438, 0x1000, 0xa438, 0x17be, + 0xa438, 0xd70e, 0xa438, 0x606a, 0xa438, 0x1000, 0xa438, 0x17e8, + 0xa438, 0xd70c, 0xa438, 0x5f3c, 0xa438, 0xd702, 0xa438, 0x60fc, + 0xa438, 0x8210, 0xa438, 0x0ce0, 0xa438, 0x0320, 0xa438, 0x0ce0, + 0xa438, 0x0520, 0xa438, 0xf002, 0xa438, 0xa210, 0xa438, 0xd1c4, + 0xa438, 0xd043, 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0xd70e, + 0xa438, 0x606a, 0xa438, 0x1000, 0xa438, 0x17e8, 0xa438, 0xd70c, + 0xa438, 0x5f3c, 0xa438, 0xd702, 0xa438, 0x3bd0, 0xa438, 0x83d0, + 0xa438, 0x0c3f, 0xa438, 0x020c, 0xa438, 0xf002, 0xa438, 0x823f, + 0xa438, 0x0cfc, 0xa438, 0x034c, 0xa438, 0x0cfc, 0xa438, 0x054c, + 0xa438, 0xd1c4, 0xa438, 0xd044, 0xa438, 0x1000, 0xa438, 0x17be, + 0xa438, 0xd70e, 0xa438, 0x606a, 0xa438, 0x1000, 0xa438, 0x17e8, + 0xa438, 0xd70c, 0xa438, 0x5f3c, 0xa438, 0x820c, 0xa438, 0xa360, + 0xa438, 0xa560, 0xa438, 0xd1c4, 0xa438, 0xd043, 0xa438, 0xca83, + 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0xd70e, 0xa438, 0x606a, + 0xa438, 0x1000, 0xa438, 0x17e8, 0xa438, 0xd70c, 0xa438, 0x5f3c, + 0xa438, 0xd70e, 0xa438, 0x406a, 0xa438, 0x8680, 0xa438, 0xf002, + 0xa438, 0xa680, 0xa438, 0xa240, 0xa438, 0x0c0f, 0xa438, 0x0604, + 0xa438, 0x0c70, 0xa438, 0x0750, 0xa438, 0xa708, 0xa438, 0xd704, + 0xa438, 0x609c, 0xa438, 0x0c1f, 0xa438, 0x0914, 0xa438, 0xf003, + 0xa438, 0x0c1f, 0xa438, 0x0910, 0xa438, 0xa940, 0xa438, 0x1000, + 0xa438, 0x17db, 0xa438, 0xa780, 0xa438, 0x1000, 0xa438, 0x17be, + 0xa438, 0xd70e, 0xa438, 0x606a, 0xa438, 0x1000, 0xa438, 0x17e8, + 0xa438, 0xd702, 0xa438, 0x399c, 0xa438, 0x8403, 0xa438, 0x8240, + 0xa438, 0x8788, 0xa438, 0xd702, 0xa438, 0x63f8, 0xa438, 0xd705, + 0xa438, 0x643c, 0xa438, 0xa402, 0xa438, 0xf012, 0xa438, 0x8402, + 0xa438, 0xd705, 0xa438, 0x611b, 0xa438, 0xa401, 0xa438, 0xa302, + 0xa438, 0xd702, 0xa438, 0x417d, 0xa438, 0xa440, 0xa438, 0xa280, + 0xa438, 0xf008, 0xa438, 0x8401, 0xa438, 0x8302, 0xa438, 0xd70c, + 0xa438, 0x6060, 0xa438, 0xa301, 0xa438, 0xf002, 0xa438, 0x8301, + 0xa438, 0xd70c, 0xa438, 0x4080, 0xa438, 0xd70e, 0xa438, 0x604a, + 0xa438, 0xff5f, 0xa438, 0xd705, 0xa438, 0x3cdd, 0xa438, 0x8432, + 0xa438, 0xff5b, 0xa438, 0x0cfc, 0xa438, 0x0390, 0xa438, 0x0cfc, + 0xa438, 0x0590, 0xa438, 0x0800, 0xa438, 0xd704, 0xa438, 0x60f9, + 0xa438, 0xd704, 0xa438, 0x6958, 0xa438, 0xd706, 0xa438, 0x6902, + 0xa438, 0x1800, 0xa438, 0x1001, 0xa438, 0xa220, 0xa438, 0xa404, + 0xa438, 0xd704, 0xa438, 0x4054, 0xa438, 0xa740, 0xa438, 0xa504, + 0xa438, 0xd704, 0xa438, 0x40b5, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa003, 0xa438, 0x9503, 0xa438, 0x8190, 0xa438, 0xcb91, + 0xa438, 0x1000, 0xa438, 0x10af, 0xa438, 0xd704, 0xa438, 0x7fb9, + 0xa438, 0x8220, 0xa438, 0x8404, 0xa438, 0xa280, 0xa438, 0xa110, + 0xa438, 0xd706, 0xa438, 0x4041, 0xa438, 0xa180, 0xa438, 0x1000, + 0xa438, 0x130c, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x850f, + 0xa438, 0x9503, 0xa438, 0x0c1f, 0xa438, 0x0d08, 0xa438, 0x0cc0, + 0xa438, 0x0d80, 0xa438, 0x1000, 0xa438, 0x12b5, 0xa438, 0x1000, + 0xa438, 0x10af, 0xa438, 0xd704, 0xa438, 0x615f, 0xa438, 0xd70c, + 0xa438, 0x6103, 0xa438, 0x8504, 0xa438, 0xd704, 0xa438, 0x40b5, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8003, 0xa438, 0x9503, + 0xa438, 0xcb92, 0xa438, 0x1000, 0xa438, 0x10af, 0xa438, 0xd706, + 0xa438, 0x7fa3, 0xa438, 0x8280, 0xa438, 0x8190, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0x0c0f, 0xa438, 0x050a, 0xa438, 0x9503, + 0xa438, 0x0c1f, 0xa438, 0x0d00, 0xa438, 0x8dc0, 0xa438, 0x1000, + 0xa438, 0x12b5, 0xa438, 0x1800, 0xa438, 0x1001, 0xa438, 0x0c1f, + 0xa438, 0x0d00, 0xa438, 0x8dc0, 0xa438, 0x1000, 0xa438, 0x12b5, + 0xa438, 0x800a, 0xa438, 0xd705, 0xa438, 0x40b9, 0xa438, 0xd70c, + 0xa438, 0x6063, 0xa438, 0xa020, 0xa438, 0xf003, 0xa438, 0xd705, + 0xa438, 0x8020, 0xa438, 0xa504, 0xa438, 0xd704, 0xa438, 0x40b5, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa003, 0xa438, 0x9503, + 0xa438, 0xd704, 0xa438, 0x4054, 0xa438, 0xa740, 0xa438, 0x8190, + 0xa438, 0xcb93, 0xa438, 0xd700, 0xa438, 0x6063, 0xa438, 0xd704, + 0xa438, 0x609c, 0xa438, 0xd14b, 0xa438, 0xd040, 0xa438, 0xf003, + 0xa438, 0xd120, 0xa438, 0xd040, 0xa438, 0x1000, 0xa438, 0x10af, + 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xa008, 0xa438, 0xd706, + 0xa438, 0x4040, 0xa438, 0xa002, 0xa438, 0xd705, 0xa438, 0x4079, + 0xa438, 0x1000, 0xa438, 0x1313, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x85f0, 0xa438, 0x9503, 0xa438, 0xd705, 0xa438, 0x40d9, + 0xa438, 0xd70c, 0xa438, 0x6083, 0xa438, 0x0c1f, 0xa438, 0x0d09, + 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x0d0a, 0xa438, 0x0cc0, + 0xa438, 0x0d80, 0xa438, 0x1000, 0xa438, 0x12b5, 0xa438, 0x1000, + 0xa438, 0x10af, 0xa438, 0x8020, 0xa438, 0xd705, 0xa438, 0x4199, + 0xa438, 0xd704, 0xa438, 0x615f, 0xa438, 0xd70c, 0xa438, 0x6103, + 0xa438, 0x8504, 0xa438, 0xd704, 0xa438, 0x40b5, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0x8003, 0xa438, 0x9503, 0xa438, 0xcb94, + 0xa438, 0x1000, 0xa438, 0x10af, 0xa438, 0xd706, 0xa438, 0x7fa2, + 0xa438, 0x800a, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x85f0, + 0xa438, 0x9503, 0xa438, 0xd705, 0xa438, 0x40b9, 0xa438, 0x0c1f, + 0xa438, 0x0d00, 0xa438, 0x8dc0, 0xa438, 0xf005, 0xa438, 0x0c1f, + 0xa438, 0x0d07, 0xa438, 0x8dc0, 0xa438, 0xa190, 0xa438, 0x1000, + 0xa438, 0x12b5, 0xa438, 0xd705, 0xa438, 0x39cc, 0xa438, 0x84eb, + 0xa438, 0x1800, 0xa438, 0x1001, 0xa438, 0x1800, 0xa438, 0x819d, + 0xa438, 0xcb13, 0xa438, 0xd706, 0xa438, 0x6089, 0xa438, 0xd1b8, + 0xa438, 0xd04a, 0xa438, 0xf003, 0xa438, 0xd11c, 0xa438, 0xd04b, + 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd701, 0xa438, 0x67d5, + 0xa438, 0xd700, 0xa438, 0x5f74, 0xa438, 0xd70c, 0xa438, 0x610c, + 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd700, 0xa438, 0x6846, + 0xa438, 0xd706, 0xa438, 0x647b, 0xa438, 0xfffa, 0xa438, 0x1000, + 0xa438, 0x1330, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c1f, + 0xa438, 0x0f16, 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd70c, 0xa438, 0x5fb3, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x8f1f, 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd70c, 0xa438, 0x7f33, 0xa438, 0x1000, 0xa438, 0x12b5, + 0xa438, 0x0c07, 0xa438, 0x0c02, 0xa438, 0x0cc0, 0xa438, 0x0080, + 0xa438, 0xd14a, 0xa438, 0xd048, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0x1800, 0xa438, 0x84fd, + 0xa438, 0x800a, 0xa438, 0x1000, 0xa438, 0x120e, 0xa438, 0xa004, + 0xa438, 0x1000, 0xa438, 0x1220, 0xa438, 0x8004, 0xa438, 0xa001, + 0xa438, 0x1000, 0xa438, 0x1220, 0xa438, 0x8001, 0xa438, 0x1000, + 0xa438, 0x1217, 0xa438, 0x0c03, 0xa438, 0x0902, 0xa438, 0x1800, + 0xa438, 0x04ed, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd71f, + 0xa438, 0x5fab, 0xa438, 0xba08, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd71f, 0xa438, 0x7f8b, 0xa438, 0x9a08, 0xa438, 0x1800, + 0xa438, 0x0581, 0xa438, 0x800a, 0xa438, 0xd702, 0xa438, 0x6555, + 0xa438, 0x1000, 0xa438, 0x120e, 0xa438, 0xa004, 0xa438, 0x1000, + 0xa438, 0x1220, 0xa438, 0x8004, 0xa438, 0xa001, 0xa438, 0x1000, + 0xa438, 0x1220, 0xa438, 0x8001, 0xa438, 0x1000, 0xa438, 0x1217, + 0xa438, 0xa00a, 0xa438, 0xa780, 0xa438, 0xcb14, 0xa438, 0xd1b8, + 0xa438, 0xd04a, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd700, + 0xa438, 0x5fb4, 0xa438, 0x6286, 0xa438, 0xd706, 0xa438, 0x5f5b, + 0xa438, 0x800a, 0xa438, 0x1000, 0xa438, 0x120e, 0xa438, 0xa004, + 0xa438, 0x1000, 0xa438, 0x1220, 0xa438, 0x8004, 0xa438, 0xa001, + 0xa438, 0x1000, 0xa438, 0x1220, 0xa438, 0x8001, 0xa438, 0x1000, + 0xa438, 0x1217, 0xa438, 0x0c03, 0xa438, 0x0902, 0xa438, 0x1800, + 0xa438, 0x8545, 0xa438, 0xa00a, 0xa438, 0x9308, 0xa438, 0xb210, + 0xa438, 0xb301, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd701, + 0xa438, 0x5fa4, 0xa438, 0xb302, 0xa438, 0x9210, 0xa438, 0xd409, + 0xa438, 0x1000, 0xa438, 0x1203, 0xa438, 0xd103, 0xa438, 0xd04c, + 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd700, 0xa438, 0x5fb4, + 0xa438, 0x1800, 0xa438, 0x0581, 0xa438, 0xd70c, 0xa438, 0x60b3, + 0xa438, 0x1800, 0xa438, 0x8587, 0xa438, 0x1800, 0xa438, 0x001a, + 0xa438, 0x1800, 0xa438, 0x12cb, 0xa436, 0xA10E, 0xa438, 0x12cf, + 0xa436, 0xA10C, 0xa438, 0x04f8, 0xa436, 0xA10A, 0xa438, 0x1003, + 0xa436, 0xA108, 0xa438, 0x15fb, 0xa436, 0xA106, 0xa438, 0x0d2b, + 0xa436, 0xA104, 0xa438, 0x0ecb, 0xa436, 0xA102, 0xa438, 0x1119, + 0xa436, 0xA100, 0xa438, 0x0960, 0xa436, 0xA110, 0xa438, 0x00ff, + 0xa436, 0xA016, 0xa438, 0x0020, 0xa436, 0xA012, 0xa438, 0x1ff8, + 0xa436, 0xA014, 0xa438, 0xa704, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x819d, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa436, 0xA164, 0xa438, 0x119F, 0xa436, 0xA166, + 0xa438, 0x3fff, 0xa436, 0xA168, 0xa438, 0x3fff, 0xa436, 0xA16A, + 0xa438, 0x11A1, 0xa436, 0xA16C, 0xa438, 0x3fff, 0xa436, 0xA16E, + 0xa438, 0x3fff, 0xa436, 0xA170, 0xa438, 0x3fff, 0xa436, 0xA172, + 0xa438, 0x3fff, 0xa436, 0xA162, 0xa438, 0x0009, 0xa436, 0xb87c, + 0xa438, 0x8a63, 0xa436, 0xb87e, 0xa438, 0xaf8a, 0xa438, 0x7baf, + 0xa438, 0x8ab6, 0xa438, 0xaf8a, 0xa438, 0xd6af, 0xa438, 0x8ae4, + 0xa438, 0xaf8a, 0xa438, 0xf2af, 0xa438, 0x8b07, 0xa438, 0xaf8b, + 0xa438, 0x07af, 0xa438, 0x8b07, 0xa438, 0xad35, 0xa438, 0x27bf, + 0xa438, 0x7308, 0xa438, 0x027b, 0xa438, 0x07ac, 0xa438, 0x280d, + 0xa438, 0xbf73, 0xa438, 0x0b02, 0xa438, 0x7b07, 0xa438, 0xac28, + 0xa438, 0x04d0, 0xa438, 0x05ae, 0xa438, 0x02d0, 0xa438, 0x01d1, + 0xa438, 0x01d3, 0xa438, 0x04ee, 0xa438, 0x8640, 0xa438, 0x00ee, + 0xa438, 0x8641, 0xa438, 0x00af, 0xa438, 0x6aa6, 0xa438, 0xd100, + 0xa438, 0xd300, 0xa438, 0xee86, 0xa438, 0x4001, 0xa438, 0xee86, + 0xa438, 0x4124, 0xa438, 0xd00f, 0xa438, 0xaf6a, 0xa438, 0xa6bf, + 0xa438, 0x739e, 0xa438, 0x027b, 0xa438, 0x07ad, 0xa438, 0x280b, + 0xa438, 0xe18f, 0xa438, 0xfdad, 0xa438, 0x2805, 0xa438, 0xe08f, + 0xa438, 0xfeae, 0xa438, 0x03e0, 0xa438, 0x8fff, 0xa438, 0xe489, + 0xa438, 0xe7e0, 0xa438, 0x89e7, 0xa438, 0xaf67, 0xa438, 0x9fa0, + 0xa438, 0x9402, 0xa438, 0xae03, 0xa438, 0xa0b5, 0xa438, 0x03af, + 0xa438, 0x0d89, 0xa438, 0xaf0d, 0xa438, 0xafa0, 0xa438, 0x9402, + 0xa438, 0xae03, 0xa438, 0xa0b5, 0xa438, 0x03af, 0xa438, 0x0c64, + 0xa438, 0xaf0c, 0xa438, 0xcce0, 0xa438, 0x8013, 0xa438, 0x026b, + 0xa438, 0xa4ad, 0xa438, 0x2109, 0xa438, 0x0264, 0xa438, 0x47bf, + 0xa438, 0x769b, 0xa438, 0x027a, 0xa438, 0xbcaf, 0xa438, 0x6562, + 0xa436, 0xb85e, 0xa438, 0x6A7F, 0xa436, 0xb860, 0xa438, 0x679C, + 0xa436, 0xb862, 0xa438, 0x0d86, 0xa436, 0xb864, 0xa438, 0x0c61, + 0xa436, 0xb886, 0xa438, 0x6553, 0xa436, 0xb888, 0xa438, 0xffff, + 0xa436, 0xb88a, 0xa438, 0xffff, 0xa436, 0xb88c, 0xa438, 0xffff, + 0xa436, 0xb838, 0xa438, 0x001f, 0xb820, 0x0010, 0xa436, 0x8629, + 0xa438, 0xaf86, 0xa438, 0x41af, 0xa438, 0x8644, 0xa438, 0xaf88, + 0xa438, 0x0caf, 0xa438, 0x8813, 0xa438, 0xaf88, 0xa438, 0x4baf, + 0xa438, 0x884b, 0xa438, 0xaf88, 0xa438, 0x4baf, 0xa438, 0x884b, + 0xa438, 0xaf1d, 0xa438, 0x8a02, 0xa438, 0x864d, 0xa438, 0x0210, + 0xa438, 0x64af, 0xa438, 0x1063, 0xa438, 0xf8fa, 0xa438, 0xef69, + 0xa438, 0xe080, 0xa438, 0x4cac, 0xa438, 0x2517, 0xa438, 0xe080, + 0xa438, 0x40ad, 0xa438, 0x251a, 0xa438, 0x0286, 0xa438, 0x7ce0, + 0xa438, 0x8040, 0xa438, 0xac25, 0xa438, 0x11bf, 0xa438, 0x87f4, + 0xa438, 0x0277, 0xa438, 0xf6ae, 0xa438, 0x0902, 0xa438, 0x87b3, + 0xa438, 0x0287, 0xa438, 0xe902, 0xa438, 0x87de, 0xa438, 0xef96, + 0xa438, 0xfefc, 0xa438, 0x04f8, 0xa438, 0xe080, 0xa438, 0x18ad, + 0xa438, 0x2611, 0xa438, 0xe08f, 0xa438, 0x9cac, 0xa438, 0x2005, + 0xa438, 0x0286, 0xa438, 0x99ae, 0xa438, 0x0302, 0xa438, 0x8707, + 0xa438, 0x0287, 0xa438, 0x5002, 0xa438, 0x87de, 0xa438, 0xfc04, + 0xa438, 0xf8f9, 0xa438, 0xef79, 0xa438, 0xfbbf, 0xa438, 0x87f7, + 0xa438, 0x0278, 0xa438, 0x385c, 0xa438, 0x2000, 0xa438, 0x0d4d, + 0xa438, 0xa101, 0xa438, 0x51bf, 0xa438, 0x87f7, 0xa438, 0x0278, + 0xa438, 0x385c, 0xa438, 0x07ff, 0xa438, 0xe38f, 0xa438, 0x9d1b, + 0xa438, 0x319f, 0xa438, 0x410d, 0xa438, 0x48e3, 0xa438, 0x8f9e, + 0xa438, 0x1b31, 0xa438, 0x9f38, 0xa438, 0xbf87, 0xa438, 0xfa02, + 0xa438, 0x7838, 0xa438, 0x5c07, 0xa438, 0xffe3, 0xa438, 0x8f9f, + 0xa438, 0x1b31, 0xa438, 0x9f28, 0xa438, 0x0d48, 0xa438, 0xe38f, + 0xa438, 0xa01b, 0xa438, 0x319f, 0xa438, 0x1fbf, 0xa438, 0x87fd, + 0xa438, 0x0278, 0xa438, 0x385c, 0xa438, 0x07ff, 0xa438, 0xe38f, + 0xa438, 0xa11b, 0xa438, 0x319f, 0xa438, 0x0f0d, 0xa438, 0x48e3, + 0xa438, 0x8fa2, 0xa438, 0x1b31, 0xa438, 0x9f06, 0xa438, 0xee8f, + 0xa438, 0x9c01, 0xa438, 0xae04, 0xa438, 0xee8f, 0xa438, 0x9c00, + 0xa438, 0xffef, 0xa438, 0x97fd, 0xa438, 0xfc04, 0xa438, 0xf8f9, + 0xa438, 0xef79, 0xa438, 0xfbbf, 0xa438, 0x87f7, 0xa438, 0x0278, + 0xa438, 0x385c, 0xa438, 0x2000, 0xa438, 0x0d4d, 0xa438, 0xa100, + 0xa438, 0x20bf, 0xa438, 0x87f7, 0xa438, 0x0278, 0xa438, 0x385c, + 0xa438, 0x0600, 0xa438, 0x0d49, 0xa438, 0xe38f, 0xa438, 0xa31b, + 0xa438, 0x319f, 0xa438, 0x0ebf, 0xa438, 0x8800, 0xa438, 0x0277, + 0xa438, 0xf6bf, 0xa438, 0x8806, 0xa438, 0x0277, 0xa438, 0xf6ae, + 0xa438, 0x0cbf, 0xa438, 0x8800, 0xa438, 0x0277, 0xa438, 0xedbf, + 0xa438, 0x8806, 0xa438, 0x0277, 0xa438, 0xedee, 0xa438, 0x8f9c, + 0xa438, 0x00ff, 0xa438, 0xef97, 0xa438, 0xfdfc, 0xa438, 0x04f8, + 0xa438, 0xf9ef, 0xa438, 0x79fb, 0xa438, 0xbf87, 0xa438, 0xf702, + 0xa438, 0x7838, 0xa438, 0x5c20, 0xa438, 0x000d, 0xa438, 0x4da1, + 0xa438, 0x014a, 0xa438, 0xbf87, 0xa438, 0xf702, 0xa438, 0x7838, + 0xa438, 0x5c07, 0xa438, 0xffe3, 0xa438, 0x8fa4, 0xa438, 0x1b31, + 0xa438, 0x9f3a, 0xa438, 0x0d48, 0xa438, 0xe38f, 0xa438, 0xa51b, + 0xa438, 0x319f, 0xa438, 0x31bf, 0xa438, 0x87fa, 0xa438, 0x0278, + 0xa438, 0x38e3, 0xa438, 0x8fa6, 0xa438, 0x1b31, 0xa438, 0x9f24, + 0xa438, 0x0d48, 0xa438, 0xe38f, 0xa438, 0xa71b, 0xa438, 0x319f, + 0xa438, 0x1bbf, 0xa438, 0x87fd, 0xa438, 0x0278, 0xa438, 0x38e3, + 0xa438, 0x8fa8, 0xa438, 0x1b31, 0xa438, 0x9f0e, 0xa438, 0xbf88, + 0xa438, 0x0302, 0xa438, 0x77f6, 0xa438, 0xbf88, 0xa438, 0x0902, + 0xa438, 0x77f6, 0xa438, 0xae00, 0xa438, 0xffef, 0xa438, 0x97fd, + 0xa438, 0xfc04, 0xa438, 0xf8ef, 0xa438, 0x79fb, 0xa438, 0xe080, + 0xa438, 0x18ad, 0xa438, 0x261c, 0xa438, 0xee8f, 0xa438, 0x9c00, + 0xa438, 0xbf88, 0xa438, 0x0002, 0xa438, 0x77ed, 0xa438, 0xbf88, + 0xa438, 0x0602, 0xa438, 0x77ed, 0xa438, 0xbf88, 0xa438, 0x0302, + 0xa438, 0x77ed, 0xa438, 0xbf88, 0xa438, 0x0902, 0xa438, 0x77ed, + 0xa438, 0xffef, 0xa438, 0x97fc, 0xa438, 0x04f8, 0xa438, 0xe080, + 0xa438, 0x40f6, 0xa438, 0x25e4, 0xa438, 0x8040, 0xa438, 0xfc04, + 0xa438, 0xf8e0, 0xa438, 0x804c, 0xa438, 0xf625, 0xa438, 0xe480, + 0xa438, 0x4cfc, 0xa438, 0x0455, 0xa438, 0xa4ba, 0xa438, 0xf0a6, + 0xa438, 0x4af0, 0xa438, 0xa64c, 0xa438, 0xf0a6, 0xa438, 0x4e66, + 0xa438, 0xa4b6, 0xa438, 0x55a4, 0xa438, 0xb600, 0xa438, 0xac56, + 0xa438, 0x11ac, 0xa438, 0x56ee, 0xa438, 0x804c, 0xa438, 0x3aaf, + 0xa438, 0x0627, 0xa438, 0xbf88, 0xa438, 0x4802, 0xa438, 0x77ed, + 0xa438, 0xd203, 0xa438, 0xe083, 0xa438, 0x8a0d, 0xa438, 0x01f6, + 0xa438, 0x271b, 0xa438, 0x03aa, 0xa438, 0x0182, 0xa438, 0xe083, + 0xa438, 0x890d, 0xa438, 0x01f6, 0xa438, 0x271b, 0xa438, 0x03aa, + 0xa438, 0x0182, 0xa438, 0xe083, 0xa438, 0x880d, 0xa438, 0x01f6, + 0xa438, 0x271b, 0xa438, 0x03aa, 0xa438, 0x0782, 0xa438, 0xbf88, + 0xa438, 0x4802, 0xa438, 0x77f6, 0xa438, 0xaf16, 0xa438, 0x1500, + 0xa438, 0xa86a, 0xa436, 0xb818, 0xa438, 0x1D84, 0xa436, 0xb81a, + 0xa438, 0x1060, 0xa436, 0xb81c, 0xa438, 0x0623, 0xa436, 0xb81e, + 0xa438, 0x15ef, 0xa436, 0xb850, 0xa438, 0xffff, 0xa436, 0xb852, + 0xa438, 0xffff, 0xa436, 0xb878, 0xa438, 0xffff, 0xa436, 0xb884, + 0xa438, 0xffff, 0xa436, 0xb832, 0xa438, 0x000f, 0xa436, 0x0000, + 0xa438, 0x0000, 0xB82E, 0x0000, 0xa436, 0x8023, 0xa438, 0x0000, + 0xB820, 0x0000, 0xFFFF, 0xFFFF +}; + +static void +re_real_set_phy_mcu_8125b_1(struct re_softc *sc) +{ + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8125b_1, + ARRAY_SIZE(phy_mcu_ram_code_8125b_1) + ); +} + +static void +re_set_phy_mcu_8125b_1(struct re_softc *sc) +{ + re_set_phy_mcu_patch_request(sc); + + re_real_set_phy_mcu_8125b_1(sc); + + re_clear_phy_mcu_patch_request(sc); +} + +static void +re_real_set_phy_mcu_8125b_2(struct re_softc *sc) +{ + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8125b_2, + ARRAY_SIZE(phy_mcu_ram_code_8125b_2) + ); +} + +static void +re_set_phy_mcu_8125b_2(struct re_softc *sc) +{ + re_set_phy_mcu_patch_request(sc); + + re_real_set_phy_mcu_8125b_2(sc); + + re_clear_phy_mcu_patch_request(sc); +} + +static void +re_real_set_phy_mcu_8125d_1_1(struct re_softc *sc) +{ + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8125d_1_1, + ARRAY_SIZE(phy_mcu_ram_code_8125d_1_1)); +} + +static void +re_real_set_phy_mcu_8125d_1_2(struct re_softc *sc) +{ + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8125d_1_2, + ARRAY_SIZE(phy_mcu_ram_code_8125d_1_2)); +} + +static void +re_real_set_phy_mcu_8125d_1_3(struct re_softc *sc) +{ + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8125d_1_3, + ARRAY_SIZE(phy_mcu_ram_code_8125d_1_3)); +} + +static void +re_set_phy_mcu_8125d_1(struct re_softc *sc) +{ + re_set_phy_mcu_patch_request(sc); + re_real_set_phy_mcu_8125d_1_1(sc); + re_clear_phy_mcu_patch_request(sc); + re_set_phy_mcu_patch_request(sc); + re_real_set_phy_mcu_8125d_1_2(sc); + re_clear_phy_mcu_patch_request(sc); + re_set_phy_mcu_patch_request(sc); + re_real_set_phy_mcu_8125d_1_3(sc); + re_clear_phy_mcu_patch_request(sc); +} + +static void +re_real_set_phy_mcu_8125bp_1_1(struct re_softc *sc) +{ + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8125bp_1_1, + ARRAY_SIZE(phy_mcu_ram_code_8125bp_1_1) + ); +} + +static void +re_real_set_phy_mcu_8125bp_1_2(struct re_softc *sc) +{ + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8125bp_1_2, + ARRAY_SIZE(phy_mcu_ram_code_8125bp_1_2) + ); +} + +static void +re_set_phy_mcu_8125bp_1(struct re_softc *sc) +{ + re_set_phy_mcu_patch_request(sc); + + re_real_set_phy_mcu_8125bp_1_1(sc); + + re_clear_phy_mcu_patch_request(sc); + + re_set_phy_mcu_patch_request(sc); + + re_real_set_phy_mcu_8125bp_1_2(sc); + + re_clear_phy_mcu_patch_request(sc); +} + +static void +re_real_set_phy_mcu_8126a_1_1(struct re_softc *sc) +{ + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8126a_1_1, + ARRAY_SIZE(phy_mcu_ram_code_8126a_1_1) + ); +} + +static void +re_real_set_phy_mcu_8126a_1_2(struct re_softc *sc) +{ + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8126a_1_2, + ARRAY_SIZE(phy_mcu_ram_code_8126a_1_2) + ); +} + +static void +re_real_set_phy_mcu_8126a_1_3(struct re_softc *sc) +{ + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8126a_1_3, + ARRAY_SIZE(phy_mcu_ram_code_8126a_1_3) + ); +} + +static void +re_set_phy_mcu_8126a_1(struct re_softc *sc) +{ + re_set_phy_mcu_patch_request(sc); + + re_real_set_phy_mcu_8126a_1_1(sc); + + re_clear_phy_mcu_patch_request(sc); + + re_set_phy_mcu_patch_request(sc); + + re_real_set_phy_mcu_8126a_1_2(sc); + + re_clear_phy_mcu_patch_request(sc); + + re_set_phy_mcu_patch_request(sc); + + re_real_set_phy_mcu_8126a_1_3(sc); + + re_clear_phy_mcu_patch_request(sc); +} + +static void +re_real_set_phy_mcu_8126a_2_1(struct re_softc *sc) +{ + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8126a_2_1, + ARRAY_SIZE(phy_mcu_ram_code_8126a_2_1) + ); +} + +static void +re_real_set_phy_mcu_8126a_2_3(struct re_softc *sc) +{ + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8126a_2_3, + ARRAY_SIZE(phy_mcu_ram_code_8126a_2_3) + ); +} + +static void +re_set_phy_mcu_8126a_2(struct re_softc *sc) +{ + re_set_phy_mcu_patch_request(sc); + + re_real_set_phy_mcu_8126a_2_1(sc); + + re_clear_phy_mcu_patch_request(sc); + + re_set_phy_mcu_patch_request(sc); + + re_real_set_phy_mcu_8126a_2_3(sc); + + re_clear_phy_mcu_patch_request(sc); +} + +static void +re_real_set_phy_mcu_8126a_3_1(struct re_softc *sc) +{ + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8126a_3_1, + ARRAY_SIZE(phy_mcu_ram_code_8126a_3_1) + ); +} + +static void +re_set_phy_mcu_8126a_3(struct re_softc *sc) +{ + re_set_phy_mcu_patch_request(sc); + + re_real_set_phy_mcu_8126a_3_1(sc); + + re_clear_phy_mcu_patch_request(sc); +} + +static void re_init_hw_phy_mcu(struct re_softc *sc) +{ + if (re_hw_phy_mcu_code_ver_matched(sc)) + return; + + switch (sc->re_type) { + case MACFG_36: + re_set_phy_mcu_8168e_1(sc); + break; + case MACFG_37: + re_set_phy_mcu_8168e_2(sc); + break; + case MACFG_38: + re_set_phy_mcu_8168evl_1(sc); + break; + case MACFG_39: + re_set_phy_mcu_8168evl_2(sc); + break; + case MACFG_50: + re_set_phy_mcu_8168f_1(sc); + break; + case MACFG_51: + re_set_phy_mcu_8168f_2(sc); + break; + case MACFG_52: + re_set_phy_mcu_8411_1(sc); + break; + case MACFG_56: + re_set_phy_mcu_8168g_1(sc); + break; + case MACFG_59: + re_set_phy_mcu_8168gu_2(sc); + break; + case MACFG_60: + re_set_phy_mcu_8411b_1(sc); + break; + case MACFG_61: + re_set_phy_mcu_8168ep_1(sc); + break; + case MACFG_67: + re_set_phy_mcu_8168ep_2(sc); + break; + case MACFG_68: + re_set_phy_mcu_8168h_1(sc); + break; + case MACFG_69: + case MACFG_76: + re_set_phy_mcu_8168h_2(sc); + break; + case MACFG_74: + re_set_phy_mcu_8168h_3(sc); + break; + case MACFG_75: + break; + case MACFG_80: + re_set_phy_mcu_8125a_1(sc); + break; + case MACFG_81: + re_set_phy_mcu_8125a_2(sc); + break; + case MACFG_82: + re_set_phy_mcu_8125b_1(sc); + break; + case MACFG_83: + re_set_phy_mcu_8125b_2(sc); + break; + case MACFG_84: + re_set_phy_mcu_8125bp_1(sc); + break; + case MACFG_85: + //do nothing + break; + case MACFG_86: + re_set_phy_mcu_8125d_1(sc); + break; + case MACFG_87: + //do nothing + break; + case MACFG_90: + re_set_phy_mcu_8126a_1(sc); + break; + case MACFG_91: + re_set_phy_mcu_8126a_2(sc); + break; + case MACFG_92: + re_set_phy_mcu_8126a_3(sc); + break; + } + + re_write_hw_phy_mcu_code_ver(sc); + + re_mdio_write(sc, 0x1F, 0x0000); +} + +static void re_set_hw_phy_before_init_phy_mcu(struct re_softc *sc) +{ + device_t dev = sc->dev; + u_int16_t PhyRegValue; + + switch (sc->re_type) { + case MACFG_82: + re_real_ocp_phy_write(sc, 0xBF86, 0x9000); + + re_set_eth_ocp_phy_bit(sc, 0xC402, BIT_10); + re_clear_eth_ocp_phy_bit(sc, 0xC402, BIT_10); + + PhyRegValue = re_real_ocp_phy_read(sc, 0xBF86); + PhyRegValue &= (BIT_1 | BIT_0); + if (PhyRegValue != 0) + device_printf(dev, "PHY watch dog not clear, value = 0x%x \n", PhyRegValue); + + re_real_ocp_phy_write(sc, 0xBD86, 0x1010); + re_real_ocp_phy_write(sc, 0xBD88, 0x1010); + + re_clear_set_eth_ocp_phy_bit(sc, + 0xBD4E, + BIT_11 | BIT_10, + BIT_11); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF46, + BIT_11 | BIT_10 | BIT_9 | BIT_8, + BIT_10 | BIT_9 | BIT_8); + break; + } +} + +static void re_hw_phy_config(struct re_softc *sc) +{ + u_int16_t Data, PhyRegValue, TmpUshort; + u_int32_t Data_u32; + u_int16_t dout_tapbin; + int i; + + switch (sc->re_type) { + case MACFG_59: + case MACFG_60: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + case MACFG_80: + case MACFG_81: + re_disable_ocp_phy_power_saving(sc); + break; + } + + if (HW_DASH_SUPPORT_TYPE_3(sc) && sc->HwPkgDet == 0x06) + return; + + re_set_hw_phy_before_init_phy_mcu(sc); + + if (FALSE == re_phy_ram_code_check(sc)) { + re_set_phy_ram_code_check_fail_flag(sc); + return; + } + + re_init_hw_phy_mcu(sc); + + re_mdio_write(sc, 0x1F, 0x0000); + + if (sc->re_type == MACFG_3) { + CSR_WRITE_1(sc, 0x82, CSR_READ_1(sc, 0x82)|BIT_0); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0b, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x06, 0x006e); + re_mdio_write(sc, 0x08, 0x0708); + re_mdio_write(sc, 0x15, 0x4000); + re_mdio_write(sc, 0x18, 0x65c7); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x03, 0x00a1); + re_mdio_write(sc, 0x02, 0x0008); + re_mdio_write(sc, 0x01, 0x0120); + re_mdio_write(sc, 0x00, 0x1000); + re_mdio_write(sc, 0x04, 0x0800); + re_mdio_write(sc, 0x04, 0x0000); + + re_mdio_write(sc, 0x03, 0xff41); + re_mdio_write(sc, 0x02, 0xdf60); + re_mdio_write(sc, 0x01, 0x0140); + re_mdio_write(sc, 0x00, 0x0077); + re_mdio_write(sc, 0x04, 0x7800); + re_mdio_write(sc, 0x04, 0x7000); + + re_mdio_write(sc, 0x03, 0x802f); + re_mdio_write(sc, 0x02, 0x4f02); + re_mdio_write(sc, 0x01, 0x0409); + re_mdio_write(sc, 0x00, 0xf0f9); + re_mdio_write(sc, 0x04, 0x9800); + re_mdio_write(sc, 0x04, 0x9000); + + re_mdio_write(sc, 0x03, 0xdf01); + re_mdio_write(sc, 0x02, 0xdf20); + re_mdio_write(sc, 0x01, 0xff95); + re_mdio_write(sc, 0x00, 0xba00); + re_mdio_write(sc, 0x04, 0xa800); + re_mdio_write(sc, 0x04, 0xa000); + + re_mdio_write(sc, 0x03, 0xff41); + re_mdio_write(sc, 0x02, 0xdf20); + re_mdio_write(sc, 0x01, 0x0140); + re_mdio_write(sc, 0x00, 0x00bb); + re_mdio_write(sc, 0x04, 0xb800); + re_mdio_write(sc, 0x04, 0xb000); + + re_mdio_write(sc, 0x03, 0xdf41); + re_mdio_write(sc, 0x02, 0xdc60); + re_mdio_write(sc, 0x01, 0x6340); + re_mdio_write(sc, 0x00, 0x007d); + re_mdio_write(sc, 0x04, 0xd800); + re_mdio_write(sc, 0x04, 0xd000); + + re_mdio_write(sc, 0x03, 0xdf01); + re_mdio_write(sc, 0x02, 0xdf20); + re_mdio_write(sc, 0x01, 0x100a); + re_mdio_write(sc, 0x00, 0xa0ff); + re_mdio_write(sc, 0x04, 0xf800); + re_mdio_write(sc, 0x04, 0xf000); + + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x0b, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + + CSR_WRITE_1(sc, 0x82, 0x0d); + } else if (sc->re_type == MACFG_4) { + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x01, 0x90D0); + re_mdio_write(sc, 0x1f, 0x0000); + // re_mdio_write(sc, 0x1e, 0x8c00); /* PHY link down with some Giga switch */ + } else if (sc->re_type == MACFG_5) { + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x04, 0x0000); + re_mdio_write(sc, 0x03, 0x00a1); + re_mdio_write(sc, 0x02, 0x0008); + re_mdio_write(sc, 0x01, 0x0120); + re_mdio_write(sc, 0x00, 0x1000); + re_mdio_write(sc, 0x04, 0x0800); + + re_mdio_write(sc, 0x04, 0x9000); + re_mdio_write(sc, 0x03, 0x802f); + re_mdio_write(sc, 0x02, 0x4f02); + re_mdio_write(sc, 0x01, 0x0409); + re_mdio_write(sc, 0x00, 0xf099); + re_mdio_write(sc, 0x04, 0x9800); + + re_mdio_write(sc, 0x04, 0xa000); + re_mdio_write(sc, 0x03, 0xdf01); + re_mdio_write(sc, 0x02, 0xdf20); + re_mdio_write(sc, 0x01, 0xff95); + re_mdio_write(sc, 0x00, 0xba00); + re_mdio_write(sc, 0x04, 0xa800); + + re_mdio_write(sc, 0x04, 0xf000); + re_mdio_write(sc, 0x03, 0xdf01); + re_mdio_write(sc, 0x02, 0xdf20); + re_mdio_write(sc, 0x01, 0x101a); + re_mdio_write(sc, 0x00, 0xa0ff); + re_mdio_write(sc, 0x04, 0xf800); + re_mdio_write(sc, 0x04, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x10, 0xf41b); + re_mdio_write(sc, 0x14, 0xfb54); + re_mdio_write(sc, 0x18, 0xf5c7); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x17, 0x0CC0); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x10, 0xf01b); + + } else if (sc->re_type == MACFG_6) { + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x04, 0x0000); + re_mdio_write(sc, 0x03, 0x00a1); + re_mdio_write(sc, 0x02, 0x0008); + re_mdio_write(sc, 0x01, 0x0120); + re_mdio_write(sc, 0x00, 0x1000); + re_mdio_write(sc, 0x04, 0x0800); + + re_mdio_write(sc, 0x04, 0x9000); + re_mdio_write(sc, 0x03, 0x802f); + re_mdio_write(sc, 0x02, 0x4f02); + re_mdio_write(sc, 0x01, 0x0409); + re_mdio_write(sc, 0x00, 0xf099); + re_mdio_write(sc, 0x04, 0x9800); + + re_mdio_write(sc, 0x04, 0xa000); + re_mdio_write(sc, 0x03, 0xdf01); + re_mdio_write(sc, 0x02, 0xdf20); + re_mdio_write(sc, 0x01, 0xff95); + re_mdio_write(sc, 0x00, 0xba00); + re_mdio_write(sc, 0x04, 0xa800); + + re_mdio_write(sc, 0x04, 0xf000); + re_mdio_write(sc, 0x03, 0xdf01); + re_mdio_write(sc, 0x02, 0xdf20); + re_mdio_write(sc, 0x01, 0x101a); + re_mdio_write(sc, 0x00, 0xa0ff); + re_mdio_write(sc, 0x04, 0xf800); + re_mdio_write(sc, 0x04, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x0b, 0x8480); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x18, 0x67c7); + re_mdio_write(sc, 0x04, 0x2000); + re_mdio_write(sc, 0x03, 0x002f); + re_mdio_write(sc, 0x02, 0x4360); + re_mdio_write(sc, 0x01, 0x0109); + re_mdio_write(sc, 0x00, 0x3022); + re_mdio_write(sc, 0x04, 0x2800); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x17, 0x0CC0); + } else if (sc->re_type == MACFG_14) { + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x11, re_mdio_read(sc, 0x11) | 0x1000); + re_mdio_write(sc, 0x19, re_mdio_read(sc, 0x19) | 0x2000); + re_mdio_write(sc, 0x10, re_mdio_read(sc, 0x10) | 0x8000); + + re_mdio_write(sc, 0x1f, 0x0003); + re_mdio_write(sc, 0x08, 0x441D); + re_mdio_write(sc, 0x01, 0x9100); + } else if (sc->re_type == MACFG_15) { + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x11, re_mdio_read(sc, 0x11) | 0x1000); + re_mdio_write(sc, 0x19, re_mdio_read(sc, 0x19) | 0x2000); + re_mdio_write(sc, 0x10, re_mdio_read(sc, 0x10) | 0x8000); + + re_mdio_write(sc, 0x1f, 0x0003); + re_mdio_write(sc, 0x08, 0x441D); + re_mdio_write(sc, 0x01, 0x9100); + } else if (sc->re_type == MACFG_17) { + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x11, re_mdio_read(sc, 0x11) | 0x1000); + re_mdio_write(sc, 0x19, re_mdio_read(sc, 0x19) | 0x2000); + re_mdio_write(sc, 0x10, re_mdio_read(sc, 0x10) | 0x8000); + + re_mdio_write(sc, 0x1f, 0x0003); + re_mdio_write(sc, 0x08, 0x441D); + + re_mdio_write(sc, 0x1f, 0x0000); + } else if (sc->re_type == MACFG_21) { + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x0B, 0x94B0); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x12, 0x6096); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_22) { + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x0B, 0x94B0); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x12, 0x6096); + } else if (sc->re_type == MACFG_23) { + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x0B, 0x94B0); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x12, 0x6096); + } else if (sc->re_type == MACFG_24) { + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x12, 0x2300); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x16, 0x000A); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x12, 0xC096); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x00, 0x88DE); + re_mdio_write(sc, 0x01, 0x82B1); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x08, 0x9E30); + re_mdio_write(sc, 0x09, 0x01F0); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x0A, 0x5500); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x03, 0x7002); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x14, re_mdio_read(sc, 0x14) | BIT_5); + re_mdio_write(sc, 0x0d, re_mdio_read(sc, 0x0d) | BIT_5); + } else if (sc->re_type == MACFG_25) { + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x12, 0x2300); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x16, 0x0F0A); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x00, 0x88DE); + re_mdio_write(sc, 0x01, 0x82B1); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x0C, 0x7EB8); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x06, 0x0761); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x03, 0x802F); + re_mdio_write(sc, 0x02, 0x4F02); + re_mdio_write(sc, 0x01, 0x0409); + re_mdio_write(sc, 0x00, 0xF099); + re_mdio_write(sc, 0x04, 0x9800); + re_mdio_write(sc, 0x04, 0x9000); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x16, re_mdio_read(sc, 0x16) | BIT_0); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x14, re_mdio_read(sc, 0x14) | BIT_5); + re_mdio_write(sc, 0x0D, re_mdio_read(sc, 0x0D) & ~BIT_5); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x1D, 0x3D98); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x17, 0x0CC0); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_26) { + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x12, 0x2300); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x16, 0x0F0A); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x00, 0x88DE); + re_mdio_write(sc, 0x01, 0x82B1); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x0C, 0x7EB8); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x06, 0x5461); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x06, 0x5461); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x16, re_mdio_read(sc, 0x16) | BIT_0); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x14, re_mdio_read(sc, 0x14) | BIT_5); + re_mdio_write(sc, 0x0D, re_mdio_read(sc, 0x0D) & ~BIT_5); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x1D, 0x3D98); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x17, 0x0CC0); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_27) { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0d, re_mdio_read(sc, 0x0d) | BIT_5); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x1D, 0x3D98); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x14, 0xCAA3); + re_mdio_write(sc, 0x1C, 0x000A); + re_mdio_write(sc, 0x18, 0x65D0); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x17, 0xB580); + re_mdio_write(sc, 0x18, 0xFF54); + re_mdio_write(sc, 0x19, 0x3954); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x0D, 0x310C); + re_mdio_write(sc, 0x0E, 0x310C); + re_mdio_write(sc, 0x0F, 0x311C); + re_mdio_write(sc, 0x06, 0x0761); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x18, 0xFF55); + re_mdio_write(sc, 0x19, 0x3955); + re_mdio_write(sc, 0x18, 0xFF54); + re_mdio_write(sc, 0x19, 0x3954); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x17, 0x0CC0); + } else if (sc->re_type == MACFG_28) { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x14, re_mdio_read(sc, 0x14) | BIT_5); + re_mdio_write(sc, 0x0d, re_mdio_read(sc, 0x0d) | BIT_5); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x14, 0xCAA3); + re_mdio_write(sc, 0x1C, 0x000A); + re_mdio_write(sc, 0x18, 0x65D0); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x17, 0xB580); + re_mdio_write(sc, 0x18, 0xFF54); + re_mdio_write(sc, 0x19, 0x3954); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x0D, 0x310C); + re_mdio_write(sc, 0x0E, 0x310C); + re_mdio_write(sc, 0x0F, 0x311C); + re_mdio_write(sc, 0x06, 0x0761); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x18, 0xFF55); + re_mdio_write(sc, 0x19, 0x3955); + re_mdio_write(sc, 0x18, 0xFF54); + re_mdio_write(sc, 0x19, 0x3954); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x17, 0x0CC0); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x16, re_mdio_read(sc, 0x16) | BIT_0); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_31) { + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x06, 0x4064); + re_mdio_write(sc, 0x07, 0x2863); + re_mdio_write(sc, 0x08, 0x059C); + re_mdio_write(sc, 0x09, 0x26B4); + re_mdio_write(sc, 0x0A, 0x6A19); + re_mdio_write(sc, 0x0B, 0xDCC8); + re_mdio_write(sc, 0x10, 0xF06D); + re_mdio_write(sc, 0x14, 0x7F68); + re_mdio_write(sc, 0x18, 0x7FD9); + re_mdio_write(sc, 0x1C, 0xF0FF); + re_mdio_write(sc, 0x1D, 0x3D9C); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x12, 0xF49F); + re_mdio_write(sc, 0x13, 0x070B); + re_mdio_write(sc, 0x1A, 0x05AD); + re_mdio_write(sc, 0x14, 0x94C0); + + re_mdio_write(sc, 0x1F, 0x0002); + Data = re_mdio_read(sc, 0x0B) & 0xFF00; + Data |= 0x10; + re_mdio_write(sc, 0x0B, Data); + Data = re_mdio_read(sc, 0x0C) & 0x00FF; + Data |= 0xA200; + re_mdio_write(sc, 0x0C, Data); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x06, 0x5561); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8332); + re_mdio_write(sc, 0x06, 0x5561); + + if (re_efuse_read(sc, 0x01) == 0xb1) { + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x05, 0x669A); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8330); + re_mdio_write(sc, 0x06, 0x669A); + + re_mdio_write(sc, 0x1F, 0x0002); + Data = re_mdio_read(sc, 0x0D); + if ((Data & 0x00FF) != 0x006C) { + Data &= 0xFF00; + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x0D, Data | 0x0065); + re_mdio_write(sc, 0x0D, Data | 0x0066); + re_mdio_write(sc, 0x0D, Data | 0x0067); + re_mdio_write(sc, 0x0D, Data | 0x0068); + re_mdio_write(sc, 0x0D, Data | 0x0069); + re_mdio_write(sc, 0x0D, Data | 0x006A); + re_mdio_write(sc, 0x0D, Data | 0x006B); + re_mdio_write(sc, 0x0D, Data | 0x006C); + } + } else { + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x05, 0x6662); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8330); + re_mdio_write(sc, 0x06, 0x6662); + } + + re_mdio_write(sc, 0x1F, 0x0002); + Data = re_mdio_read(sc, 0x0D); + Data |= 0x300; + re_mdio_write(sc, 0x0D, Data); + Data = re_mdio_read(sc, 0x0F); + Data |= 0x10; + re_mdio_write(sc, 0x0F, Data); + + re_mdio_write(sc, 0x1F, 0x0002); + Data = re_mdio_read(sc, 0x02); + Data &= ~0x600; + Data |= 0x100; + re_mdio_write(sc, 0x02, Data); + Data = re_mdio_read(sc, 0x03); + Data &= ~0xE000; + re_mdio_write(sc, 0x03, Data); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x17, 0x0CC0); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x001B); + if (re_mdio_read(sc, 0x06) == 0xBF00) { + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x59ee); + re_mdio_write(sc, 0x06, 0xf8ea); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xf8eb); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0xf87c); + re_mdio_write(sc, 0x06, 0xe1f8); + re_mdio_write(sc, 0x06, 0x7d59); + re_mdio_write(sc, 0x06, 0x0fef); + re_mdio_write(sc, 0x06, 0x0139); + re_mdio_write(sc, 0x06, 0x029e); + re_mdio_write(sc, 0x06, 0x06ef); + re_mdio_write(sc, 0x06, 0x1039); + re_mdio_write(sc, 0x06, 0x089f); + re_mdio_write(sc, 0x06, 0x2aee); + re_mdio_write(sc, 0x06, 0xf8ea); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xf8eb); + re_mdio_write(sc, 0x06, 0x01e0); + re_mdio_write(sc, 0x06, 0xf87c); + re_mdio_write(sc, 0x06, 0xe1f8); + re_mdio_write(sc, 0x06, 0x7d58); + re_mdio_write(sc, 0x06, 0x409e); + re_mdio_write(sc, 0x06, 0x0f39); + re_mdio_write(sc, 0x06, 0x46aa); + re_mdio_write(sc, 0x06, 0x0bbf); + re_mdio_write(sc, 0x06, 0x8290); + re_mdio_write(sc, 0x06, 0xd682); + re_mdio_write(sc, 0x06, 0x9802); + re_mdio_write(sc, 0x06, 0x014f); + re_mdio_write(sc, 0x06, 0xae09); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0x98d6); + re_mdio_write(sc, 0x06, 0x82a0); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x4fef); + re_mdio_write(sc, 0x06, 0x95fe); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x05f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xeef8); + re_mdio_write(sc, 0x06, 0xea00); + re_mdio_write(sc, 0x06, 0xeef8); + re_mdio_write(sc, 0x06, 0xeb00); + re_mdio_write(sc, 0x06, 0xe2f8); + re_mdio_write(sc, 0x06, 0x7ce3); + re_mdio_write(sc, 0x06, 0xf87d); + re_mdio_write(sc, 0x06, 0xa511); + re_mdio_write(sc, 0x06, 0x1112); + re_mdio_write(sc, 0x06, 0xd240); + re_mdio_write(sc, 0x06, 0xd644); + re_mdio_write(sc, 0x06, 0x4402); + re_mdio_write(sc, 0x06, 0x8217); + re_mdio_write(sc, 0x06, 0xd2a0); + re_mdio_write(sc, 0x06, 0xd6aa); + re_mdio_write(sc, 0x06, 0xaa02); + re_mdio_write(sc, 0x06, 0x8217); + re_mdio_write(sc, 0x06, 0xae0f); + re_mdio_write(sc, 0x06, 0xa544); + re_mdio_write(sc, 0x06, 0x4402); + re_mdio_write(sc, 0x06, 0xae4d); + re_mdio_write(sc, 0x06, 0xa5aa); + re_mdio_write(sc, 0x06, 0xaa02); + re_mdio_write(sc, 0x06, 0xae47); + re_mdio_write(sc, 0x06, 0xaf82); + re_mdio_write(sc, 0x06, 0x13ee); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x834d); + re_mdio_write(sc, 0x06, 0x0fee); + re_mdio_write(sc, 0x06, 0x834c); + re_mdio_write(sc, 0x06, 0x0fee); + re_mdio_write(sc, 0x06, 0x834f); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8351); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x834a); + re_mdio_write(sc, 0x06, 0xffee); + re_mdio_write(sc, 0x06, 0x834b); + re_mdio_write(sc, 0x06, 0xffe0); + re_mdio_write(sc, 0x06, 0x8330); + re_mdio_write(sc, 0x06, 0xe183); + re_mdio_write(sc, 0x06, 0x3158); + re_mdio_write(sc, 0x06, 0xfee4); + re_mdio_write(sc, 0x06, 0xf88a); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0x8be0); + re_mdio_write(sc, 0x06, 0x8332); + re_mdio_write(sc, 0x06, 0xe183); + re_mdio_write(sc, 0x06, 0x3359); + re_mdio_write(sc, 0x06, 0x0fe2); + re_mdio_write(sc, 0x06, 0x834d); + re_mdio_write(sc, 0x06, 0x0c24); + re_mdio_write(sc, 0x06, 0x5af0); + re_mdio_write(sc, 0x06, 0x1e12); + re_mdio_write(sc, 0x06, 0xe4f8); + re_mdio_write(sc, 0x06, 0x8ce5); + re_mdio_write(sc, 0x06, 0xf88d); + re_mdio_write(sc, 0x06, 0xaf82); + re_mdio_write(sc, 0x06, 0x13e0); + re_mdio_write(sc, 0x06, 0x834f); + re_mdio_write(sc, 0x06, 0x10e4); + re_mdio_write(sc, 0x06, 0x834f); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4e78); + re_mdio_write(sc, 0x06, 0x009f); + re_mdio_write(sc, 0x06, 0x0ae0); + re_mdio_write(sc, 0x06, 0x834f); + re_mdio_write(sc, 0x06, 0xa010); + re_mdio_write(sc, 0x06, 0xa5ee); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x01e0); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x7805); + re_mdio_write(sc, 0x06, 0x9e9a); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4e78); + re_mdio_write(sc, 0x06, 0x049e); + re_mdio_write(sc, 0x06, 0x10e0); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x7803); + re_mdio_write(sc, 0x06, 0x9e0f); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4e78); + re_mdio_write(sc, 0x06, 0x019e); + re_mdio_write(sc, 0x06, 0x05ae); + re_mdio_write(sc, 0x06, 0x0caf); + re_mdio_write(sc, 0x06, 0x81f8); + re_mdio_write(sc, 0x06, 0xaf81); + re_mdio_write(sc, 0x06, 0xa3af); + re_mdio_write(sc, 0x06, 0x81dc); + re_mdio_write(sc, 0x06, 0xaf82); + re_mdio_write(sc, 0x06, 0x13ee); + re_mdio_write(sc, 0x06, 0x8348); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8349); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0x8351); + re_mdio_write(sc, 0x06, 0x10e4); + re_mdio_write(sc, 0x06, 0x8351); + re_mdio_write(sc, 0x06, 0x5801); + re_mdio_write(sc, 0x06, 0x9fea); + re_mdio_write(sc, 0x06, 0xd000); + re_mdio_write(sc, 0x06, 0xd180); + re_mdio_write(sc, 0x06, 0x1f66); + re_mdio_write(sc, 0x06, 0xe2f8); + re_mdio_write(sc, 0x06, 0xeae3); + re_mdio_write(sc, 0x06, 0xf8eb); + re_mdio_write(sc, 0x06, 0x5af8); + re_mdio_write(sc, 0x06, 0x1e20); + re_mdio_write(sc, 0x06, 0xe6f8); + re_mdio_write(sc, 0x06, 0xeae5); + re_mdio_write(sc, 0x06, 0xf8eb); + re_mdio_write(sc, 0x06, 0xd302); + re_mdio_write(sc, 0x06, 0xb3fe); + re_mdio_write(sc, 0x06, 0xe2f8); + re_mdio_write(sc, 0x06, 0x7cef); + re_mdio_write(sc, 0x06, 0x325b); + re_mdio_write(sc, 0x06, 0x80e3); + re_mdio_write(sc, 0x06, 0xf87d); + re_mdio_write(sc, 0x06, 0x9e03); + re_mdio_write(sc, 0x06, 0x7dff); + re_mdio_write(sc, 0x06, 0xff0d); + re_mdio_write(sc, 0x06, 0x581c); + re_mdio_write(sc, 0x06, 0x551a); + re_mdio_write(sc, 0x06, 0x6511); + re_mdio_write(sc, 0x06, 0xa190); + re_mdio_write(sc, 0x06, 0xd3e2); + re_mdio_write(sc, 0x06, 0x8348); + re_mdio_write(sc, 0x06, 0xe383); + re_mdio_write(sc, 0x06, 0x491b); + re_mdio_write(sc, 0x06, 0x56ab); + re_mdio_write(sc, 0x06, 0x08ef); + re_mdio_write(sc, 0x06, 0x56e6); + re_mdio_write(sc, 0x06, 0x8348); + re_mdio_write(sc, 0x06, 0xe783); + re_mdio_write(sc, 0x06, 0x4910); + re_mdio_write(sc, 0x06, 0xd180); + re_mdio_write(sc, 0x06, 0x1f66); + re_mdio_write(sc, 0x06, 0xa004); + re_mdio_write(sc, 0x06, 0xb9e2); + re_mdio_write(sc, 0x06, 0x8348); + re_mdio_write(sc, 0x06, 0xe383); + re_mdio_write(sc, 0x06, 0x49ef); + re_mdio_write(sc, 0x06, 0x65e2); + re_mdio_write(sc, 0x06, 0x834a); + re_mdio_write(sc, 0x06, 0xe383); + re_mdio_write(sc, 0x06, 0x4b1b); + re_mdio_write(sc, 0x06, 0x56aa); + re_mdio_write(sc, 0x06, 0x0eef); + re_mdio_write(sc, 0x06, 0x56e6); + re_mdio_write(sc, 0x06, 0x834a); + re_mdio_write(sc, 0x06, 0xe783); + re_mdio_write(sc, 0x06, 0x4be2); + re_mdio_write(sc, 0x06, 0x834d); + re_mdio_write(sc, 0x06, 0xe683); + re_mdio_write(sc, 0x06, 0x4ce0); + re_mdio_write(sc, 0x06, 0x834d); + re_mdio_write(sc, 0x06, 0xa000); + re_mdio_write(sc, 0x06, 0x0caf); + re_mdio_write(sc, 0x06, 0x81dc); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4d10); + re_mdio_write(sc, 0x06, 0xe483); + re_mdio_write(sc, 0x06, 0x4dae); + re_mdio_write(sc, 0x06, 0x0480); + re_mdio_write(sc, 0x06, 0xe483); + re_mdio_write(sc, 0x06, 0x4de0); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x7803); + re_mdio_write(sc, 0x06, 0x9e0b); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4e78); + re_mdio_write(sc, 0x06, 0x049e); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x02e0); + re_mdio_write(sc, 0x06, 0x8332); + re_mdio_write(sc, 0x06, 0xe183); + re_mdio_write(sc, 0x06, 0x3359); + re_mdio_write(sc, 0x06, 0x0fe2); + re_mdio_write(sc, 0x06, 0x834d); + re_mdio_write(sc, 0x06, 0x0c24); + re_mdio_write(sc, 0x06, 0x5af0); + re_mdio_write(sc, 0x06, 0x1e12); + re_mdio_write(sc, 0x06, 0xe4f8); + re_mdio_write(sc, 0x06, 0x8ce5); + re_mdio_write(sc, 0x06, 0xf88d); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x30e1); + re_mdio_write(sc, 0x06, 0x8331); + re_mdio_write(sc, 0x06, 0x6801); + re_mdio_write(sc, 0x06, 0xe4f8); + re_mdio_write(sc, 0x06, 0x8ae5); + re_mdio_write(sc, 0x06, 0xf88b); + re_mdio_write(sc, 0x06, 0xae37); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4e03); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4ce1); + re_mdio_write(sc, 0x06, 0x834d); + re_mdio_write(sc, 0x06, 0x1b01); + re_mdio_write(sc, 0x06, 0x9e04); + re_mdio_write(sc, 0x06, 0xaaa1); + re_mdio_write(sc, 0x06, 0xaea8); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4e04); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4f00); + re_mdio_write(sc, 0x06, 0xaeab); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4f78); + re_mdio_write(sc, 0x06, 0x039f); + re_mdio_write(sc, 0x06, 0x14ee); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x05d2); + re_mdio_write(sc, 0x06, 0x40d6); + re_mdio_write(sc, 0x06, 0x5554); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x17d2); + re_mdio_write(sc, 0x06, 0xa0d6); + re_mdio_write(sc, 0x06, 0xba00); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x17fe); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x05f8); + re_mdio_write(sc, 0x06, 0xe0f8); + re_mdio_write(sc, 0x06, 0x60e1); + re_mdio_write(sc, 0x06, 0xf861); + re_mdio_write(sc, 0x06, 0x6802); + re_mdio_write(sc, 0x06, 0xe4f8); + re_mdio_write(sc, 0x06, 0x60e5); + re_mdio_write(sc, 0x06, 0xf861); + re_mdio_write(sc, 0x06, 0xe0f8); + re_mdio_write(sc, 0x06, 0x48e1); + re_mdio_write(sc, 0x06, 0xf849); + re_mdio_write(sc, 0x06, 0x580f); + re_mdio_write(sc, 0x06, 0x1e02); + re_mdio_write(sc, 0x06, 0xe4f8); + re_mdio_write(sc, 0x06, 0x48e5); + re_mdio_write(sc, 0x06, 0xf849); + re_mdio_write(sc, 0x06, 0xd000); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x5bbf); + re_mdio_write(sc, 0x06, 0x8350); + re_mdio_write(sc, 0x06, 0xef46); + re_mdio_write(sc, 0x06, 0xdc19); + re_mdio_write(sc, 0x06, 0xddd0); + re_mdio_write(sc, 0x06, 0x0102); + re_mdio_write(sc, 0x06, 0x825b); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x77e0); + re_mdio_write(sc, 0x06, 0xf860); + re_mdio_write(sc, 0x06, 0xe1f8); + re_mdio_write(sc, 0x06, 0x6158); + re_mdio_write(sc, 0x06, 0xfde4); + re_mdio_write(sc, 0x06, 0xf860); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0x61fc); + re_mdio_write(sc, 0x06, 0x04f9); + re_mdio_write(sc, 0x06, 0xfafb); + re_mdio_write(sc, 0x06, 0xc6bf); + re_mdio_write(sc, 0x06, 0xf840); + re_mdio_write(sc, 0x06, 0xbe83); + re_mdio_write(sc, 0x06, 0x50a0); + re_mdio_write(sc, 0x06, 0x0101); + re_mdio_write(sc, 0x06, 0x071b); + re_mdio_write(sc, 0x06, 0x89cf); + re_mdio_write(sc, 0x06, 0xd208); + re_mdio_write(sc, 0x06, 0xebdb); + re_mdio_write(sc, 0x06, 0x19b2); + re_mdio_write(sc, 0x06, 0xfbff); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe0f8); + re_mdio_write(sc, 0x06, 0x48e1); + re_mdio_write(sc, 0x06, 0xf849); + re_mdio_write(sc, 0x06, 0x6808); + re_mdio_write(sc, 0x06, 0xe4f8); + re_mdio_write(sc, 0x06, 0x48e5); + re_mdio_write(sc, 0x06, 0xf849); + re_mdio_write(sc, 0x06, 0x58f7); + re_mdio_write(sc, 0x06, 0xe4f8); + re_mdio_write(sc, 0x06, 0x48e5); + re_mdio_write(sc, 0x06, 0xf849); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0x4d20); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x4e22); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x4ddf); + re_mdio_write(sc, 0x06, 0xff01); + re_mdio_write(sc, 0x06, 0x4edd); + re_mdio_write(sc, 0x06, 0xff01); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xfbef); + re_mdio_write(sc, 0x06, 0x79bf); + re_mdio_write(sc, 0x06, 0xf822); + re_mdio_write(sc, 0x06, 0xd819); + re_mdio_write(sc, 0x06, 0xd958); + re_mdio_write(sc, 0x06, 0x849f); + re_mdio_write(sc, 0x06, 0x09bf); + re_mdio_write(sc, 0x06, 0x82be); + re_mdio_write(sc, 0x06, 0xd682); + re_mdio_write(sc, 0x06, 0xc602); + re_mdio_write(sc, 0x06, 0x014f); + re_mdio_write(sc, 0x06, 0xef97); + re_mdio_write(sc, 0x06, 0xfffe); + re_mdio_write(sc, 0x06, 0xfc05); + re_mdio_write(sc, 0x06, 0x17ff); + re_mdio_write(sc, 0x06, 0xfe01); + re_mdio_write(sc, 0x06, 0x1700); + re_mdio_write(sc, 0x06, 0x0102); + re_mdio_write(sc, 0x05, 0x83d8); + re_mdio_write(sc, 0x06, 0x8051); + re_mdio_write(sc, 0x05, 0x83d6); + re_mdio_write(sc, 0x06, 0x82a0); + re_mdio_write(sc, 0x05, 0x83d4); + re_mdio_write(sc, 0x06, 0x8000); + re_mdio_write(sc, 0x02, 0x2010); + re_mdio_write(sc, 0x03, 0xdc00); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x0b, 0x0600); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x00fc); + re_mdio_write(sc, 0x1f, 0x0000); + } + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0xF880); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_32) { + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x06, 0x4064); + re_mdio_write(sc, 0x07, 0x2863); + re_mdio_write(sc, 0x08, 0x059C); + re_mdio_write(sc, 0x09, 0x26B4); + re_mdio_write(sc, 0x0A, 0x6A19); + re_mdio_write(sc, 0x0B, 0xBCC0); + re_mdio_write(sc, 0x10, 0xF06D); + re_mdio_write(sc, 0x14, 0x7F68); + re_mdio_write(sc, 0x18, 0x7FD9); + re_mdio_write(sc, 0x1C, 0xF0FF); + re_mdio_write(sc, 0x1D, 0x3D9C); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x12, 0xF49F); + re_mdio_write(sc, 0x13, 0x070B); + re_mdio_write(sc, 0x1A, 0x05AD); + re_mdio_write(sc, 0x14, 0x94C0); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x06, 0x5571); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x05, 0x2642); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x02, 0xC107); + re_mdio_write(sc, 0x03, 0x1002); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x16, 0x0CC0); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x0F, 0x0017); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8200); + re_mdio_write(sc, 0x06, 0xF8F9); + re_mdio_write(sc, 0x06, 0xFAEF); + re_mdio_write(sc, 0x06, 0x59EE); + re_mdio_write(sc, 0x06, 0xF8EA); + re_mdio_write(sc, 0x06, 0x00EE); + re_mdio_write(sc, 0x06, 0xF8EB); + re_mdio_write(sc, 0x06, 0x00E0); + re_mdio_write(sc, 0x06, 0xF87C); + re_mdio_write(sc, 0x06, 0xE1F8); + re_mdio_write(sc, 0x06, 0x7D59); + re_mdio_write(sc, 0x06, 0x0FEF); + re_mdio_write(sc, 0x06, 0x0139); + re_mdio_write(sc, 0x06, 0x029E); + re_mdio_write(sc, 0x06, 0x06EF); + re_mdio_write(sc, 0x06, 0x1039); + re_mdio_write(sc, 0x06, 0x089F); + re_mdio_write(sc, 0x06, 0x2AEE); + re_mdio_write(sc, 0x06, 0xF8EA); + re_mdio_write(sc, 0x06, 0x00EE); + re_mdio_write(sc, 0x06, 0xF8EB); + re_mdio_write(sc, 0x06, 0x01E0); + re_mdio_write(sc, 0x06, 0xF87C); + re_mdio_write(sc, 0x06, 0xE1F8); + re_mdio_write(sc, 0x06, 0x7D58); + re_mdio_write(sc, 0x06, 0x409E); + re_mdio_write(sc, 0x06, 0x0F39); + re_mdio_write(sc, 0x06, 0x46AA); + re_mdio_write(sc, 0x06, 0x0BBF); + re_mdio_write(sc, 0x06, 0x8251); + re_mdio_write(sc, 0x06, 0xD682); + re_mdio_write(sc, 0x06, 0x5902); + re_mdio_write(sc, 0x06, 0x014F); + re_mdio_write(sc, 0x06, 0xAE09); + re_mdio_write(sc, 0x06, 0xBF82); + re_mdio_write(sc, 0x06, 0x59D6); + re_mdio_write(sc, 0x06, 0x8261); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x4FEF); + re_mdio_write(sc, 0x06, 0x95FE); + re_mdio_write(sc, 0x06, 0xFDFC); + re_mdio_write(sc, 0x06, 0x054D); + re_mdio_write(sc, 0x06, 0x2000); + re_mdio_write(sc, 0x06, 0x024E); + re_mdio_write(sc, 0x06, 0x2200); + re_mdio_write(sc, 0x06, 0x024D); + re_mdio_write(sc, 0x06, 0xDFFF); + re_mdio_write(sc, 0x06, 0x014E); + re_mdio_write(sc, 0x06, 0xDDFF); + re_mdio_write(sc, 0x06, 0x0100); + re_mdio_write(sc, 0x02, 0x6010); + re_mdio_write(sc, 0x05, 0xFFF6); + re_mdio_write(sc, 0x06, 0x00EC); + re_mdio_write(sc, 0x05, 0x83D4); + re_mdio_write(sc, 0x06, 0x8200); + + } else if (sc->re_type == MACFG_33) { + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x06, 0x4064); + re_mdio_write(sc, 0x07, 0x2863); + re_mdio_write(sc, 0x08, 0x059C); + re_mdio_write(sc, 0x09, 0x26B4); + re_mdio_write(sc, 0x0A, 0x6A19); + re_mdio_write(sc, 0x0B, 0xDCC8); + re_mdio_write(sc, 0x10, 0xF06D); + re_mdio_write(sc, 0x14, 0x7F68); + re_mdio_write(sc, 0x18, 0x7FD9); + re_mdio_write(sc, 0x1C, 0xF0FF); + re_mdio_write(sc, 0x1D, 0x3D9C); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x12, 0xF49F); + re_mdio_write(sc, 0x13, 0x070B); + re_mdio_write(sc, 0x1A, 0x05AD); + re_mdio_write(sc, 0x14, 0x94C0); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x06, 0x5561); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8332); + re_mdio_write(sc, 0x06, 0x5561); + + if (re_efuse_read(sc, 0x01) == 0xb1) { + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x05, 0x669A); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8330); + re_mdio_write(sc, 0x06, 0x669A); + + re_mdio_write(sc, 0x1F, 0x0002); + Data = re_mdio_read(sc, 0x0D); + if ((Data & 0x00FF) != 0x006C) { + Data &= 0xFF00; + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x0D, Data | 0x0065); + re_mdio_write(sc, 0x0D, Data | 0x0066); + re_mdio_write(sc, 0x0D, Data | 0x0067); + re_mdio_write(sc, 0x0D, Data | 0x0068); + re_mdio_write(sc, 0x0D, Data | 0x0069); + re_mdio_write(sc, 0x0D, Data | 0x006A); + re_mdio_write(sc, 0x0D, Data | 0x006B); + re_mdio_write(sc, 0x0D, Data | 0x006C); + } + } else { + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x05, 0x2642); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8330); + re_mdio_write(sc, 0x06, 0x2642); + } + + if (re_efuse_read(sc, 0x30) == 0x98) { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x11, re_mdio_read(sc, 0x11) & ~0x02); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x01, re_mdio_read(sc, 0x01) | 0x200); + } else if (re_efuse_read(sc, 0x30) == 0x90) { + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x01, re_mdio_read(sc, 0x01) & ~0x200); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x16, 0x5101); + } + + re_mdio_write(sc, 0x1F, 0x0002); + Data = re_mdio_read(sc, 0x02); + Data &= ~0x600; + Data |= 0x100; + re_mdio_write(sc, 0x02, Data); + Data = re_mdio_read(sc, 0x03); + Data &= ~0xE000; + re_mdio_write(sc, 0x03, Data); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x17, 0x0CC0); + + re_mdio_write(sc, 0x1F, 0x0002); + Data = re_mdio_read(sc, 0x0F); + Data |= 0x17; + re_mdio_write(sc, 0x0F, Data); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x001B); + if (re_mdio_read(sc, 0x06) == 0xB300) { + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfaee); + re_mdio_write(sc, 0x06, 0xf8ea); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xf8eb); + re_mdio_write(sc, 0x06, 0x00e2); + re_mdio_write(sc, 0x06, 0xf87c); + re_mdio_write(sc, 0x06, 0xe3f8); + re_mdio_write(sc, 0x06, 0x7da5); + re_mdio_write(sc, 0x06, 0x1111); + re_mdio_write(sc, 0x06, 0x12d2); + re_mdio_write(sc, 0x06, 0x40d6); + re_mdio_write(sc, 0x06, 0x4444); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0xc6d2); + re_mdio_write(sc, 0x06, 0xa0d6); + re_mdio_write(sc, 0x06, 0xaaaa); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0xc6ae); + re_mdio_write(sc, 0x06, 0x0fa5); + re_mdio_write(sc, 0x06, 0x4444); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x4da5); + re_mdio_write(sc, 0x06, 0xaaaa); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x47af); + re_mdio_write(sc, 0x06, 0x81c2); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4e00); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4d0f); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4c0f); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4f00); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x5100); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4aff); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4bff); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x30e1); + re_mdio_write(sc, 0x06, 0x8331); + re_mdio_write(sc, 0x06, 0x58fe); + re_mdio_write(sc, 0x06, 0xe4f8); + re_mdio_write(sc, 0x06, 0x8ae5); + re_mdio_write(sc, 0x06, 0xf88b); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x32e1); + re_mdio_write(sc, 0x06, 0x8333); + re_mdio_write(sc, 0x06, 0x590f); + re_mdio_write(sc, 0x06, 0xe283); + re_mdio_write(sc, 0x06, 0x4d0c); + re_mdio_write(sc, 0x06, 0x245a); + re_mdio_write(sc, 0x06, 0xf01e); + re_mdio_write(sc, 0x06, 0x12e4); + re_mdio_write(sc, 0x06, 0xf88c); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0x8daf); + re_mdio_write(sc, 0x06, 0x81c2); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4f10); + re_mdio_write(sc, 0x06, 0xe483); + re_mdio_write(sc, 0x06, 0x4fe0); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x7800); + re_mdio_write(sc, 0x06, 0x9f0a); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4fa0); + re_mdio_write(sc, 0x06, 0x10a5); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4e01); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4e78); + re_mdio_write(sc, 0x06, 0x059e); + re_mdio_write(sc, 0x06, 0x9ae0); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x7804); + re_mdio_write(sc, 0x06, 0x9e10); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4e78); + re_mdio_write(sc, 0x06, 0x039e); + re_mdio_write(sc, 0x06, 0x0fe0); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x7801); + re_mdio_write(sc, 0x06, 0x9e05); + re_mdio_write(sc, 0x06, 0xae0c); + re_mdio_write(sc, 0x06, 0xaf81); + re_mdio_write(sc, 0x06, 0xa7af); + re_mdio_write(sc, 0x06, 0x8152); + re_mdio_write(sc, 0x06, 0xaf81); + re_mdio_write(sc, 0x06, 0x8baf); + re_mdio_write(sc, 0x06, 0x81c2); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4800); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4900); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x5110); + re_mdio_write(sc, 0x06, 0xe483); + re_mdio_write(sc, 0x06, 0x5158); + re_mdio_write(sc, 0x06, 0x019f); + re_mdio_write(sc, 0x06, 0xead0); + re_mdio_write(sc, 0x06, 0x00d1); + re_mdio_write(sc, 0x06, 0x801f); + re_mdio_write(sc, 0x06, 0x66e2); + re_mdio_write(sc, 0x06, 0xf8ea); + re_mdio_write(sc, 0x06, 0xe3f8); + re_mdio_write(sc, 0x06, 0xeb5a); + re_mdio_write(sc, 0x06, 0xf81e); + re_mdio_write(sc, 0x06, 0x20e6); + re_mdio_write(sc, 0x06, 0xf8ea); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0xebd3); + re_mdio_write(sc, 0x06, 0x02b3); + re_mdio_write(sc, 0x06, 0xfee2); + re_mdio_write(sc, 0x06, 0xf87c); + re_mdio_write(sc, 0x06, 0xef32); + re_mdio_write(sc, 0x06, 0x5b80); + re_mdio_write(sc, 0x06, 0xe3f8); + re_mdio_write(sc, 0x06, 0x7d9e); + re_mdio_write(sc, 0x06, 0x037d); + re_mdio_write(sc, 0x06, 0xffff); + re_mdio_write(sc, 0x06, 0x0d58); + re_mdio_write(sc, 0x06, 0x1c55); + re_mdio_write(sc, 0x06, 0x1a65); + re_mdio_write(sc, 0x06, 0x11a1); + re_mdio_write(sc, 0x06, 0x90d3); + re_mdio_write(sc, 0x06, 0xe283); + re_mdio_write(sc, 0x06, 0x48e3); + re_mdio_write(sc, 0x06, 0x8349); + re_mdio_write(sc, 0x06, 0x1b56); + re_mdio_write(sc, 0x06, 0xab08); + re_mdio_write(sc, 0x06, 0xef56); + re_mdio_write(sc, 0x06, 0xe683); + re_mdio_write(sc, 0x06, 0x48e7); + re_mdio_write(sc, 0x06, 0x8349); + re_mdio_write(sc, 0x06, 0x10d1); + re_mdio_write(sc, 0x06, 0x801f); + re_mdio_write(sc, 0x06, 0x66a0); + re_mdio_write(sc, 0x06, 0x04b9); + re_mdio_write(sc, 0x06, 0xe283); + re_mdio_write(sc, 0x06, 0x48e3); + re_mdio_write(sc, 0x06, 0x8349); + re_mdio_write(sc, 0x06, 0xef65); + re_mdio_write(sc, 0x06, 0xe283); + re_mdio_write(sc, 0x06, 0x4ae3); + re_mdio_write(sc, 0x06, 0x834b); + re_mdio_write(sc, 0x06, 0x1b56); + re_mdio_write(sc, 0x06, 0xaa0e); + re_mdio_write(sc, 0x06, 0xef56); + re_mdio_write(sc, 0x06, 0xe683); + re_mdio_write(sc, 0x06, 0x4ae7); + re_mdio_write(sc, 0x06, 0x834b); + re_mdio_write(sc, 0x06, 0xe283); + re_mdio_write(sc, 0x06, 0x4de6); + re_mdio_write(sc, 0x06, 0x834c); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4da0); + re_mdio_write(sc, 0x06, 0x000c); + re_mdio_write(sc, 0x06, 0xaf81); + re_mdio_write(sc, 0x06, 0x8be0); + re_mdio_write(sc, 0x06, 0x834d); + re_mdio_write(sc, 0x06, 0x10e4); + re_mdio_write(sc, 0x06, 0x834d); + re_mdio_write(sc, 0x06, 0xae04); + re_mdio_write(sc, 0x06, 0x80e4); + re_mdio_write(sc, 0x06, 0x834d); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4e78); + re_mdio_write(sc, 0x06, 0x039e); + re_mdio_write(sc, 0x06, 0x0be0); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x7804); + re_mdio_write(sc, 0x06, 0x9e04); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4e02); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x32e1); + re_mdio_write(sc, 0x06, 0x8333); + re_mdio_write(sc, 0x06, 0x590f); + re_mdio_write(sc, 0x06, 0xe283); + re_mdio_write(sc, 0x06, 0x4d0c); + re_mdio_write(sc, 0x06, 0x245a); + re_mdio_write(sc, 0x06, 0xf01e); + re_mdio_write(sc, 0x06, 0x12e4); + re_mdio_write(sc, 0x06, 0xf88c); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0x8de0); + re_mdio_write(sc, 0x06, 0x8330); + re_mdio_write(sc, 0x06, 0xe183); + re_mdio_write(sc, 0x06, 0x3168); + re_mdio_write(sc, 0x06, 0x01e4); + re_mdio_write(sc, 0x06, 0xf88a); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0x8bae); + re_mdio_write(sc, 0x06, 0x37ee); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x03e0); + re_mdio_write(sc, 0x06, 0x834c); + re_mdio_write(sc, 0x06, 0xe183); + re_mdio_write(sc, 0x06, 0x4d1b); + re_mdio_write(sc, 0x06, 0x019e); + re_mdio_write(sc, 0x06, 0x04aa); + re_mdio_write(sc, 0x06, 0xa1ae); + re_mdio_write(sc, 0x06, 0xa8ee); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0x834f); + re_mdio_write(sc, 0x06, 0x00ae); + re_mdio_write(sc, 0x06, 0xabe0); + re_mdio_write(sc, 0x06, 0x834f); + re_mdio_write(sc, 0x06, 0x7803); + re_mdio_write(sc, 0x06, 0x9f14); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4e05); + re_mdio_write(sc, 0x06, 0xd240); + re_mdio_write(sc, 0x06, 0xd655); + re_mdio_write(sc, 0x06, 0x5402); + re_mdio_write(sc, 0x06, 0x81c6); + re_mdio_write(sc, 0x06, 0xd2a0); + re_mdio_write(sc, 0x06, 0xd6ba); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x81c6); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc05); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0xf860); + re_mdio_write(sc, 0x06, 0xe1f8); + re_mdio_write(sc, 0x06, 0x6168); + re_mdio_write(sc, 0x06, 0x02e4); + re_mdio_write(sc, 0x06, 0xf860); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0x61e0); + re_mdio_write(sc, 0x06, 0xf848); + re_mdio_write(sc, 0x06, 0xe1f8); + re_mdio_write(sc, 0x06, 0x4958); + re_mdio_write(sc, 0x06, 0x0f1e); + re_mdio_write(sc, 0x06, 0x02e4); + re_mdio_write(sc, 0x06, 0xf848); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0x49d0); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x820a); + re_mdio_write(sc, 0x06, 0xbf83); + re_mdio_write(sc, 0x06, 0x50ef); + re_mdio_write(sc, 0x06, 0x46dc); + re_mdio_write(sc, 0x06, 0x19dd); + re_mdio_write(sc, 0x06, 0xd001); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x0a02); + re_mdio_write(sc, 0x06, 0x8226); + re_mdio_write(sc, 0x06, 0xe0f8); + re_mdio_write(sc, 0x06, 0x60e1); + re_mdio_write(sc, 0x06, 0xf861); + re_mdio_write(sc, 0x06, 0x58fd); + re_mdio_write(sc, 0x06, 0xe4f8); + re_mdio_write(sc, 0x06, 0x60e5); + re_mdio_write(sc, 0x06, 0xf861); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xfbc6); + re_mdio_write(sc, 0x06, 0xbff8); + re_mdio_write(sc, 0x06, 0x40be); + re_mdio_write(sc, 0x06, 0x8350); + re_mdio_write(sc, 0x06, 0xa001); + re_mdio_write(sc, 0x06, 0x0107); + re_mdio_write(sc, 0x06, 0x1b89); + re_mdio_write(sc, 0x06, 0xcfd2); + re_mdio_write(sc, 0x06, 0x08eb); + re_mdio_write(sc, 0x06, 0xdb19); + re_mdio_write(sc, 0x06, 0xb2fb); + re_mdio_write(sc, 0x06, 0xfffe); + re_mdio_write(sc, 0x06, 0xfd04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0xf848); + re_mdio_write(sc, 0x06, 0xe1f8); + re_mdio_write(sc, 0x06, 0x4968); + re_mdio_write(sc, 0x06, 0x08e4); + re_mdio_write(sc, 0x06, 0xf848); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0x4958); + re_mdio_write(sc, 0x06, 0xf7e4); + re_mdio_write(sc, 0x06, 0xf848); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0x49fc); + re_mdio_write(sc, 0x06, 0x044d); + re_mdio_write(sc, 0x06, 0x2000); + re_mdio_write(sc, 0x06, 0x024e); + re_mdio_write(sc, 0x06, 0x2200); + re_mdio_write(sc, 0x06, 0x024d); + re_mdio_write(sc, 0x06, 0xdfff); + re_mdio_write(sc, 0x06, 0x014e); + re_mdio_write(sc, 0x06, 0xddff); + re_mdio_write(sc, 0x06, 0x01f8); + re_mdio_write(sc, 0x06, 0xfafb); + re_mdio_write(sc, 0x06, 0xef79); + re_mdio_write(sc, 0x06, 0xbff8); + re_mdio_write(sc, 0x06, 0x22d8); + re_mdio_write(sc, 0x06, 0x19d9); + re_mdio_write(sc, 0x06, 0x5884); + re_mdio_write(sc, 0x06, 0x9f09); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0x6dd6); + re_mdio_write(sc, 0x06, 0x8275); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x4fef); + re_mdio_write(sc, 0x06, 0x97ff); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x0517); + re_mdio_write(sc, 0x06, 0xfffe); + re_mdio_write(sc, 0x06, 0x0117); + re_mdio_write(sc, 0x06, 0x0001); + re_mdio_write(sc, 0x06, 0x0200); + re_mdio_write(sc, 0x05, 0x83d8); + re_mdio_write(sc, 0x06, 0x8000); + re_mdio_write(sc, 0x05, 0x83d6); + re_mdio_write(sc, 0x06, 0x824f); + re_mdio_write(sc, 0x02, 0x2010); + re_mdio_write(sc, 0x03, 0xdc00); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x0b, 0x0600); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x00fc); + re_mdio_write(sc, 0x1f, 0x0000); + } + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0xF880); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_36 || sc->re_type == MACFG_37) { + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0023); + Data = re_mdio_read(sc, 0x17) | 0x0006; + if (sc->RequiredSecLanDonglePatch) + Data &= ~(BIT_2); + else + Data |= (BIT_2); + re_mdio_write(sc, 0x17, Data); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0x8b80); + re_mdio_write(sc, 0x06, 0xc896); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x0B, 0x6C20); + re_mdio_write(sc, 0x07, 0x2872); + re_mdio_write(sc, 0x1C, 0xEFFF); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x14, 0x6420); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + Data = re_mdio_read(sc, 0x08) & 0x00FF; + re_mdio_write(sc, 0x08, Data | 0x8000); + + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x002D); + Data = re_mdio_read(sc, 0x18); + re_mdio_write(sc, 0x18, Data | 0x0050); + re_mdio_write(sc, 0x1F, 0x0000); + Data = re_mdio_read(sc, 0x14); + re_mdio_write(sc, 0x14, Data | 0x8000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x00, 0x080B); + re_mdio_write(sc, 0x0B, 0x09D7); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x15, 0x1006); + + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x002F); + re_mdio_write(sc, 0x15, 0x1919); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x19, 0x7F46); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8AD2); + re_mdio_write(sc, 0x06, 0x6810); + re_mdio_write(sc, 0x05, 0x8AD4); + re_mdio_write(sc, 0x06, 0x8002); + re_mdio_write(sc, 0x05, 0x8ADE); + re_mdio_write(sc, 0x06, 0x8025); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_38) { + CSR_WRITE_1(sc, 0x6E, CSR_READ_1(sc, 0x6E)| (1<<6)); + + Data_u32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); + Data_u32 &= ~BIT_1; + re_eri_write(sc, 0x1D0, 4, Data_u32, ERIAR_ExGMAC); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B80); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_2 | BIT_1; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x002D); + Data = re_mdio_read(sc, 0x18); + Data |= BIT_4; + re_mdio_write(sc, 0x18, Data); + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x1f, 0x0000); + Data = re_mdio_read(sc, 0x14); + Data |= BIT_15; + re_mdio_write(sc, 0x14, Data); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B86); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_0; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x0B, 0x6C14); + re_mdio_write(sc, 0x14, 0x7F3D); + re_mdio_write(sc, 0x1C, 0xFAFE); + re_mdio_write(sc, 0x08, 0x07C5); + re_mdio_write(sc, 0x10, 0xF090); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x14, 0x641A); + re_mdio_write(sc, 0x1A, 0x0606); + re_mdio_write(sc, 0x12, 0xF480); + re_mdio_write(sc, 0x13, 0x0747); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0078); + re_mdio_write(sc, 0x15, 0xA408); + re_mdio_write(sc, 0x17, 0x5100); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x0D, 0x0207); + re_mdio_write(sc, 0x02, 0x5FD0); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x00A1); + Data = re_mdio_read(sc, 0x1A); + Data &= ~BIT_2; + re_mdio_write(sc, 0x1A, Data); + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x002D); + Data = re_mdio_read(sc, 0x16); + Data |= BIT_5; + re_mdio_write(sc, 0x16, Data); + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x00AC); + re_mdio_write(sc, 0x18, 0x0006); + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x09, 0xA20F); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_14; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B54); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8B5D); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7C); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7F); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A82); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A85); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A88); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_15; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + Data = re_mdio_read(sc, 0x19); + Data &= ~BIT_0; + re_mdio_write(sc, 0x19, Data); + Data = re_mdio_read(sc, 0x10); + Data &= ~BIT_10; + re_mdio_write(sc, 0x10, Data); + re_mdio_write(sc, 0x1f, 0x0000); + } else if (sc->re_type == MACFG_39) { + Data_u32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); + Data_u32 &= ~BIT_1; + re_eri_write(sc, 0x1D0, 4, Data_u32, ERIAR_ExGMAC); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B80); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_2 | BIT_1; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_15; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x002D); + Data = re_mdio_read(sc, 0x18); + Data |= BIT_4; + re_mdio_write(sc, 0x18, Data); + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x1f, 0x0000); + Data = re_mdio_read(sc, 0x14); + Data |= BIT_15; + re_mdio_write(sc, 0x14, Data); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B86); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_0; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x00AC); + re_mdio_write(sc, 0x18, 0x0006); + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x09, 0xA20F); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_14; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B54); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8B5D); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7C); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7F); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A82); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A85); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A88); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + Data = re_mdio_read(sc, 0x19); + Data &= ~BIT_0; + re_mdio_write(sc, 0x19, Data); + Data = re_mdio_read(sc, 0x10); + Data &= ~BIT_10; + re_mdio_write(sc, 0x10, Data); + re_mdio_write(sc, 0x1f, 0x0000); + } else if (sc->re_type == MACFG_41) { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x11, re_mdio_read(sc, 0x11) | 0x1000); + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x0F, re_mdio_read(sc, 0x0F) | 0x0003); + re_mdio_write(sc, 0x1F, 0x0000); + + for (Data_u32=0x800E0068; Data_u32<0x800E006D; Data_u32++) { + CSR_WRITE_4(sc, 0xF8, Data_u32); + for (i=0; i<10; i++) { + DELAY(400); + if ((CSR_READ_4(sc, 0xF8)&0x80000000)==0) + break; + } + } + } else if (sc->re_type == MACFG_42 || sc->re_type == MACFG_43) { + Data_u32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); + Data_u32 &= 0xFFFF0000; + re_eri_write(sc, 0x1D0, 4, Data_u32, ERIAR_ExGMAC); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x18, 0x0310); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x19, 0x7070); + re_mdio_write(sc, 0x1c, 0x0600); + re_mdio_write(sc, 0x1d, 0x9700); + re_mdio_write(sc, 0x1d, 0x7d00); + re_mdio_write(sc, 0x1d, 0x6900); + re_mdio_write(sc, 0x1d, 0x7d00); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x4899); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x8000); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x4007); + re_mdio_write(sc, 0x1d, 0x4400); + re_mdio_write(sc, 0x1d, 0x4800); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6736); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x571f); + re_mdio_write(sc, 0x1d, 0x5ffb); + re_mdio_write(sc, 0x1d, 0xaa03); + re_mdio_write(sc, 0x1d, 0x5b58); + re_mdio_write(sc, 0x1d, 0x301e); + re_mdio_write(sc, 0x1d, 0x5b64); + re_mdio_write(sc, 0x1d, 0xa6fc); + re_mdio_write(sc, 0x1d, 0xdcdb); + re_mdio_write(sc, 0x1d, 0x0014); + re_mdio_write(sc, 0x1d, 0xd9a9); + re_mdio_write(sc, 0x1d, 0x0013); + re_mdio_write(sc, 0x1d, 0xd16b); + re_mdio_write(sc, 0x1d, 0x0011); + re_mdio_write(sc, 0x1d, 0xb40e); + re_mdio_write(sc, 0x1d, 0xd06b); + re_mdio_write(sc, 0x1d, 0x000c); + re_mdio_write(sc, 0x1d, 0xb206); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c00); + re_mdio_write(sc, 0x1d, 0x301a); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5801); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c04); + re_mdio_write(sc, 0x1d, 0x301e); + re_mdio_write(sc, 0x1d, 0x314d); + re_mdio_write(sc, 0x1d, 0x31f0); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c20); + re_mdio_write(sc, 0x1d, 0x6004); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x4833); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c08); + re_mdio_write(sc, 0x1d, 0x8300); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6600); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xb90c); + re_mdio_write(sc, 0x1d, 0x30d3); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4de0); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6736); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x300b); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c60); + re_mdio_write(sc, 0x1d, 0x6803); + re_mdio_write(sc, 0x1d, 0x6520); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xaf03); + re_mdio_write(sc, 0x1d, 0x6015); + re_mdio_write(sc, 0x1d, 0x3059); + re_mdio_write(sc, 0x1d, 0x6017); + re_mdio_write(sc, 0x1d, 0x57e0); + re_mdio_write(sc, 0x1d, 0x580c); + re_mdio_write(sc, 0x1d, 0x588c); + re_mdio_write(sc, 0x1d, 0x7ffc); + re_mdio_write(sc, 0x1d, 0x5fa3); + re_mdio_write(sc, 0x1d, 0x4827); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c10); + re_mdio_write(sc, 0x1d, 0x8400); + re_mdio_write(sc, 0x1d, 0x7c30); + re_mdio_write(sc, 0x1d, 0x6020); + re_mdio_write(sc, 0x1d, 0x48bf); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0xad09); + re_mdio_write(sc, 0x1d, 0x7c03); + re_mdio_write(sc, 0x1d, 0x5c03); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x4400); + re_mdio_write(sc, 0x1d, 0xad2c); + re_mdio_write(sc, 0x1d, 0xd6cf); + re_mdio_write(sc, 0x1d, 0x0002); + re_mdio_write(sc, 0x1d, 0x80f4); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c80); + re_mdio_write(sc, 0x1d, 0x7c20); + re_mdio_write(sc, 0x1d, 0x5c20); + re_mdio_write(sc, 0x1d, 0x481e); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c02); + re_mdio_write(sc, 0x1d, 0xad0a); + re_mdio_write(sc, 0x1d, 0x7c03); + re_mdio_write(sc, 0x1d, 0x5c03); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x4400); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x8d02); + re_mdio_write(sc, 0x1d, 0x4401); + re_mdio_write(sc, 0x1d, 0x81f4); + re_mdio_write(sc, 0x1d, 0x3114); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d00); + re_mdio_write(sc, 0x1d, 0x4832); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c10); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0xa4b7); + re_mdio_write(sc, 0x1d, 0xd9b3); + re_mdio_write(sc, 0x1d, 0xfffe); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d20); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6200); + re_mdio_write(sc, 0x1d, 0x3045); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d40); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x4401); + re_mdio_write(sc, 0x1d, 0x5210); + re_mdio_write(sc, 0x1d, 0x4833); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x4c08); + re_mdio_write(sc, 0x1d, 0x8300); + re_mdio_write(sc, 0x1d, 0x5f80); + re_mdio_write(sc, 0x1d, 0x55e0); + re_mdio_write(sc, 0x1d, 0xc06f); + re_mdio_write(sc, 0x1d, 0x0005); + re_mdio_write(sc, 0x1d, 0xd9b3); + re_mdio_write(sc, 0x1d, 0xfffd); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x6040); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d60); + re_mdio_write(sc, 0x1d, 0x57e0); + re_mdio_write(sc, 0x1d, 0x4814); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x4c04); + re_mdio_write(sc, 0x1d, 0x8200); + re_mdio_write(sc, 0x1d, 0x7c03); + re_mdio_write(sc, 0x1d, 0x5c03); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xad02); + re_mdio_write(sc, 0x1d, 0x4400); + re_mdio_write(sc, 0x1d, 0xc0e9); + re_mdio_write(sc, 0x1d, 0x0003); + re_mdio_write(sc, 0x1d, 0xadd8); + re_mdio_write(sc, 0x1d, 0x30c6); + re_mdio_write(sc, 0x1d, 0x3078); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4dc0); + re_mdio_write(sc, 0x1d, 0x6730); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xd09d); + re_mdio_write(sc, 0x1d, 0x0002); + re_mdio_write(sc, 0x1d, 0xb4fe); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d80); + re_mdio_write(sc, 0x1d, 0x6802); + re_mdio_write(sc, 0x1d, 0x6600); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x486c); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x9503); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6200); + re_mdio_write(sc, 0x1d, 0x571f); + re_mdio_write(sc, 0x1d, 0x5fbb); + re_mdio_write(sc, 0x1d, 0xaa03); + re_mdio_write(sc, 0x1d, 0x5b58); + re_mdio_write(sc, 0x1d, 0x30e9); + re_mdio_write(sc, 0x1d, 0x5b64); + re_mdio_write(sc, 0x1d, 0xcdab); + re_mdio_write(sc, 0x1d, 0xff5b); + re_mdio_write(sc, 0x1d, 0xcd8d); + re_mdio_write(sc, 0x1d, 0xff59); + re_mdio_write(sc, 0x1d, 0xd96b); + re_mdio_write(sc, 0x1d, 0xff57); + re_mdio_write(sc, 0x1d, 0xd0a0); + re_mdio_write(sc, 0x1d, 0xffdb); + re_mdio_write(sc, 0x1d, 0xcba0); + re_mdio_write(sc, 0x1d, 0x0003); + re_mdio_write(sc, 0x1d, 0x80f0); + re_mdio_write(sc, 0x1d, 0x30f6); + re_mdio_write(sc, 0x1d, 0x3109); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ce0); + re_mdio_write(sc, 0x1d, 0x7d30); + re_mdio_write(sc, 0x1d, 0x6530); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7ce0); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x4832); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c08); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6008); + re_mdio_write(sc, 0x1d, 0x8300); + re_mdio_write(sc, 0x1d, 0xb902); + re_mdio_write(sc, 0x1d, 0x30d3); + re_mdio_write(sc, 0x1d, 0x308f); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4da0); + re_mdio_write(sc, 0x1d, 0x57a0); + re_mdio_write(sc, 0x1d, 0x590c); + re_mdio_write(sc, 0x1d, 0x5fa2); + re_mdio_write(sc, 0x1d, 0xcba4); + re_mdio_write(sc, 0x1d, 0x0005); + re_mdio_write(sc, 0x1d, 0xcd8d); + re_mdio_write(sc, 0x1d, 0x0003); + re_mdio_write(sc, 0x1d, 0x80fc); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ca0); + re_mdio_write(sc, 0x1d, 0xb603); + re_mdio_write(sc, 0x1d, 0x7c10); + re_mdio_write(sc, 0x1d, 0x6010); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x541f); + re_mdio_write(sc, 0x1d, 0x7ffc); + re_mdio_write(sc, 0x1d, 0x5fb3); + re_mdio_write(sc, 0x1d, 0x9403); + re_mdio_write(sc, 0x1d, 0x7c03); + re_mdio_write(sc, 0x1d, 0x5c03); + re_mdio_write(sc, 0x1d, 0xaa05); + re_mdio_write(sc, 0x1d, 0x7c80); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x5b58); + re_mdio_write(sc, 0x1d, 0x3128); + re_mdio_write(sc, 0x1d, 0x7c80); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x5b64); + re_mdio_write(sc, 0x1d, 0x4827); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c10); + re_mdio_write(sc, 0x1d, 0x8400); + re_mdio_write(sc, 0x1d, 0x7c10); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c04); + re_mdio_write(sc, 0x1d, 0x8200); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4cc0); + re_mdio_write(sc, 0x1d, 0x7d00); + re_mdio_write(sc, 0x1d, 0x6400); + re_mdio_write(sc, 0x1d, 0x7ffc); + re_mdio_write(sc, 0x1d, 0x5fbb); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c04); + re_mdio_write(sc, 0x1d, 0x8200); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6a00); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c04); + re_mdio_write(sc, 0x1d, 0x8200); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x30f6); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e00); + re_mdio_write(sc, 0x1d, 0x4007); + re_mdio_write(sc, 0x1d, 0x4400); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6736); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x570f); + re_mdio_write(sc, 0x1d, 0x5fff); + re_mdio_write(sc, 0x1d, 0xaa03); + re_mdio_write(sc, 0x1d, 0x585b); + re_mdio_write(sc, 0x1d, 0x315c); + re_mdio_write(sc, 0x1d, 0x5867); + re_mdio_write(sc, 0x1d, 0x9402); + re_mdio_write(sc, 0x1d, 0x6200); + re_mdio_write(sc, 0x1d, 0xcda3); + re_mdio_write(sc, 0x1d, 0x009d); + re_mdio_write(sc, 0x1d, 0xcd85); + re_mdio_write(sc, 0x1d, 0x009b); + re_mdio_write(sc, 0x1d, 0xd96b); + re_mdio_write(sc, 0x1d, 0x0099); + re_mdio_write(sc, 0x1d, 0x96e9); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6736); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e20); + re_mdio_write(sc, 0x1d, 0x96e4); + re_mdio_write(sc, 0x1d, 0x8b04); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x5008); + re_mdio_write(sc, 0x1d, 0xab03); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x5000); + re_mdio_write(sc, 0x1d, 0x6801); + re_mdio_write(sc, 0x1d, 0x6776); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xdb7c); + re_mdio_write(sc, 0x1d, 0xfff0); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7fe1); + re_mdio_write(sc, 0x1d, 0x4e40); + re_mdio_write(sc, 0x1d, 0x4837); + re_mdio_write(sc, 0x1d, 0x4418); + re_mdio_write(sc, 0x1d, 0x41c7); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e40); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x8fc9); + re_mdio_write(sc, 0x1d, 0xd2a0); + re_mdio_write(sc, 0x1d, 0x004a); + re_mdio_write(sc, 0x1d, 0x9203); + re_mdio_write(sc, 0x1d, 0xa041); + re_mdio_write(sc, 0x1d, 0x3184); + re_mdio_write(sc, 0x1d, 0x7fe1); + re_mdio_write(sc, 0x1d, 0x4e60); + re_mdio_write(sc, 0x1d, 0x489c); + re_mdio_write(sc, 0x1d, 0x4628); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e60); + re_mdio_write(sc, 0x1d, 0x7e28); + re_mdio_write(sc, 0x1d, 0x4628); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c00); + re_mdio_write(sc, 0x1d, 0x41e8); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x8fb0); + re_mdio_write(sc, 0x1d, 0xb241); + re_mdio_write(sc, 0x1d, 0xa02a); + re_mdio_write(sc, 0x1d, 0x319d); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ea0); + re_mdio_write(sc, 0x1d, 0x7c02); + re_mdio_write(sc, 0x1d, 0x4402); + re_mdio_write(sc, 0x1d, 0x4448); + re_mdio_write(sc, 0x1d, 0x4894); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c03); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c07); + re_mdio_write(sc, 0x1d, 0x41ef); + re_mdio_write(sc, 0x1d, 0x41ff); + re_mdio_write(sc, 0x1d, 0x4891); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c07); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c17); + re_mdio_write(sc, 0x1d, 0x8400); + re_mdio_write(sc, 0x1d, 0x8ef8); + re_mdio_write(sc, 0x1d, 0x41c7); + re_mdio_write(sc, 0x1d, 0x8f95); + re_mdio_write(sc, 0x1d, 0x92d5); + re_mdio_write(sc, 0x1d, 0xa10f); + re_mdio_write(sc, 0x1d, 0xd480); + re_mdio_write(sc, 0x1d, 0x0008); + re_mdio_write(sc, 0x1d, 0xd580); + re_mdio_write(sc, 0x1d, 0xffb9); + re_mdio_write(sc, 0x1d, 0xa202); + re_mdio_write(sc, 0x1d, 0x31b8); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x4404); + re_mdio_write(sc, 0x1d, 0x31b8); + re_mdio_write(sc, 0x1d, 0xd484); + re_mdio_write(sc, 0x1d, 0xfff3); + re_mdio_write(sc, 0x1d, 0xd484); + re_mdio_write(sc, 0x1d, 0xfff1); + re_mdio_write(sc, 0x1d, 0x314d); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ee0); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x4488); + re_mdio_write(sc, 0x1d, 0x41cf); + re_mdio_write(sc, 0x1d, 0x314d); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ec0); + re_mdio_write(sc, 0x1d, 0x48f3); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c09); + re_mdio_write(sc, 0x1d, 0x4508); + re_mdio_write(sc, 0x1d, 0x41c7); + re_mdio_write(sc, 0x1d, 0x8f24); + re_mdio_write(sc, 0x1d, 0xd218); + re_mdio_write(sc, 0x1d, 0x0022); + re_mdio_write(sc, 0x1d, 0xd2a4); + re_mdio_write(sc, 0x1d, 0xff9f); + re_mdio_write(sc, 0x1d, 0x31d9); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e80); + re_mdio_write(sc, 0x1d, 0x4832); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c11); + re_mdio_write(sc, 0x1d, 0x4428); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5440); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5801); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c04); + re_mdio_write(sc, 0x1d, 0x41e8); + re_mdio_write(sc, 0x1d, 0xa4b3); + re_mdio_write(sc, 0x1d, 0x31ee); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6736); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x570f); + re_mdio_write(sc, 0x1d, 0x5fff); + re_mdio_write(sc, 0x1d, 0xaa03); + re_mdio_write(sc, 0x1d, 0x585b); + re_mdio_write(sc, 0x1d, 0x31fa); + re_mdio_write(sc, 0x1d, 0x5867); + re_mdio_write(sc, 0x1d, 0xbcf6); + re_mdio_write(sc, 0x1d, 0x300b); + re_mdio_write(sc, 0x1d, 0x300b); + re_mdio_write(sc, 0x1d, 0x314d); + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1c, 0x0200); + re_mdio_write(sc, 0x19, 0x7030); + re_mdio_write(sc, 0x1f, 0x0000); + + if (CSR_READ_1(sc, 0xEF)&0x08) { + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x1A, 0x0004); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x1A, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + } + + if (CSR_READ_1(sc, 0xEF)&0x10) { + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x1C, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x1C, 0x0200); + re_mdio_write(sc, 0x1F, 0x0000); + } + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x15, 0x7701); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + re_clear_eth_phy_bit(sc, 0x1A, BIT_14); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x18, 0x8310); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x18, 0x0310); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0003); + re_mdio_write(sc, 0x0E, 0x0015); + re_mdio_write(sc, 0x0D, 0x4003); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + + } else if (sc->re_type == MACFG_50) { + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B80); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_2 | BIT_1; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x002D); + Data = re_mdio_read(sc, 0x18); + Data |= BIT_4; + re_mdio_write(sc, 0x18, Data); + re_mdio_write(sc, 0x1f, 0x0000); + Data = re_mdio_read(sc, 0x14); + Data |= BIT_15; + re_mdio_write(sc, 0x14, Data); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B86); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_0; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_14; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x09, 0xA20F); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B55); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x05, 0x8B5E); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x05, 0x8B67); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x05, 0x8B70); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0078); + re_mdio_write(sc, 0x17, 0x0000); + re_mdio_write(sc, 0x19, 0x00FB); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B79); + re_mdio_write(sc, 0x06, 0xAA00); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x01, 0x328A); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B54); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8B5D); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7C); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7F); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A82); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A85); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A88); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_15; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + Data = re_mdio_read(sc, 0x19); + Data &= ~BIT_0; + re_mdio_write(sc, 0x19, Data); + Data = re_mdio_read(sc, 0x10); + Data &= ~BIT_10; + re_mdio_write(sc, 0x10, Data); + re_mdio_write(sc, 0x1f, 0x0000); + } else if (sc->re_type == MACFG_51) { + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B80); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_2 | BIT_1; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x002D); + Data = re_mdio_read(sc, 0x18); + Data |= BIT_4; + re_mdio_write(sc, 0x18, Data); + re_mdio_write(sc, 0x1f, 0x0000); + Data = re_mdio_read(sc, 0x14); + Data |= BIT_15; + re_mdio_write(sc, 0x14, Data); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B86); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_0; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B54); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8B5D); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7C); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7F); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A82); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A85); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A88); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0023); + re_clear_eth_phy_bit(sc, 0x17, BIT_1); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_15; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + Data = re_mdio_read(sc, 0x19); + Data &= ~BIT_0; + re_mdio_write(sc, 0x19, Data); + Data = re_mdio_read(sc, 0x10); + Data &= ~BIT_10; + re_mdio_write(sc, 0x10, Data); + re_mdio_write(sc, 0x1f, 0x0000); + } else if (sc->re_type == MACFG_52) { + Data_u32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); + Data_u32 &= ~BIT_1; + re_eri_write(sc, 0x1D0, 4, Data_u32, ERIAR_ExGMAC); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B80); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_2 | BIT_1; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x002D); + Data = re_mdio_read(sc, 0x18); + Data |= BIT_4; + re_mdio_write(sc, 0x18, Data); + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x1f, 0x0000); + Data = re_mdio_read(sc, 0x14); + Data |= BIT_15; + re_mdio_write(sc, 0x14, Data); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B86); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_0; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_14; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x09, 0xA20F); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B55); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x05, 0x8B5E); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x05, 0x8B67); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x05, 0x8B70); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0078); + re_mdio_write(sc, 0x17, 0x0000); + re_mdio_write(sc, 0x19, 0x00FB); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B79); + re_mdio_write(sc, 0x06, 0xAA00); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x01, 0x328A); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B54); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8B5D); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7C); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7F); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A82); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A85); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A88); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_15; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + Data = re_mdio_read(sc, 0x19); + Data &= ~BIT_0; + re_mdio_write(sc, 0x19, Data); + Data = re_mdio_read(sc, 0x10); + Data &= ~BIT_10; + re_mdio_write(sc, 0x10, Data); + re_mdio_write(sc, 0x1f, 0x0000); + } else if (sc->re_type == MACFG_53) { + Data_u32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); + Data_u32 &= 0xFFFF0000; + re_eri_write(sc, 0x1D0, 4, Data_u32, ERIAR_ExGMAC); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x18, 0x0310); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x19, 0x7070); + re_mdio_write(sc, 0x1c, 0x0600); + re_mdio_write(sc, 0x1d, 0x9700); + re_mdio_write(sc, 0x1d, 0x7d00); + re_mdio_write(sc, 0x1d, 0x6900); + re_mdio_write(sc, 0x1d, 0x7d00); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x4899); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x8000); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x4007); + re_mdio_write(sc, 0x1d, 0x4400); + re_mdio_write(sc, 0x1d, 0x4800); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6736); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x571f); + re_mdio_write(sc, 0x1d, 0x5ffb); + re_mdio_write(sc, 0x1d, 0xaa03); + re_mdio_write(sc, 0x1d, 0x5b58); + re_mdio_write(sc, 0x1d, 0x301e); + re_mdio_write(sc, 0x1d, 0x5b64); + re_mdio_write(sc, 0x1d, 0xa6fc); + re_mdio_write(sc, 0x1d, 0xdcdb); + re_mdio_write(sc, 0x1d, 0x0015); + re_mdio_write(sc, 0x1d, 0xb915); + re_mdio_write(sc, 0x1d, 0xb511); + re_mdio_write(sc, 0x1d, 0xd16b); + re_mdio_write(sc, 0x1d, 0x000f); + re_mdio_write(sc, 0x1d, 0xb40f); + re_mdio_write(sc, 0x1d, 0xd06b); + re_mdio_write(sc, 0x1d, 0x000d); + re_mdio_write(sc, 0x1d, 0xb206); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c00); + re_mdio_write(sc, 0x1d, 0x301a); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5801); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c04); + re_mdio_write(sc, 0x1d, 0x301e); + re_mdio_write(sc, 0x1d, 0x3079); + re_mdio_write(sc, 0x1d, 0x30f1); + re_mdio_write(sc, 0x1d, 0x3199); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c60); + re_mdio_write(sc, 0x1d, 0x6803); + re_mdio_write(sc, 0x1d, 0x6420); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xaf03); + re_mdio_write(sc, 0x1d, 0x6015); + re_mdio_write(sc, 0x1d, 0x3040); + re_mdio_write(sc, 0x1d, 0x6017); + re_mdio_write(sc, 0x1d, 0x57e0); + re_mdio_write(sc, 0x1d, 0x580c); + re_mdio_write(sc, 0x1d, 0x588c); + re_mdio_write(sc, 0x1d, 0x5fa3); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x4827); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c10); + re_mdio_write(sc, 0x1d, 0x8400); + re_mdio_write(sc, 0x1d, 0x7c30); + re_mdio_write(sc, 0x1d, 0x6020); + re_mdio_write(sc, 0x1d, 0x48bf); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0xd6cf); + re_mdio_write(sc, 0x1d, 0x0002); + re_mdio_write(sc, 0x1d, 0x80fe); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c80); + re_mdio_write(sc, 0x1d, 0x7c20); + re_mdio_write(sc, 0x1d, 0x5c20); + re_mdio_write(sc, 0x1d, 0x481e); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c02); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x81ff); + re_mdio_write(sc, 0x1d, 0x30ba); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d00); + re_mdio_write(sc, 0x1d, 0x4832); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c10); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0xa4cc); + re_mdio_write(sc, 0x1d, 0xd9b3); + re_mdio_write(sc, 0x1d, 0xfffe); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d20); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6200); + re_mdio_write(sc, 0x1d, 0x300b); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4dc0); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xd09d); + re_mdio_write(sc, 0x1d, 0x0002); + re_mdio_write(sc, 0x1d, 0xb4fe); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d80); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x6004); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x6802); + re_mdio_write(sc, 0x1d, 0x6720); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x486c); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x9503); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6200); + re_mdio_write(sc, 0x1d, 0x571f); + re_mdio_write(sc, 0x1d, 0x5fbb); + re_mdio_write(sc, 0x1d, 0xaa03); + re_mdio_write(sc, 0x1d, 0x5b58); + re_mdio_write(sc, 0x1d, 0x3092); + re_mdio_write(sc, 0x1d, 0x5b64); + re_mdio_write(sc, 0x1d, 0xcdab); + re_mdio_write(sc, 0x1d, 0xff78); + re_mdio_write(sc, 0x1d, 0xcd8d); + re_mdio_write(sc, 0x1d, 0xff76); + re_mdio_write(sc, 0x1d, 0xd96b); + re_mdio_write(sc, 0x1d, 0xff74); + re_mdio_write(sc, 0x1d, 0xd0a0); + re_mdio_write(sc, 0x1d, 0xffd9); + re_mdio_write(sc, 0x1d, 0xcba0); + re_mdio_write(sc, 0x1d, 0x0003); + re_mdio_write(sc, 0x1d, 0x80f0); + re_mdio_write(sc, 0x1d, 0x309f); + re_mdio_write(sc, 0x1d, 0x30ac); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ce0); + re_mdio_write(sc, 0x1d, 0x4832); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c08); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6008); + re_mdio_write(sc, 0x1d, 0x8300); + re_mdio_write(sc, 0x1d, 0xb902); + re_mdio_write(sc, 0x1d, 0x3079); + re_mdio_write(sc, 0x1d, 0x3061); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4da0); + re_mdio_write(sc, 0x1d, 0x6400); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x57a0); + re_mdio_write(sc, 0x1d, 0x590c); + re_mdio_write(sc, 0x1d, 0x5fa3); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xcba4); + re_mdio_write(sc, 0x1d, 0x0004); + re_mdio_write(sc, 0x1d, 0xcd8d); + re_mdio_write(sc, 0x1d, 0x0002); + re_mdio_write(sc, 0x1d, 0x80fc); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ca0); + re_mdio_write(sc, 0x1d, 0xb603); + re_mdio_write(sc, 0x1d, 0x7c10); + re_mdio_write(sc, 0x1d, 0x6010); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x541f); + re_mdio_write(sc, 0x1d, 0x5fb3); + re_mdio_write(sc, 0x1d, 0xaa05); + re_mdio_write(sc, 0x1d, 0x7c80); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x5b58); + re_mdio_write(sc, 0x1d, 0x30ca); + re_mdio_write(sc, 0x1d, 0x7c80); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x5b64); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c04); + re_mdio_write(sc, 0x1d, 0x8200); + re_mdio_write(sc, 0x1d, 0x4827); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c10); + re_mdio_write(sc, 0x1d, 0x8400); + re_mdio_write(sc, 0x1d, 0x7c10); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4cc0); + re_mdio_write(sc, 0x1d, 0x5fbb); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c04); + re_mdio_write(sc, 0x1d, 0x8200); + re_mdio_write(sc, 0x1d, 0x7ce0); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x6720); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6a00); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c04); + re_mdio_write(sc, 0x1d, 0x8200); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x309f); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e00); + re_mdio_write(sc, 0x1d, 0x4007); + re_mdio_write(sc, 0x1d, 0x4400); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6736); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x570f); + re_mdio_write(sc, 0x1d, 0x5fff); + re_mdio_write(sc, 0x1d, 0xaa03); + re_mdio_write(sc, 0x1d, 0x585b); + re_mdio_write(sc, 0x1d, 0x3100); + re_mdio_write(sc, 0x1d, 0x5867); + re_mdio_write(sc, 0x1d, 0x9403); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6200); + re_mdio_write(sc, 0x1d, 0xcda3); + re_mdio_write(sc, 0x1d, 0x002d); + re_mdio_write(sc, 0x1d, 0xcd85); + re_mdio_write(sc, 0x1d, 0x002b); + re_mdio_write(sc, 0x1d, 0xd96b); + re_mdio_write(sc, 0x1d, 0x0029); + re_mdio_write(sc, 0x1d, 0x9629); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6736); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x9624); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e20); + re_mdio_write(sc, 0x1d, 0x8b04); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x5008); + re_mdio_write(sc, 0x1d, 0xab03); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x5000); + re_mdio_write(sc, 0x1d, 0x6801); + re_mdio_write(sc, 0x1d, 0x6776); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xdb7c); + re_mdio_write(sc, 0x1d, 0xffee); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7fe1); + re_mdio_write(sc, 0x1d, 0x4e40); + re_mdio_write(sc, 0x1d, 0x4837); + re_mdio_write(sc, 0x1d, 0x4418); + re_mdio_write(sc, 0x1d, 0x41c7); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e40); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x8f07); + re_mdio_write(sc, 0x1d, 0xd2a0); + re_mdio_write(sc, 0x1d, 0x004c); + re_mdio_write(sc, 0x1d, 0x9205); + re_mdio_write(sc, 0x1d, 0xa043); + re_mdio_write(sc, 0x1d, 0x312b); + re_mdio_write(sc, 0x1d, 0x300b); + re_mdio_write(sc, 0x1d, 0x30f1); + re_mdio_write(sc, 0x1d, 0x7fe1); + re_mdio_write(sc, 0x1d, 0x4e60); + re_mdio_write(sc, 0x1d, 0x489c); + re_mdio_write(sc, 0x1d, 0x4628); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e60); + re_mdio_write(sc, 0x1d, 0x7e28); + re_mdio_write(sc, 0x1d, 0x4628); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c00); + re_mdio_write(sc, 0x1d, 0x41e8); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x8fec); + re_mdio_write(sc, 0x1d, 0xb241); + re_mdio_write(sc, 0x1d, 0xa02a); + re_mdio_write(sc, 0x1d, 0x3146); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ea0); + re_mdio_write(sc, 0x1d, 0x7c02); + re_mdio_write(sc, 0x1d, 0x4402); + re_mdio_write(sc, 0x1d, 0x4448); + re_mdio_write(sc, 0x1d, 0x4894); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c03); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c07); + re_mdio_write(sc, 0x1d, 0x41ef); + re_mdio_write(sc, 0x1d, 0x41ff); + re_mdio_write(sc, 0x1d, 0x4891); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c07); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c17); + re_mdio_write(sc, 0x1d, 0x8400); + re_mdio_write(sc, 0x1d, 0x8ef8); + re_mdio_write(sc, 0x1d, 0x41c7); + re_mdio_write(sc, 0x1d, 0x8fd1); + re_mdio_write(sc, 0x1d, 0x92d5); + re_mdio_write(sc, 0x1d, 0xa10f); + re_mdio_write(sc, 0x1d, 0xd480); + re_mdio_write(sc, 0x1d, 0x0008); + re_mdio_write(sc, 0x1d, 0xd580); + re_mdio_write(sc, 0x1d, 0xffb7); + re_mdio_write(sc, 0x1d, 0xa202); + re_mdio_write(sc, 0x1d, 0x3161); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x4404); + re_mdio_write(sc, 0x1d, 0x3161); + re_mdio_write(sc, 0x1d, 0xd484); + re_mdio_write(sc, 0x1d, 0xfff3); + re_mdio_write(sc, 0x1d, 0xd484); + re_mdio_write(sc, 0x1d, 0xfff1); + re_mdio_write(sc, 0x1d, 0x30f1); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ee0); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x4488); + re_mdio_write(sc, 0x1d, 0x41cf); + re_mdio_write(sc, 0x1d, 0x30f1); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ec0); + re_mdio_write(sc, 0x1d, 0x48f3); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c09); + re_mdio_write(sc, 0x1d, 0x4508); + re_mdio_write(sc, 0x1d, 0x41c7); + re_mdio_write(sc, 0x1d, 0x8fb0); + re_mdio_write(sc, 0x1d, 0xd218); + re_mdio_write(sc, 0x1d, 0xffae); + re_mdio_write(sc, 0x1d, 0xd2a4); + re_mdio_write(sc, 0x1d, 0xff9d); + re_mdio_write(sc, 0x1d, 0x3182); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e80); + re_mdio_write(sc, 0x1d, 0x4832); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c11); + re_mdio_write(sc, 0x1d, 0x4428); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5440); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5801); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c04); + re_mdio_write(sc, 0x1d, 0x41e8); + re_mdio_write(sc, 0x1d, 0xa4b3); + re_mdio_write(sc, 0x1d, 0x3197); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4f20); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6736); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x570f); + re_mdio_write(sc, 0x1d, 0x5fff); + re_mdio_write(sc, 0x1d, 0xaa03); + re_mdio_write(sc, 0x1d, 0x585b); + re_mdio_write(sc, 0x1d, 0x31a5); + re_mdio_write(sc, 0x1d, 0x5867); + re_mdio_write(sc, 0x1d, 0xbcf4); + re_mdio_write(sc, 0x1d, 0x300b); + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1c, 0x0200); + re_mdio_write(sc, 0x19, 0x7030); + re_mdio_write(sc, 0x1f, 0x0000); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x18, 0x8310); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x18, 0x0310); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + } else if (sc->re_type == MACFG_54 || sc->re_type == MACFG_55) { + Data_u32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); + Data_u32 &= 0xFFFF0000; + re_eri_write(sc, 0x1D0, 4, Data_u32, ERIAR_ExGMAC); + + if (sc->re_type == MACFG_55) { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x18, 0x0310); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x19, 0x7070); + re_mdio_write(sc, 0x1c, 0x0600); + re_mdio_write(sc, 0x1d, 0x9700); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x4007); + re_mdio_write(sc, 0x1d, 0x4400); + re_mdio_write(sc, 0x1d, 0x4800); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x673e); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x571f); + re_mdio_write(sc, 0x1d, 0x5ffb); + re_mdio_write(sc, 0x1d, 0xaa04); + re_mdio_write(sc, 0x1d, 0x5b58); + re_mdio_write(sc, 0x1d, 0x6100); + re_mdio_write(sc, 0x1d, 0x3016); + re_mdio_write(sc, 0x1d, 0x5b64); + re_mdio_write(sc, 0x1d, 0x6080); + re_mdio_write(sc, 0x1d, 0xa6fa); + re_mdio_write(sc, 0x1d, 0xdcdb); + re_mdio_write(sc, 0x1d, 0x0015); + re_mdio_write(sc, 0x1d, 0xb915); + re_mdio_write(sc, 0x1d, 0xb511); + re_mdio_write(sc, 0x1d, 0xd16b); + re_mdio_write(sc, 0x1d, 0x000f); + re_mdio_write(sc, 0x1d, 0xb40f); + re_mdio_write(sc, 0x1d, 0xd06b); + re_mdio_write(sc, 0x1d, 0x000d); + re_mdio_write(sc, 0x1d, 0xb206); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c00); + re_mdio_write(sc, 0x1d, 0x3010); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5801); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c04); + re_mdio_write(sc, 0x1d, 0x3016); + re_mdio_write(sc, 0x1d, 0x307e); + re_mdio_write(sc, 0x1d, 0x30f4); + re_mdio_write(sc, 0x1d, 0x319f); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c60); + re_mdio_write(sc, 0x1d, 0x6803); + re_mdio_write(sc, 0x1d, 0x7d00); + re_mdio_write(sc, 0x1d, 0x6900); + re_mdio_write(sc, 0x1d, 0x6520); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xaf03); + re_mdio_write(sc, 0x1d, 0x6115); + re_mdio_write(sc, 0x1d, 0x303a); + re_mdio_write(sc, 0x1d, 0x6097); + re_mdio_write(sc, 0x1d, 0x57e0); + re_mdio_write(sc, 0x1d, 0x580c); + re_mdio_write(sc, 0x1d, 0x588c); + re_mdio_write(sc, 0x1d, 0x5f80); + re_mdio_write(sc, 0x1d, 0x4827); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c10); + re_mdio_write(sc, 0x1d, 0x8400); + re_mdio_write(sc, 0x1d, 0x7c30); + re_mdio_write(sc, 0x1d, 0x6020); + re_mdio_write(sc, 0x1d, 0x48bf); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0xb802); + re_mdio_write(sc, 0x1d, 0x3053); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6808); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7c10); + re_mdio_write(sc, 0x1d, 0x6810); + re_mdio_write(sc, 0x1d, 0xd6cf); + re_mdio_write(sc, 0x1d, 0x0002); + re_mdio_write(sc, 0x1d, 0x80fe); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c80); + re_mdio_write(sc, 0x1d, 0x7c10); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7c23); + re_mdio_write(sc, 0x1d, 0x5c23); + re_mdio_write(sc, 0x1d, 0x481e); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c02); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x81ff); + re_mdio_write(sc, 0x1d, 0x30c1); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d00); + re_mdio_write(sc, 0x1d, 0x4832); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c10); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0xa4bd); + re_mdio_write(sc, 0x1d, 0xd9b3); + re_mdio_write(sc, 0x1d, 0x00fe); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d20); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6200); + re_mdio_write(sc, 0x1d, 0x3001); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4dc0); + re_mdio_write(sc, 0x1d, 0xd09d); + re_mdio_write(sc, 0x1d, 0x0002); + re_mdio_write(sc, 0x1d, 0xb4fe); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d80); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x6004); + re_mdio_write(sc, 0x1d, 0x6802); + re_mdio_write(sc, 0x1d, 0x6728); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x486c); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x9503); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6200); + re_mdio_write(sc, 0x1d, 0x571f); + re_mdio_write(sc, 0x1d, 0x5fbb); + re_mdio_write(sc, 0x1d, 0xaa05); + re_mdio_write(sc, 0x1d, 0x5b58); + re_mdio_write(sc, 0x1d, 0x7d80); + re_mdio_write(sc, 0x1d, 0x6100); + re_mdio_write(sc, 0x1d, 0x309a); + re_mdio_write(sc, 0x1d, 0x5b64); + re_mdio_write(sc, 0x1d, 0x7d80); + re_mdio_write(sc, 0x1d, 0x6080); + re_mdio_write(sc, 0x1d, 0xcdab); + re_mdio_write(sc, 0x1d, 0x0058); + re_mdio_write(sc, 0x1d, 0xcd8d); + re_mdio_write(sc, 0x1d, 0x0056); + re_mdio_write(sc, 0x1d, 0xd96b); + re_mdio_write(sc, 0x1d, 0x0054); + re_mdio_write(sc, 0x1d, 0xd0a0); + re_mdio_write(sc, 0x1d, 0x00d8); + re_mdio_write(sc, 0x1d, 0xcba0); + re_mdio_write(sc, 0x1d, 0x0003); + re_mdio_write(sc, 0x1d, 0x80ec); + re_mdio_write(sc, 0x1d, 0x30a7); + re_mdio_write(sc, 0x1d, 0x30b4); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ce0); + re_mdio_write(sc, 0x1d, 0x4832); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c08); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6008); + re_mdio_write(sc, 0x1d, 0x8300); + re_mdio_write(sc, 0x1d, 0xb902); + re_mdio_write(sc, 0x1d, 0x307e); + re_mdio_write(sc, 0x1d, 0x3068); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4da0); + re_mdio_write(sc, 0x1d, 0x6608); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x56a0); + re_mdio_write(sc, 0x1d, 0x590c); + re_mdio_write(sc, 0x1d, 0x5fa0); + re_mdio_write(sc, 0x1d, 0xcba4); + re_mdio_write(sc, 0x1d, 0x0004); + re_mdio_write(sc, 0x1d, 0xcd8d); + re_mdio_write(sc, 0x1d, 0x0002); + re_mdio_write(sc, 0x1d, 0x80fc); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ca0); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6408); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7d00); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0xb603); + re_mdio_write(sc, 0x1d, 0x7c10); + re_mdio_write(sc, 0x1d, 0x6010); + re_mdio_write(sc, 0x1d, 0x7d1f); + re_mdio_write(sc, 0x1d, 0x551f); + re_mdio_write(sc, 0x1d, 0x5fb3); + re_mdio_write(sc, 0x1d, 0xaa05); + re_mdio_write(sc, 0x1d, 0x7c80); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x5b58); + re_mdio_write(sc, 0x1d, 0x30d7); + re_mdio_write(sc, 0x1d, 0x7c80); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x5b64); + re_mdio_write(sc, 0x1d, 0x4827); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c10); + re_mdio_write(sc, 0x1d, 0x8400); + re_mdio_write(sc, 0x1d, 0x7c10); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4cc0); + re_mdio_write(sc, 0x1d, 0x7d00); + re_mdio_write(sc, 0x1d, 0x6400); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x5fbb); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c04); + re_mdio_write(sc, 0x1d, 0x8200); + re_mdio_write(sc, 0x1d, 0x7ce0); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x7d00); + re_mdio_write(sc, 0x1d, 0x6500); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x30a7); + re_mdio_write(sc, 0x1d, 0x3001); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e00); + re_mdio_write(sc, 0x1d, 0x4007); + re_mdio_write(sc, 0x1d, 0x4400); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x673e); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x570f); + re_mdio_write(sc, 0x1d, 0x5fff); + re_mdio_write(sc, 0x1d, 0xaa05); + re_mdio_write(sc, 0x1d, 0x585b); + re_mdio_write(sc, 0x1d, 0x7d80); + re_mdio_write(sc, 0x1d, 0x6100); + re_mdio_write(sc, 0x1d, 0x3107); + re_mdio_write(sc, 0x1d, 0x5867); + re_mdio_write(sc, 0x1d, 0x7d80); + re_mdio_write(sc, 0x1d, 0x6080); + re_mdio_write(sc, 0x1d, 0x9403); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6200); + re_mdio_write(sc, 0x1d, 0xcda3); + re_mdio_write(sc, 0x1d, 0x00e8); + re_mdio_write(sc, 0x1d, 0xcd85); + re_mdio_write(sc, 0x1d, 0x00e6); + re_mdio_write(sc, 0x1d, 0xd96b); + re_mdio_write(sc, 0x1d, 0x00e4); + re_mdio_write(sc, 0x1d, 0x96e4); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x673e); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e20); + re_mdio_write(sc, 0x1d, 0x96dd); + re_mdio_write(sc, 0x1d, 0x8b04); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x5008); + re_mdio_write(sc, 0x1d, 0xab03); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x5000); + re_mdio_write(sc, 0x1d, 0x6801); + re_mdio_write(sc, 0x1d, 0x677e); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xdb7c); + re_mdio_write(sc, 0x1d, 0x00ee); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7fe1); + re_mdio_write(sc, 0x1d, 0x4e40); + re_mdio_write(sc, 0x1d, 0x4837); + re_mdio_write(sc, 0x1d, 0x4418); + re_mdio_write(sc, 0x1d, 0x41c7); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e40); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x8fc2); + re_mdio_write(sc, 0x1d, 0xd2a0); + re_mdio_write(sc, 0x1d, 0x004b); + re_mdio_write(sc, 0x1d, 0x9204); + re_mdio_write(sc, 0x1d, 0xa042); + re_mdio_write(sc, 0x1d, 0x3132); + re_mdio_write(sc, 0x1d, 0x30f4); + re_mdio_write(sc, 0x1d, 0x7fe1); + re_mdio_write(sc, 0x1d, 0x4e60); + re_mdio_write(sc, 0x1d, 0x489c); + re_mdio_write(sc, 0x1d, 0x4628); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e60); + re_mdio_write(sc, 0x1d, 0x7e28); + re_mdio_write(sc, 0x1d, 0x4628); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c00); + re_mdio_write(sc, 0x1d, 0x41e8); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x8fa8); + re_mdio_write(sc, 0x1d, 0xb241); + re_mdio_write(sc, 0x1d, 0xa02a); + re_mdio_write(sc, 0x1d, 0x314c); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ea0); + re_mdio_write(sc, 0x1d, 0x7c02); + re_mdio_write(sc, 0x1d, 0x4402); + re_mdio_write(sc, 0x1d, 0x4448); + re_mdio_write(sc, 0x1d, 0x4894); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c03); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c07); + re_mdio_write(sc, 0x1d, 0x41ef); + re_mdio_write(sc, 0x1d, 0x41ff); + re_mdio_write(sc, 0x1d, 0x4891); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c07); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c17); + re_mdio_write(sc, 0x1d, 0x8400); + re_mdio_write(sc, 0x1d, 0x8ef8); + re_mdio_write(sc, 0x1d, 0x41c7); + re_mdio_write(sc, 0x1d, 0x8f8d); + re_mdio_write(sc, 0x1d, 0x92d5); + re_mdio_write(sc, 0x1d, 0xa10f); + re_mdio_write(sc, 0x1d, 0xd480); + re_mdio_write(sc, 0x1d, 0x0008); + re_mdio_write(sc, 0x1d, 0xd580); + re_mdio_write(sc, 0x1d, 0x00b8); + re_mdio_write(sc, 0x1d, 0xa202); + re_mdio_write(sc, 0x1d, 0x3167); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x4404); + re_mdio_write(sc, 0x1d, 0x3167); + re_mdio_write(sc, 0x1d, 0xd484); + re_mdio_write(sc, 0x1d, 0x00f3); + re_mdio_write(sc, 0x1d, 0xd484); + re_mdio_write(sc, 0x1d, 0x00f1); + re_mdio_write(sc, 0x1d, 0x30f4); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ee0); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x4488); + re_mdio_write(sc, 0x1d, 0x41cf); + re_mdio_write(sc, 0x1d, 0x30f4); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ec0); + re_mdio_write(sc, 0x1d, 0x48f3); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c09); + re_mdio_write(sc, 0x1d, 0x4508); + re_mdio_write(sc, 0x1d, 0x41c7); + re_mdio_write(sc, 0x1d, 0x8fb0); + re_mdio_write(sc, 0x1d, 0xd218); + re_mdio_write(sc, 0x1d, 0x00ae); + re_mdio_write(sc, 0x1d, 0xd2a4); + re_mdio_write(sc, 0x1d, 0x009e); + re_mdio_write(sc, 0x1d, 0x3188); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e80); + re_mdio_write(sc, 0x1d, 0x4832); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c11); + re_mdio_write(sc, 0x1d, 0x4428); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5440); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5801); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c04); + re_mdio_write(sc, 0x1d, 0x41e8); + re_mdio_write(sc, 0x1d, 0xa4b3); + re_mdio_write(sc, 0x1d, 0x319d); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4f20); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x673e); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x570f); + re_mdio_write(sc, 0x1d, 0x5fff); + re_mdio_write(sc, 0x1d, 0xaa04); + re_mdio_write(sc, 0x1d, 0x585b); + re_mdio_write(sc, 0x1d, 0x6100); + re_mdio_write(sc, 0x1d, 0x31ad); + re_mdio_write(sc, 0x1d, 0x5867); + re_mdio_write(sc, 0x1d, 0x6080); + re_mdio_write(sc, 0x1d, 0xbcf2); + re_mdio_write(sc, 0x1d, 0x3001); + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1c, 0x0200); + re_mdio_write(sc, 0x19, 0x7030); + re_mdio_write(sc, 0x1f, 0x0000); + } + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x11, 0x83BA); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_clear_eth_phy_bit(sc, 0x1A, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x18, 0x8310); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x18, 0x0310); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0003); + re_mdio_write(sc, 0x0E, 0x0015); + re_mdio_write(sc, 0x0D, 0x4003); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + } else if (sc->re_type == MACFG_56) { + re_mdio_write(sc, 0x1F, 0x0A46); + PhyRegValue = re_mdio_read(sc, 0x10); + TmpUshort = (PhyRegValue & BIT_8) ? 0 : BIT_15; + + re_mdio_write(sc, 0x1F, 0x0BCC); + re_clear_eth_phy_bit(sc, 0x12, BIT_15); + re_set_eth_phy_bit(sc, 0x12, TmpUshort); + + + re_mdio_write(sc, 0x1F, 0x0A46); + PhyRegValue = re_mdio_read(sc, 0x13); + TmpUshort = (PhyRegValue & BIT_8) ? BIT_1 : 0; + + re_mdio_write(sc, 0x1F, 0x0C41); + re_clear_eth_phy_bit(sc, 0x15, BIT_1); + re_set_eth_phy_bit(sc, 0x15, TmpUshort); + + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, (BIT_3 | BIT_2)); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0BCC); + re_clear_eth_phy_bit(sc, 0x14, BIT_8); + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_7); + re_set_eth_phy_bit(sc, 0x11, BIT_6); + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8084); + re_clear_eth_phy_bit(sc, 0x14, (BIT_14 | BIT_13)); + re_set_eth_phy_bit(sc, 0x10, BIT_12); + re_set_eth_phy_bit(sc, 0x10, BIT_1); + re_set_eth_phy_bit(sc, 0x10, BIT_0); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0A4B); + re_set_eth_phy_bit(sc, 0x11, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8012); + re_set_eth_phy_bit(sc, 0x14, BIT_15); + re_mdio_write(sc, 0x1F, 0x0000); + + + + re_mdio_write(sc, 0x1F, 0x0C42); + re_clear_set_eth_phy_bit(sc, + 0x11, + BIT_13, + BIT_14 + ); + re_mdio_write(sc, 0x1F, 0x0000); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x809A); + re_mdio_write(sc, 0x14, 0x8022); + re_mdio_write(sc, 0x13, 0x80A0); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x1000 + ); + re_mdio_write(sc, 0x13, 0x8088); + re_mdio_write(sc, 0x14, 0x9222); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8011); + re_clear_eth_phy_bit(sc, 0x14, BIT_14); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + } else if (sc->re_type == MACFG_58) { + re_mdio_write(sc, 0x1F, 0x0BCC); + re_clear_eth_phy_bit(sc, 0x14, BIT_8); + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_7); + re_set_eth_phy_bit(sc, 0x11, BIT_6); + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8084); + re_clear_eth_phy_bit(sc, 0x14, (BIT_14 | BIT_13)); + re_set_eth_phy_bit(sc, 0x10, BIT_12); + re_set_eth_phy_bit(sc, 0x10, BIT_1); + re_set_eth_phy_bit(sc, 0x10, BIT_0); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8012); + re_set_eth_phy_bit(sc, 0x14, BIT_15); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0C42); + re_clear_set_eth_phy_bit(sc, + 0x11, + BIT_13, + BIT_14 + ); + re_mdio_write(sc, 0x1F, 0x0000); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8011); + re_clear_eth_phy_bit(sc, 0x14, BIT_14); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + } else if (sc->re_type == MACFG_59) { + re_mdio_write(sc, 0x1F, 0x0BCC); + re_clear_eth_phy_bit(sc, 0x14, BIT_8); + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_7); + re_set_eth_phy_bit(sc, 0x11, BIT_6); + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8084); + re_clear_eth_phy_bit(sc, 0x14, (BIT_14 | BIT_13)); + re_set_eth_phy_bit(sc, 0x10, BIT_12); + re_set_eth_phy_bit(sc, 0x10, BIT_1); + re_set_eth_phy_bit(sc, 0x10, BIT_0); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8012); + re_set_eth_phy_bit(sc, 0x14, BIT_15); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0BCE); + re_mdio_write(sc, 0x12, 0x8860); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x80F3); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8B00 + ); + re_mdio_write(sc, 0x13, 0x80F0); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x3A00 + ); + re_mdio_write(sc, 0x13, 0x80EF); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x0500 + ); + re_mdio_write(sc, 0x13, 0x80F6); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6E00 + ); + re_mdio_write(sc, 0x13, 0x80EC); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6800 + ); + re_mdio_write(sc, 0x13, 0x80ED); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x7C00 + ); + re_mdio_write(sc, 0x13, 0x80F2); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xF400 + ); + re_mdio_write(sc, 0x13, 0x80F4); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8500 + ); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8110); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xA800 + ); + re_mdio_write(sc, 0x13, 0x810F); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x1D00 + ); + re_mdio_write(sc, 0x13, 0x8111); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xF500 + ); + re_mdio_write(sc, 0x13, 0x8113); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6100 + ); + re_mdio_write(sc, 0x13, 0x8115); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x9200 + ); + re_mdio_write(sc, 0x13, 0x810E); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x0400 + ); + re_mdio_write(sc, 0x13, 0x810C); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x7C00 + ); + re_mdio_write(sc, 0x13, 0x810B); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x5A00 + ); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x80D1); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xFF00 + ); + re_mdio_write(sc, 0x13, 0x80CD); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x9E00 + ); + re_mdio_write(sc, 0x13, 0x80D3); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x0E00 + ); + re_mdio_write(sc, 0x13, 0x80D5); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xCA00 + ); + re_mdio_write(sc, 0x13, 0x80D7); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8400 + ); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8011); + re_clear_eth_phy_bit(sc, 0x14, BIT_14); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + } else if (sc->re_type == MACFG_60) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8012); + re_set_eth_phy_bit(sc, 0x14, BIT_15); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0BCE); + re_mdio_write(sc, 0x12, 0x8860); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x80F3); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8B00 + ); + re_mdio_write(sc, 0x13, 0x80F0); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x3A00 + ); + re_mdio_write(sc, 0x13, 0x80EF); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x0500 + ); + re_mdio_write(sc, 0x13, 0x80F6); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6E00 + ); + re_mdio_write(sc, 0x13, 0x80EC); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6800 + ); + re_mdio_write(sc, 0x13, 0x80ED); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x7C00 + ); + re_mdio_write(sc, 0x13, 0x80F2); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xF400 + ); + re_mdio_write(sc, 0x13, 0x80F4); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8500 + ); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8110); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xA800 + ); + re_mdio_write(sc, 0x13, 0x810F); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x1D00 + ); + re_mdio_write(sc, 0x13, 0x8111); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xF500 + ); + re_mdio_write(sc, 0x13, 0x8113); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6100 + ); + re_mdio_write(sc, 0x13, 0x8115); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x9200 + ); + re_mdio_write(sc, 0x13, 0x810E); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x0400 + ); + re_mdio_write(sc, 0x13, 0x810C); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x7C00 + ); + re_mdio_write(sc, 0x13, 0x810B); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x5A00 + ); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x80D1); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xFF00 + ); + re_mdio_write(sc, 0x13, 0x80CD); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x9E00 + ); + re_mdio_write(sc, 0x13, 0x80D3); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x0E00 + ); + re_mdio_write(sc, 0x13, 0x80D5); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xCA00 + ); + re_mdio_write(sc, 0x13, 0x80D7); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8400 + ); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8011); + re_clear_eth_phy_bit(sc, 0x14, BIT_14); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + } else if (sc->re_type == MACFG_61) { + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, (BIT_3 | BIT_2)); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0BCC); + re_clear_eth_phy_bit(sc, 0x14, BIT_8); + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_7); + re_set_eth_phy_bit(sc, 0x11, BIT_6); + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8084); + re_clear_eth_phy_bit(sc, 0x14, (BIT_14 | BIT_13)); + re_set_eth_phy_bit(sc, 0x10, BIT_12); + re_set_eth_phy_bit(sc, 0x10, BIT_1); + re_set_eth_phy_bit(sc, 0x10, BIT_0); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A4B); + re_set_eth_phy_bit(sc, 0x11, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8012); + re_set_eth_phy_bit(sc, 0x14, BIT_15); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0C42); + re_clear_set_eth_phy_bit(sc, + 0x11, + BIT_13, + BIT_14 + ); + re_mdio_write(sc, 0x1F, 0x0000); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8011); + re_clear_eth_phy_bit(sc, 0x14, BIT_14); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + } else if (sc->re_type == MACFG_62 || sc->re_type == MACFG_67) { + re_mdio_write(sc, 0x1F, 0x0BCC); + re_clear_eth_phy_bit(sc, 0x14, BIT_8); + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_7); + re_set_eth_phy_bit(sc, 0x11, BIT_6); + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8084); + re_clear_eth_phy_bit(sc, 0x14, (BIT_14 | BIT_13)); + re_set_eth_phy_bit(sc, 0x10, BIT_12); + re_set_eth_phy_bit(sc, 0x10, BIT_1); + re_set_eth_phy_bit(sc, 0x10, BIT_0); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8012); + re_set_eth_phy_bit(sc, 0x14, BIT_15); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0C42); + re_clear_set_eth_phy_bit(sc, + 0x11, + BIT_13, + BIT_14 + ); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x80F3); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8B00 + ); + re_mdio_write(sc, 0x13, 0x80F0); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x3A00 + ); + re_mdio_write(sc, 0x13, 0x80EF); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x0500 + ); + re_mdio_write(sc, 0x13, 0x80F6); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6E00 + ); + re_mdio_write(sc, 0x13, 0x80EC); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6800 + ); + re_mdio_write(sc, 0x13, 0x80ED); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x7C00 + ); + re_mdio_write(sc, 0x13, 0x80F2); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xF400 + ); + re_mdio_write(sc, 0x13, 0x80F4); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8500 + ); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8110); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xA800 + ); + re_mdio_write(sc, 0x13, 0x810F); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x1D00 + ); + re_mdio_write(sc, 0x13, 0x8111); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xF500 + ); + re_mdio_write(sc, 0x13, 0x8113); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6100 + ); + re_mdio_write(sc, 0x13, 0x8115); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x9200 + ); + re_mdio_write(sc, 0x13, 0x810E); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x0400 + ); + re_mdio_write(sc, 0x13, 0x810C); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x7C00 + ); + re_mdio_write(sc, 0x13, 0x810B); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x5A00 + ); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x80D1); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xFF00 + ); + re_mdio_write(sc, 0x13, 0x80CD); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x9E00 + ); + re_mdio_write(sc, 0x13, 0x80D3); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x0E00 + ); + re_mdio_write(sc, 0x13, 0x80D5); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xCA00 + ); + re_mdio_write(sc, 0x13, 0x80D7); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8400 + ); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8011); + re_clear_eth_phy_bit(sc, 0x14, BIT_14); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + } else if (sc->re_type == MACFG_63) { + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x10, 0x0008); + re_mdio_write(sc, 0x0d, 0x006c); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x17, 0x0cc0); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x0B, 0xA4D8); + re_mdio_write(sc, 0x09, 0x281C); + re_mdio_write(sc, 0x07, 0x2883); + re_mdio_write(sc, 0x0A, 0x6B35); + re_mdio_write(sc, 0x1D, 0x3DA4); + re_mdio_write(sc, 0x1C, 0xEFFD); + re_mdio_write(sc, 0x14, 0x7F52); + re_mdio_write(sc, 0x18, 0x7FC6); + re_mdio_write(sc, 0x08, 0x0601); + re_mdio_write(sc, 0x06, 0x4063); + re_mdio_write(sc, 0x10, 0xF074); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x13, 0x0789); + re_mdio_write(sc, 0x12, 0xF4BD); + re_mdio_write(sc, 0x1A, 0x04FD); + re_mdio_write(sc, 0x14, 0x84B0); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x01, 0x0340); + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x04, 0x4000); + re_mdio_write(sc, 0x03, 0x1D21); + re_mdio_write(sc, 0x02, 0x0C32); + re_mdio_write(sc, 0x01, 0x0200); + re_mdio_write(sc, 0x00, 0x5554); + re_mdio_write(sc, 0x04, 0x4800); + re_mdio_write(sc, 0x04, 0x4000); + re_mdio_write(sc, 0x04, 0xF000); + re_mdio_write(sc, 0x03, 0xDF01); + re_mdio_write(sc, 0x02, 0xDF20); + re_mdio_write(sc, 0x01, 0x101A); + re_mdio_write(sc, 0x00, 0xA0FF); + re_mdio_write(sc, 0x04, 0xF800); + re_mdio_write(sc, 0x04, 0xF000); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0023); + re_mdio_write(sc, 0x16, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + PhyRegValue = re_mdio_read(sc, 0x0D); + PhyRegValue |= (BIT_5); + re_mdio_write(sc, 0x0D, PhyRegValue); + + re_mdio_write(sc, 0x1F, 0x0002); + PhyRegValue = re_mdio_read(sc, 0x0C); + PhyRegValue |= (BIT_10); + re_mdio_write(sc, 0x0C, PhyRegValue); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_64) { + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x17, 0x0cc0); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x01, 0x0340); + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x04, 0x4000); + re_mdio_write(sc, 0x03, 0x1D21); + re_mdio_write(sc, 0x02, 0x0C32); + re_mdio_write(sc, 0x01, 0x0200); + re_mdio_write(sc, 0x00, 0x5554); + re_mdio_write(sc, 0x04, 0x4800); + re_mdio_write(sc, 0x04, 0x4000); + re_mdio_write(sc, 0x04, 0xF000); + re_mdio_write(sc, 0x03, 0xDF01); + re_mdio_write(sc, 0x02, 0xDF20); + re_mdio_write(sc, 0x01, 0x101A); + re_mdio_write(sc, 0x00, 0xA0FF); + re_mdio_write(sc, 0x04, 0xF800); + re_mdio_write(sc, 0x04, 0xF000); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0023); + re_mdio_write(sc, 0x16, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + PhyRegValue = re_mdio_read(sc, 0x0D); + PhyRegValue |= (BIT_5); + re_mdio_write(sc, 0x0D, PhyRegValue); + + re_mdio_write(sc, 0x1F, 0x0002); + PhyRegValue = re_mdio_read(sc, 0x0C); + PhyRegValue |= (BIT_10); + re_mdio_write(sc, 0x0C, PhyRegValue); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_65) { + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x17, 0x0cc0); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + PhyRegValue = re_mdio_read(sc, 0x0D); + PhyRegValue |= (BIT_5); + re_mdio_write(sc, 0x0D, PhyRegValue); + + re_mdio_write(sc, 0x1F, 0x0002); + PhyRegValue = re_mdio_read(sc, 0x0C); + PhyRegValue |= (BIT_10); + re_mdio_write(sc, 0x0C, PhyRegValue); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x002C); + re_mdio_write(sc, 0x15, 0x035D); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x01, 0x0300); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_66) { + re_mdio_write(sc, 0x1F, 0x0000); + PhyRegValue = re_mdio_read(sc, 0x0D); + PhyRegValue |= (BIT_5); + re_mdio_write(sc, 0x0D, PhyRegValue); + + re_mdio_write(sc, 0x1F, 0x0002); + PhyRegValue = re_mdio_read(sc, 0x0C); + PhyRegValue |= (BIT_10); + re_mdio_write(sc, 0x0C, PhyRegValue); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_68) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x809b); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xF800, + 0x8000 + ); + re_mdio_write(sc, 0x13, 0x80A2); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8000 + ); + re_mdio_write(sc, 0x13, 0x80A4); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8500 + ); + re_mdio_write(sc, 0x13, 0x809C); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xbd00 + ); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x80AD); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xF800, + 0x7000 + ); + re_mdio_write(sc, 0x13, 0x80B4); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x5000 + ); + re_mdio_write(sc, 0x13, 0x80AC); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x4000 + ); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x808E); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x1200 + ); + re_mdio_write(sc, 0x13, 0x8090); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xE500 + ); + re_mdio_write(sc, 0x13, 0x8092); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x9F00 + ); + re_mdio_write(sc, 0x1F, 0x0000); + + dout_tapbin = 0x0000; + re_mdio_write(sc, 0x1F, 0x0A46); + TmpUshort = re_mdio_read(sc, 0x13); + TmpUshort &= (BIT_1|BIT_0); + TmpUshort <<= 2; + dout_tapbin |= TmpUshort; + + TmpUshort = re_mdio_read(sc, 0x12); + TmpUshort &= (BIT_15|BIT_14); + TmpUshort >>= 14; + dout_tapbin |= TmpUshort; + + dout_tapbin = ~(dout_tapbin^BIT_3); + dout_tapbin <<= 12; + dout_tapbin &= 0xF000; + + re_mdio_write(sc, 0x1F, 0x0A43); + + re_mdio_write(sc, 0x13, 0x827A); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_15|BIT_14|BIT_13|BIT_12, + dout_tapbin + ); + + + re_mdio_write(sc, 0x13, 0x827B); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_15|BIT_14|BIT_13|BIT_12, + dout_tapbin + ); + + + re_mdio_write(sc, 0x13, 0x827C); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_15|BIT_14|BIT_13|BIT_12, + dout_tapbin + ); + + + re_mdio_write(sc, 0x13, 0x827D); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_15|BIT_14|BIT_13|BIT_12, + dout_tapbin + ); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8011); + re_set_eth_phy_bit(sc, 0x14, BIT_11); + re_mdio_write(sc, 0x1F, 0x0A42); + re_set_eth_phy_bit(sc, 0x16, BIT_1); + + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_11); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0BCA); + re_clear_set_eth_phy_bit(sc, + 0x17, + (BIT_13 | BIT_12), + BIT_14 + ); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x803F); + re_clear_eth_phy_bit(sc, 0x14, (BIT_13 | BIT_12)); + re_mdio_write(sc, 0x13, 0x8047); + re_clear_eth_phy_bit(sc, 0x14, (BIT_13 | BIT_12)); + re_mdio_write(sc, 0x13, 0x804F); + re_clear_eth_phy_bit(sc, 0x14, (BIT_13 | BIT_12)); + re_mdio_write(sc, 0x13, 0x8057); + re_clear_eth_phy_bit(sc, 0x14, (BIT_13 | BIT_12)); + re_mdio_write(sc, 0x13, 0x805F); + re_clear_eth_phy_bit(sc, 0x14, (BIT_13 | BIT_12)); + re_mdio_write(sc, 0x13, 0x8067); + re_clear_eth_phy_bit(sc, 0x14, (BIT_13 | BIT_12)); + re_mdio_write(sc, 0x13, 0x806F); + re_clear_eth_phy_bit(sc, 0x14, (BIT_13 | BIT_12)); + re_mdio_write(sc, 0x1F, 0x0000); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8045); + re_mdio_write(sc, 0x14, 0x2444); + re_mdio_write(sc, 0x13, 0x804d); + re_mdio_write(sc, 0x14, 0x2444); + re_mdio_write(sc, 0x13, 0x805d); + re_mdio_write(sc, 0x14, 0x2444); + re_mdio_write(sc, 0x13, 0x8011); + re_set_eth_phy_bit(sc, 0x14, BIT_15); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + } else if (sc->re_type == MACFG_69 || sc->re_type == MACFG_76) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x808A); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0, + 0x0A); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8011); + re_set_eth_phy_bit(sc, 0x14, BIT_11); + re_mdio_write(sc, 0x1F, 0x0A42); + re_set_eth_phy_bit(sc, 0x16, BIT_1); + + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_11); + re_mdio_write(sc, 0x1F, 0x0000); + + if (sc->RequireAdcBiasPatch) { + re_mdio_write(sc, 0x1F, 0x0BCF); + re_mdio_write(sc, 0x16, sc->AdcBiasPatchIoffset); + re_mdio_write(sc, 0x1F, 0x0000); + } + + { + u_int16_t rlen; + + re_mdio_write(sc, 0x1F, 0x0BCD); + PhyRegValue = re_mdio_read(sc, 0x16); + PhyRegValue &= 0x000F; + + if (PhyRegValue > 3) { + rlen = PhyRegValue - 3; + } else { + rlen = 0; + } + + PhyRegValue = rlen | (rlen<<4) | (rlen<<8) | (rlen<<12); + + re_mdio_write(sc, 0x1F, 0x0BCD); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1F, 0x0000); + } + + { + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x85FE); + re_clear_set_eth_phy_bit( + sc, + 0x14, + BIT_15|BIT_14|BIT_13|BIT_12|BIT_11|BIT_10|BIT_8, + BIT_9); + re_mdio_write(sc, 0x13, 0x85FF); + re_clear_set_eth_phy_bit( + sc, + 0x14, + BIT_15|BIT_14|BIT_13|BIT_12, + BIT_11|BIT_10|BIT_9|BIT_8); + re_mdio_write(sc, 0x13, 0x814B); + re_clear_set_eth_phy_bit( + sc, + 0x14, + BIT_15|BIT_14|BIT_13|BIT_11|BIT_10|BIT_9|BIT_8, + BIT_12); + } + + + re_mdio_write(sc, 0x1F, 0x0C41); + re_clear_eth_phy_bit(sc, 0x15, BIT_1); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_0); + re_mdio_write(sc, 0x1F, 0x0000); + + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8045); + re_mdio_write(sc, 0x14, 0x2444); + re_mdio_write(sc, 0x13, 0x804d); + re_mdio_write(sc, 0x14, 0x2444); + re_mdio_write(sc, 0x13, 0x805d); + re_mdio_write(sc, 0x14, 0x2444); + re_mdio_write(sc, 0x13, 0x8011); + re_set_eth_phy_bit(sc, 0x14, BIT_15); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + } else if (sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || + sc->re_type == MACFG_72 || sc->re_type == MACFG_73) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x808E); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x4800); + re_mdio_write(sc, 0x13, 0x8090); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xCC00); + re_mdio_write(sc, 0x13, 0x8092); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xB000); + re_mdio_write(sc, 0x13, 0x8088); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6000); + re_mdio_write(sc, 0x13, 0x808B); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_13|BIT_12|BIT_11|BIT_10|BIT_9|BIT_8, + 0x0B00); + re_mdio_write(sc, 0x13, 0x808D); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_12|BIT_11|BIT_10|BIT_9|BIT_8, + 0x0600); + re_mdio_write(sc, 0x13, 0x808C); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xB000); + + re_mdio_write(sc, 0x13, 0x80A0); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x2800); + re_mdio_write(sc, 0x13, 0x80A2); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x5000); + re_mdio_write(sc, 0x13, 0x809B); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_15|BIT_14|BIT_13|BIT_12|BIT_11, + BIT_15|BIT_13|BIT_12); + re_mdio_write(sc, 0x13, 0x809A); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x4B00); + re_mdio_write(sc, 0x13, 0x809D); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_13|BIT_12|BIT_11|BIT_10|BIT_9|BIT_8, + 0x0800); + re_mdio_write(sc, 0x13, 0x80A1); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x7000); + re_mdio_write(sc, 0x13, 0x809F); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_12|BIT_11|BIT_10|BIT_9|BIT_8, + 0x0300); + re_mdio_write(sc, 0x13, 0x809E); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8800); + + re_mdio_write(sc, 0x13, 0x80B2); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x2200); + re_mdio_write(sc, 0x13, 0x80AD); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_15|BIT_14|BIT_13|BIT_12|BIT_11, + BIT_15|BIT_12|BIT_11); + re_mdio_write(sc, 0x13, 0x80AF); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_13|BIT_12|BIT_11|BIT_10|BIT_9|BIT_8, + 0x0800); + re_mdio_write(sc, 0x13, 0x80B3); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6F00); + re_mdio_write(sc, 0x13, 0x80B1); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_12|BIT_11|BIT_10|BIT_9|BIT_8, + 0x0300); + re_mdio_write(sc, 0x13, 0x80B0); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x9300); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8011); + re_clear_eth_phy_bit(sc, 0x14, BIT_11); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_11); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8016); + re_set_eth_phy_bit(sc, 0x14, BIT_10); + re_mdio_write(sc, 0x1F, 0x0000); + + if (phy_power_saving == 1 && !HW_SUPP_SERDES_PHY(sc)) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8045); + re_mdio_write(sc, 0x14, 0x2444); + re_mdio_write(sc, 0x13, 0x804d); + re_mdio_write(sc, 0x14, 0x2444); + re_mdio_write(sc, 0x13, 0x805d); + re_mdio_write(sc, 0x14, 0x2444); + re_mdio_write(sc, 0x13, 0x8011); + re_set_eth_phy_bit(sc, 0x14, BIT_15); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + } else if (sc->re_type == MACFG_74) { + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_11); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0A4C); + re_clear_eth_phy_bit(sc, 0x15, (BIT_14 | BIT_13)); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x81B9); + re_mdio_write(sc, 0x14, 0x2000); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x81D4); + re_clear_set_eth_ocp_phy_bit(sc, + 0x14, + 0xFF00, + 0x6600); + re_mdio_write(sc, 0x13, 0x81CB); + re_clear_set_eth_ocp_phy_bit(sc, + 0x14, + 0xFF00, + 0x3500); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0A80); + re_clear_set_eth_ocp_phy_bit(sc, + 0x16, + 0x000F, + 0x0005); + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8016); + re_set_eth_phy_bit(sc, 0x14, BIT_13); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x811E); + re_mdio_write(sc, 0x14, 0xDECA); + + + re_mdio_write(sc, 0x13, 0x811C); + re_mdio_write(sc, 0x14, 0x8008); + re_mdio_write(sc, 0x13, 0x8118); + re_mdio_write(sc, 0x14, 0xF8B4); + re_mdio_write(sc, 0x13, 0x811A); + re_mdio_write(sc, 0x14, 0x1A04); + + + re_mdio_write(sc, 0x13, 0x8134); + re_mdio_write(sc, 0x14, 0xDECA); + re_mdio_write(sc, 0x13, 0x8132); + re_mdio_write(sc, 0x14, 0xA008); + re_mdio_write(sc, 0x13, 0x812E); + re_mdio_write(sc, 0x14, 0x00B5); + re_mdio_write(sc, 0x13, 0x8130); + re_mdio_write(sc, 0x14, 0x1A04); + + + re_mdio_write(sc, 0x13, 0x8112); + re_clear_set_eth_ocp_phy_bit(sc, + 0x14, + 0xFF00, + 0x7300); + re_mdio_write(sc, 0x13, 0x8106); + re_mdio_write(sc, 0x14, 0xA209); + re_mdio_write(sc, 0x13, 0x8108); + re_mdio_write(sc, 0x14, 0x13B0); + re_mdio_write(sc, 0x13, 0x8103); + re_clear_set_eth_ocp_phy_bit(sc, + 0x14, + 0xF800, + 0xB800); + re_mdio_write(sc, 0x13, 0x8105); + re_clear_set_eth_ocp_phy_bit(sc, + 0x14, + 0xFF00, + 0x0A00); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x87EB); + re_mdio_write(sc, 0x14, 0x0018); + re_mdio_write(sc, 0x13, 0x87EB); + re_mdio_write(sc, 0x14, 0x0018); + re_mdio_write(sc, 0x13, 0x87ED); + re_mdio_write(sc, 0x14, 0x0733); + re_mdio_write(sc, 0x13, 0x87EF); + re_mdio_write(sc, 0x14, 0x08DC); + re_mdio_write(sc, 0x13, 0x87F1); + re_mdio_write(sc, 0x14, 0x08DF); + re_mdio_write(sc, 0x13, 0x87F3); + re_mdio_write(sc, 0x14, 0x0C79); + re_mdio_write(sc, 0x13, 0x87F5); + re_mdio_write(sc, 0x14, 0x0D93); + re_mdio_write(sc, 0x13, 0x87F9); + re_mdio_write(sc, 0x14, 0x0010); + re_mdio_write(sc, 0x13, 0x87FB); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x13, 0x8015); + re_clear_set_eth_ocp_phy_bit(sc, + 0x14, + 0x7000, + 0x7000); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8111); + re_clear_set_eth_ocp_phy_bit(sc, + 0x14, + 0xFF00, + 0x7C00); + re_mdio_write(sc, 0x1F, 0x0000); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } + } else if (sc->re_type == MACFG_75) { + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_11); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0C41); + re_clear_eth_phy_bit(sc, 0x15, BIT_1); + re_mdio_write(sc, 0x1F, 0x0000); + + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } + } else if (sc->re_type == MACFG_80) { + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD40, + 0x03FF, + 0x84 + ); + + re_set_eth_ocp_phy_bit(sc, 0xAD4E, BIT_4); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD16, + 0x03FF, + 0x0006 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD32, + 0x003F, + 0x0006 + ); + re_clear_eth_ocp_phy_bit(sc, 0xAC08, BIT_12); + re_clear_eth_ocp_phy_bit(sc, 0xAC08, BIT_8); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAC8A, + BIT_15|BIT_14|BIT_13|BIT_12, + BIT_14|BIT_13|BIT_12 + ); + re_set_eth_ocp_phy_bit(sc, 0xAD18, BIT_10); + re_set_eth_ocp_phy_bit(sc, 0xAD1A, 0x3FF); + re_set_eth_ocp_phy_bit(sc, 0xAD1C, 0x3FF); + + + re_real_ocp_phy_write(sc, 0xA436, 0x80EA); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xC400 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x80EB); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0x0700, + 0x0300 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x80F8); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x1C00 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x80F1); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x3000 + ); + + + re_real_ocp_phy_write(sc, 0xA436, 0x80FE); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xA500 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x8102); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x5000 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x8105); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x3300 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x8100); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x7000 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x8104); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xF000 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x8106); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x6500 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x80DC); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xED00 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x80DF); + re_set_eth_ocp_phy_bit(sc, 0xA438, BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x80E1); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_8); + + + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF06, + 0x003F, + 0x38 + ); + + + re_real_ocp_phy_write(sc, 0xA436, 0x819F); + re_real_ocp_phy_write(sc, 0xA438, 0xD0B6); + + + re_real_ocp_phy_write(sc, 0xBC34, 0x5555); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF0A, + BIT_11|BIT_10|BIT_9, + BIT_11|BIT_9 + ); + + + re_clear_eth_ocp_phy_bit(sc, 0xA5C0, BIT_10); + + + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_81) { + re_set_eth_ocp_phy_bit(sc, 0xAD4E, BIT_4); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD16, + 0x03FF, + 0x03FF + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD32, + 0x003F, + 0x0006 + ); + re_clear_eth_ocp_phy_bit(sc, 0xAC08, BIT_12); + re_clear_eth_ocp_phy_bit(sc, 0xAC08, BIT_8); + re_clear_set_eth_ocp_phy_bit(sc, + 0xACC0, + BIT_1|BIT_0, + BIT_1 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD40, + BIT_7|BIT_6|BIT_5, + BIT_6 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD40, + BIT_2|BIT_1|BIT_0, + BIT_2 + ); + re_clear_eth_ocp_phy_bit(sc, 0xAC14, BIT_7); + re_clear_eth_ocp_phy_bit(sc, 0xAC80, BIT_9|BIT_8); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAC5E, + BIT_2|BIT_1|BIT_0, + BIT_1 + ); + re_real_ocp_phy_write(sc, 0xAD4C, 0x00A8); + re_real_ocp_phy_write(sc, 0xAC5C, 0x01FF); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAC8A, + BIT_7|BIT_6|BIT_5|BIT_4, + BIT_5|BIT_4 + ); + re_real_ocp_phy_write(sc, 0xB87C, 0x8157); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0500 + ); + re_real_ocp_phy_write(sc, 0xB87C, 0x8159); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0700 + ); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x80A2); + re_real_ocp_phy_write(sc, 0xB87E, 0x0153); + re_real_ocp_phy_write(sc, 0xB87C, 0x809C); + re_real_ocp_phy_write(sc, 0xB87E, 0x0153); + + + re_real_ocp_phy_write(sc, 0xA436, 0x81B3); + re_real_ocp_phy_write(sc, 0xA438, 0x0043); + re_real_ocp_phy_write(sc, 0xA438, 0x00A7); + re_real_ocp_phy_write(sc, 0xA438, 0x00D6); + re_real_ocp_phy_write(sc, 0xA438, 0x00EC); + re_real_ocp_phy_write(sc, 0xA438, 0x00F6); + re_real_ocp_phy_write(sc, 0xA438, 0x00FB); + re_real_ocp_phy_write(sc, 0xA438, 0x00FD); + re_real_ocp_phy_write(sc, 0xA438, 0x00FF); + re_real_ocp_phy_write(sc, 0xA438, 0x00BB); + re_real_ocp_phy_write(sc, 0xA438, 0x0058); + re_real_ocp_phy_write(sc, 0xA438, 0x0029); + re_real_ocp_phy_write(sc, 0xA438, 0x0013); + re_real_ocp_phy_write(sc, 0xA438, 0x0009); + re_real_ocp_phy_write(sc, 0xA438, 0x0004); + re_real_ocp_phy_write(sc, 0xA438, 0x0002); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8257); + re_real_ocp_phy_write(sc, 0xA438, 0x020F); + + + re_real_ocp_phy_write(sc, 0xA436, 0x80EA); + re_real_ocp_phy_write(sc, 0xA438, 0x7843); + + + re_set_phy_mcu_patch_request(sc); + + re_clear_eth_ocp_phy_bit(sc, 0xB896, BIT_0); + re_clear_eth_ocp_phy_bit(sc, 0xB892, 0xFF00); + + + re_real_ocp_phy_write(sc, 0xB88E, 0xC091); + re_real_ocp_phy_write(sc, 0xB890, 0x6E12); + re_real_ocp_phy_write(sc, 0xB88E, 0xC092); + re_real_ocp_phy_write(sc, 0xB890, 0x1214); + re_real_ocp_phy_write(sc, 0xB88E, 0xC094); + re_real_ocp_phy_write(sc, 0xB890, 0x1516); + re_real_ocp_phy_write(sc, 0xB88E, 0xC096); + re_real_ocp_phy_write(sc, 0xB890, 0x171B); + re_real_ocp_phy_write(sc, 0xB88E, 0xC098); + re_real_ocp_phy_write(sc, 0xB890, 0x1B1C); + re_real_ocp_phy_write(sc, 0xB88E, 0xC09A); + re_real_ocp_phy_write(sc, 0xB890, 0x1F1F); + re_real_ocp_phy_write(sc, 0xB88E, 0xC09C); + re_real_ocp_phy_write(sc, 0xB890, 0x2021); + re_real_ocp_phy_write(sc, 0xB88E, 0xC09E); + re_real_ocp_phy_write(sc, 0xB890, 0x2224); + re_real_ocp_phy_write(sc, 0xB88E, 0xC0A0); + re_real_ocp_phy_write(sc, 0xB890, 0x2424); + re_real_ocp_phy_write(sc, 0xB88E, 0xC0A2); + re_real_ocp_phy_write(sc, 0xB890, 0x2424); + re_real_ocp_phy_write(sc, 0xB88E, 0xC0A4); + re_real_ocp_phy_write(sc, 0xB890, 0x2424); + re_real_ocp_phy_write(sc, 0xB88E, 0xC018); + re_real_ocp_phy_write(sc, 0xB890, 0x0AF2); + re_real_ocp_phy_write(sc, 0xB88E, 0xC01A); + re_real_ocp_phy_write(sc, 0xB890, 0x0D4A); + re_real_ocp_phy_write(sc, 0xB88E, 0xC01C); + re_real_ocp_phy_write(sc, 0xB890, 0x0F26); + re_real_ocp_phy_write(sc, 0xB88E, 0xC01E); + re_real_ocp_phy_write(sc, 0xB890, 0x118D); + re_real_ocp_phy_write(sc, 0xB88E, 0xC020); + re_real_ocp_phy_write(sc, 0xB890, 0x14F3); + re_real_ocp_phy_write(sc, 0xB88E, 0xC022); + re_real_ocp_phy_write(sc, 0xB890, 0x175A); + re_real_ocp_phy_write(sc, 0xB88E, 0xC024); + re_real_ocp_phy_write(sc, 0xB890, 0x19C0); + re_real_ocp_phy_write(sc, 0xB88E, 0xC026); + re_real_ocp_phy_write(sc, 0xB890, 0x1C26); + re_real_ocp_phy_write(sc, 0xB88E, 0xC089); + re_real_ocp_phy_write(sc, 0xB890, 0x6050); + re_real_ocp_phy_write(sc, 0xB88E, 0xC08A); + re_real_ocp_phy_write(sc, 0xB890, 0x5F6E); + re_real_ocp_phy_write(sc, 0xB88E, 0xC08C); + re_real_ocp_phy_write(sc, 0xB890, 0x6E6E); + re_real_ocp_phy_write(sc, 0xB88E, 0xC08E); + re_real_ocp_phy_write(sc, 0xB890, 0x6E6E); + re_real_ocp_phy_write(sc, 0xB88E, 0xC090); + re_real_ocp_phy_write(sc, 0xB890, 0x6E12); + + re_set_eth_ocp_phy_bit(sc, 0xB896, BIT_0); + + re_clear_phy_mcu_patch_request(sc); + + + re_set_eth_ocp_phy_bit(sc, 0xD068, BIT_13); + + + re_real_ocp_phy_write(sc, 0xA436, 0x81A2); + re_set_eth_ocp_phy_bit(sc, 0xA438, BIT_8); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB54C, + 0xFF00, + 0xDB00); + + + re_clear_eth_ocp_phy_bit(sc, 0xA454, BIT_0); + + + re_set_eth_ocp_phy_bit(sc, 0xA5D4, BIT_5); + re_clear_eth_ocp_phy_bit(sc, 0xAD4E, BIT_4); + re_clear_eth_ocp_phy_bit(sc, 0xA86A, BIT_0); + + + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + + if (sc->RequirePhyMdiSwapPatch) { + u_int16_t adccal_offset_p0; + u_int16_t adccal_offset_p1; + u_int16_t adccal_offset_p2; + u_int16_t adccal_offset_p3; + u_int16_t rg_lpf_cap_xg_p0; + u_int16_t rg_lpf_cap_xg_p1; + u_int16_t rg_lpf_cap_xg_p2; + u_int16_t rg_lpf_cap_xg_p3; + u_int16_t rg_lpf_cap_p0; + u_int16_t rg_lpf_cap_p1; + u_int16_t rg_lpf_cap_p2; + u_int16_t rg_lpf_cap_p3; + + re_clear_set_eth_ocp_phy_bit(sc, + 0xD068, + 0x0007, + 0x0001 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xD068, + 0x0018, + 0x0000 + ); + adccal_offset_p0 = re_real_ocp_phy_read(sc, 0xD06A); + adccal_offset_p0 &= 0x07FF; + re_clear_set_eth_ocp_phy_bit(sc, + 0xD068, + 0x0018, + 0x0008 + ); + adccal_offset_p1 = re_real_ocp_phy_read(sc, 0xD06A); + adccal_offset_p1 &= 0x07FF; + re_clear_set_eth_ocp_phy_bit(sc, + 0xD068, + 0x0018, + 0x0010 + ); + adccal_offset_p2 = re_real_ocp_phy_read(sc, 0xD06A); + adccal_offset_p2 &= 0x07FF; + re_clear_set_eth_ocp_phy_bit(sc, + 0xD068, + 0x0018, + 0x0018 + ); + adccal_offset_p3 = re_real_ocp_phy_read(sc, 0xD06A); + adccal_offset_p3 &= 0x07FF; + + + re_clear_set_eth_ocp_phy_bit(sc, + 0xD068, + 0x0018, + 0x0000 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xD06A, + 0x07FF, + adccal_offset_p3 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xD068, + 0x0018, + 0x0008 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xD06A, + 0x07FF, + adccal_offset_p2 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xD068, + 0x0018, + 0x0010 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xD06A, + 0x07FF, + adccal_offset_p1 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xD068, + 0x0018, + 0x0018 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xD06A, + 0x07FF, + adccal_offset_p0 + ); + + rg_lpf_cap_xg_p0 = re_real_ocp_phy_read(sc, 0xBD5A); + rg_lpf_cap_xg_p0 &= 0x001F; + rg_lpf_cap_xg_p1 = re_real_ocp_phy_read(sc, 0xBD5A); + rg_lpf_cap_xg_p1 &= 0x1F00; + rg_lpf_cap_xg_p2 = re_real_ocp_phy_read(sc, 0xBD5C); + rg_lpf_cap_xg_p2 &= 0x001F; + rg_lpf_cap_xg_p3 = re_real_ocp_phy_read(sc, 0xBD5C); + rg_lpf_cap_xg_p3 &= 0x1F00; + rg_lpf_cap_p0 = re_real_ocp_phy_read(sc, 0xBC18); + rg_lpf_cap_p0 &= 0x001F; + rg_lpf_cap_p1 = re_real_ocp_phy_read(sc, 0xBC18); + rg_lpf_cap_p1 &= 0x1F00; + rg_lpf_cap_p2 = re_real_ocp_phy_read(sc, 0xBC1A); + rg_lpf_cap_p2 &= 0x001F; + rg_lpf_cap_p3 = re_real_ocp_phy_read(sc, 0xBC1A); + rg_lpf_cap_p3 &= 0x1F00; + + re_clear_set_eth_ocp_phy_bit(sc, + 0xBD5A, + 0x001F, + rg_lpf_cap_xg_p3 >> 8 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBD5A, + 0x1F00, + rg_lpf_cap_xg_p2 << 8 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBD5C, + 0x001F, + rg_lpf_cap_xg_p1 >> 8 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBD5C, + 0x1F00, + rg_lpf_cap_xg_p0 << 8 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBC18, + 0x001F, + rg_lpf_cap_p3 >> 8 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBC18, + 0x1F00, + rg_lpf_cap_p2 << 8 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBC1A, + 0x001F, + rg_lpf_cap_p1 >> 8 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBC1A, + 0x1F00, + rg_lpf_cap_p0 << 8 + ); + } + + + re_set_eth_ocp_phy_bit(sc, 0xA424, BIT_3); + + + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_82) { + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + + re_set_eth_ocp_phy_bit(sc, 0xBC08, (BIT_3 | BIT_2)); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8FFF); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x0400 + ); + re_real_ocp_phy_write(sc, 0xB87C, 0x8560); + re_real_ocp_phy_write(sc, 0xB87E, 0x19CC); + re_real_ocp_phy_write(sc, 0xB87C, 0x8562); + re_real_ocp_phy_write(sc, 0xB87E, 0x19CC); + re_real_ocp_phy_write(sc, 0xB87C, 0x8564); + re_real_ocp_phy_write(sc, 0xB87E, 0x19CC); + re_real_ocp_phy_write(sc, 0xB87C, 0x8566); + re_real_ocp_phy_write(sc, 0xB87E, 0x147D); + re_real_ocp_phy_write(sc, 0xB87C, 0x8568); + re_real_ocp_phy_write(sc, 0xB87E, 0x147D); + re_real_ocp_phy_write(sc, 0xB87C, 0x856A); + re_real_ocp_phy_write(sc, 0xB87E, 0x147D); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FFE); + re_real_ocp_phy_write(sc, 0xB87E, 0x0907); + re_clear_set_eth_ocp_phy_bit(sc, + 0xACDA, + 0xFF00, + 0xFF00 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xACDE, + 0xF000, + 0xF000 + ); + re_real_ocp_phy_write(sc, 0xB87C, 0x80D6); + re_real_ocp_phy_write(sc, 0xB87E, 0x2801); + re_real_ocp_phy_write(sc, 0xB87C, 0x80F2); + re_real_ocp_phy_write(sc, 0xB87E, 0x2801); + re_real_ocp_phy_write(sc, 0xB87C, 0x80F4); + re_real_ocp_phy_write(sc, 0xB87E, 0x6077); + re_real_ocp_phy_write(sc, 0xB506, 0x01E7); + re_real_ocp_phy_write(sc, 0xAC8C, 0x0FFC); + re_real_ocp_phy_write(sc, 0xAC46, 0xB7B4); + re_real_ocp_phy_write(sc, 0xAC50, 0x0FBC); + re_real_ocp_phy_write(sc, 0xAC3C, 0x9240); + re_real_ocp_phy_write(sc, 0xAC4E, 0x0DB4); + re_real_ocp_phy_write(sc, 0xACC6, 0x0707); + re_real_ocp_phy_write(sc, 0xACC8, 0xA0D3); + re_real_ocp_phy_write(sc, 0xAD08, 0x0007); + + re_real_ocp_phy_write(sc, 0xB87C, 0x8013); + re_real_ocp_phy_write(sc, 0xB87E, 0x0700); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FB9); + re_real_ocp_phy_write(sc, 0xB87E, 0x2801); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FBA); + re_real_ocp_phy_write(sc, 0xB87E, 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FBC); + re_real_ocp_phy_write(sc, 0xB87E, 0x1900); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FBE); + re_real_ocp_phy_write(sc, 0xB87E, 0xE100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FC0); + re_real_ocp_phy_write(sc, 0xB87E, 0x0800); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FC2); + re_real_ocp_phy_write(sc, 0xB87E, 0xE500); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FC4); + re_real_ocp_phy_write(sc, 0xB87E, 0x0F00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FC6); + re_real_ocp_phy_write(sc, 0xB87E, 0xF100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FC8); + re_real_ocp_phy_write(sc, 0xB87E, 0x0400); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FCa); + re_real_ocp_phy_write(sc, 0xB87E, 0xF300); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FCc); + re_real_ocp_phy_write(sc, 0xB87E, 0xFD00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FCe); + re_real_ocp_phy_write(sc, 0xB87E, 0xFF00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FD0); + re_real_ocp_phy_write(sc, 0xB87E, 0xFB00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FD2); + re_real_ocp_phy_write(sc, 0xB87E, 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FD4); + re_real_ocp_phy_write(sc, 0xB87E, 0xF400); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FD6); + re_real_ocp_phy_write(sc, 0xB87E, 0xFF00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FD8); + re_real_ocp_phy_write(sc, 0xB87E, 0xF600); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x813D); + re_real_ocp_phy_write(sc, 0xB87E, 0x390E); + re_real_ocp_phy_write(sc, 0xB87C, 0x814F); + re_real_ocp_phy_write(sc, 0xB87E, 0x790E); + re_real_ocp_phy_write(sc, 0xB87C, 0x80B0); + re_real_ocp_phy_write(sc, 0xB87E, 0x0F31); + re_set_eth_ocp_phy_bit(sc, 0xBF4C, BIT_1); + re_set_eth_ocp_phy_bit(sc, 0xBCCA, (BIT_9 | BIT_8)); + re_real_ocp_phy_write(sc, 0xB87C, 0x8141); + re_real_ocp_phy_write(sc, 0xB87E, 0x320E); + re_real_ocp_phy_write(sc, 0xB87C, 0x8153); + re_real_ocp_phy_write(sc, 0xB87E, 0x720E); + re_clear_eth_ocp_phy_bit(sc, 0xA432, BIT_6); + re_real_ocp_phy_write(sc, 0xB87C, 0x8529); + re_real_ocp_phy_write(sc, 0xB87E, 0x050E); + + + re_real_ocp_phy_write(sc, 0xA436, 0x816C); + re_real_ocp_phy_write(sc, 0xA438, 0xC4A0); + re_real_ocp_phy_write(sc, 0xA436, 0x8170); + re_real_ocp_phy_write(sc, 0xA438, 0xC4A0); + re_real_ocp_phy_write(sc, 0xA436, 0x8174); + re_real_ocp_phy_write(sc, 0xA438, 0x04A0); + re_real_ocp_phy_write(sc, 0xA436, 0x8178); + re_real_ocp_phy_write(sc, 0xA438, 0x04A0); + re_real_ocp_phy_write(sc, 0xA436, 0x817C); + re_real_ocp_phy_write(sc, 0xA438, 0x0719); + re_real_ocp_phy_write(sc, 0xA436, 0x8FF4); + re_real_ocp_phy_write(sc, 0xA438, 0x0400); + re_real_ocp_phy_write(sc, 0xA436, 0x8FF1); + re_real_ocp_phy_write(sc, 0xA438, 0x0404); + re_real_ocp_phy_write(sc, 0xBF4A, 0x001B); + re_real_ocp_phy_write(sc, 0xB87C, 0x8033); + re_real_ocp_phy_write(sc, 0xB87E, 0x7C13); + re_real_ocp_phy_write(sc, 0xB87C, 0x8037); + re_real_ocp_phy_write(sc, 0xB87E, 0x7C13); + re_real_ocp_phy_write(sc, 0xB87C, 0x803B); + re_real_ocp_phy_write(sc, 0xB87E, 0xFC32); + re_real_ocp_phy_write(sc, 0xB87C, 0x803F); + re_real_ocp_phy_write(sc, 0xB87E, 0x7C13); + re_real_ocp_phy_write(sc, 0xB87C, 0x8043); + re_real_ocp_phy_write(sc, 0xB87E, 0x7C13); + re_real_ocp_phy_write(sc, 0xB87C, 0x8047); + re_real_ocp_phy_write(sc, 0xB87E, 0x7C13); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x8145); + re_real_ocp_phy_write(sc, 0xB87E, 0x370E); + re_real_ocp_phy_write(sc, 0xB87C, 0x8157); + re_real_ocp_phy_write(sc, 0xB87E, 0x770E); + re_real_ocp_phy_write(sc, 0xB87C, 0x8169); + re_real_ocp_phy_write(sc, 0xB87E, 0x0D0A); + re_real_ocp_phy_write(sc, 0xB87C, 0x817B); + re_real_ocp_phy_write(sc, 0xB87E, 0x1D0A); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8217); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x5000 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x821A); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x5000 + ); + + re_real_ocp_phy_write(sc, 0xA436, 0x80DA); + re_real_ocp_phy_write(sc, 0xA438, 0x0403); + re_real_ocp_phy_write(sc, 0xA436, 0x80DC); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x1000 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x80B3); + re_real_ocp_phy_write(sc, 0xA438, 0x0384); + re_real_ocp_phy_write(sc, 0xA436, 0x80B7); + re_real_ocp_phy_write(sc, 0xA438, 0x2007); + re_real_ocp_phy_write(sc, 0xA436, 0x80BA); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x6C00 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x80B5); + re_real_ocp_phy_write(sc, 0xA438, 0xF009); + re_real_ocp_phy_write(sc, 0xA436, 0x80BD); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x9F00 + ); + + re_real_ocp_phy_write(sc, 0xA436, 0x80C7); + re_real_ocp_phy_write(sc, 0xA438, 0xf083); + re_real_ocp_phy_write(sc, 0xA436, 0x80DD); + re_real_ocp_phy_write(sc, 0xA438, 0x03f0); + re_real_ocp_phy_write(sc, 0xA436, 0x80DF); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x1000 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x80CB); + re_real_ocp_phy_write(sc, 0xA438, 0x2007); + re_real_ocp_phy_write(sc, 0xA436, 0x80CE); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x6C00 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x80C9); + re_real_ocp_phy_write(sc, 0xA438, 0x8009); + re_real_ocp_phy_write(sc, 0xA436, 0x80D1); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x8000 + ); + + re_real_ocp_phy_write(sc, 0xA436, 0x80A3); + re_real_ocp_phy_write(sc, 0xA438, 0x200A); + re_real_ocp_phy_write(sc, 0xA436, 0x80A5); + re_real_ocp_phy_write(sc, 0xA438, 0xF0AD); + re_real_ocp_phy_write(sc, 0xA436, 0x809F); + re_real_ocp_phy_write(sc, 0xA438, 0x6073); + re_real_ocp_phy_write(sc, 0xA436, 0x80A1); + re_real_ocp_phy_write(sc, 0xA438, 0x000B); + re_real_ocp_phy_write(sc, 0xA436, 0x80A9); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xC000 + ); + + re_set_phy_mcu_patch_request(sc); + + re_clear_eth_ocp_phy_bit(sc, 0xB896, BIT_0); + re_clear_eth_ocp_phy_bit(sc, 0xB892, 0xFF00); + + re_real_ocp_phy_write(sc, 0xB88E, 0xC23E); + re_real_ocp_phy_write(sc, 0xB890, 0x0000); + re_real_ocp_phy_write(sc, 0xB88E, 0xC240); + re_real_ocp_phy_write(sc, 0xB890, 0x0103); + re_real_ocp_phy_write(sc, 0xB88E, 0xC242); + re_real_ocp_phy_write(sc, 0xB890, 0x0507); + re_real_ocp_phy_write(sc, 0xB88E, 0xC244); + re_real_ocp_phy_write(sc, 0xB890, 0x090B); + re_real_ocp_phy_write(sc, 0xB88E, 0xC246); + re_real_ocp_phy_write(sc, 0xB890, 0x0C0E); + re_real_ocp_phy_write(sc, 0xB88E, 0xC248); + re_real_ocp_phy_write(sc, 0xB890, 0x1012); + re_real_ocp_phy_write(sc, 0xB88E, 0xC24A); + re_real_ocp_phy_write(sc, 0xB890, 0x1416); + + re_set_eth_ocp_phy_bit(sc, 0xB896, BIT_0); + + re_clear_phy_mcu_patch_request(sc); + + + re_set_eth_ocp_phy_bit(sc, 0xA86A, BIT_0); + re_set_eth_ocp_phy_bit(sc, 0xA6F0, BIT_0); + + + re_real_ocp_phy_write(sc, 0xBFA0, 0xD70D); + re_real_ocp_phy_write(sc, 0xBFA2, 0x4100); + re_real_ocp_phy_write(sc, 0xBFA4, 0xE868); + re_real_ocp_phy_write(sc, 0xBFA6, 0xDC59); + re_real_ocp_phy_write(sc, 0xB54C, 0x3C18); + re_clear_eth_ocp_phy_bit(sc, 0xBFA4, BIT_5); + re_real_ocp_phy_write(sc, 0xA436, 0x817D); + re_set_eth_ocp_phy_bit(sc, 0xA438, BIT_12); + + + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_83) { + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + + re_clear_set_eth_ocp_phy_bit(sc, + 0xAC46, + 0x00F0, + 0x0090 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD30, + 0x0003, + 0x0001 + ); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x80F5); + re_real_ocp_phy_write(sc, 0xB87E, 0x760E); + re_real_ocp_phy_write(sc, 0xB87C, 0x8107); + re_real_ocp_phy_write(sc, 0xB87E, 0x360E); + re_real_ocp_phy_write(sc, 0xB87C, 0x8551); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + BIT_15 | BIT_14 | BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_9 | BIT_8, + BIT_11 + ); + + re_clear_set_eth_ocp_phy_bit(sc, + 0xbf00, + 0xE000, + 0xA000 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xbf46, + 0x0F00, + 0x0300 + ); + re_real_ocp_phy_write(sc, 0xa436, 0x8044); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + re_real_ocp_phy_write(sc, 0xa436, 0x804A); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + re_real_ocp_phy_write(sc, 0xa436, 0x8050); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + re_real_ocp_phy_write(sc, 0xa436, 0x8056); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + re_real_ocp_phy_write(sc, 0xa436, 0x805C); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + re_real_ocp_phy_write(sc, 0xa436, 0x8062); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + re_real_ocp_phy_write(sc, 0xa436, 0x8068); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + re_real_ocp_phy_write(sc, 0xa436, 0x806E); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + re_real_ocp_phy_write(sc, 0xa436, 0x8074); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + re_real_ocp_phy_write(sc, 0xa436, 0x807A); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + + + re_set_eth_ocp_phy_bit(sc, 0xA4CA, BIT_6); + re_clear_eth_ocp_phy_bit(sc, 0xA4CA, BIT_14 | BIT_13); + + + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF84, + BIT_15 | BIT_14 | BIT_13, + BIT_15 | BIT_13 + ); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8170); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + BIT_13 | BIT_10 | BIT_9 | BIT_8, + BIT_15 | BIT_14 | BIT_12 | BIT_11 + ); + + + re_set_eth_ocp_phy_bit(sc, 0xA424, BIT_3); + + + /* + re_real_ocp_phy_write(sc, 0xBFA0, 0xD70D); + re_real_ocp_phy_write(sc, 0xBFA2, 0x4100); + re_real_ocp_phy_write(sc, 0xBFA4, 0xE868); + re_real_ocp_phy_write(sc, 0xBFA6, 0xDC59); + re_real_ocp_phy_write(sc, 0xB54C, 0x3C18); + re_clear_eth_ocp_phy_bit(sc, 0xBFA4, BIT_5); + re_real_ocp_phy_write(sc, 0xA436, 0x817D); + re_set_eth_ocp_phy_bit(sc, 0xA438, BIT_12); + */ + + + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_84) { + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + + re_clear_set_eth_ocp_phy_bit(sc, + 0xA80C, + BIT_14, + BIT_15 | BIT_11 | BIT_10); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8010); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_11); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x8088); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x9000); + re_real_ocp_phy_write(sc, 0xB87C, 0x808F); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x9000); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8174); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + BIT_13, + BIT_12 | BIT_11); + + + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_85) { + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8010); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_11); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x8088); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x9000); + re_real_ocp_phy_write(sc, 0xB87C, 0x808F); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x9000); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8174); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + BIT_13, + BIT_12 | BIT_11); + + + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_86) { + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + re_set_phy_mcu_patch_request(sc); + + re_set_eth_ocp_phy_bit(sc, 0xBF96, BIT_15); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF94, + 0x0007, + 0x0005); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF8E, + 0x3C00, + 0x2800); + + re_clear_set_eth_ocp_phy_bit(sc, + 0xBCD8, + 0xC000, + 0x4000); + re_set_eth_ocp_phy_bit(sc, 0xBCD8, BIT_15 | BIT_14); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBCD8, + 0xC000, + 0x4000); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBC80, + 0x001F, + 0x0004); + re_set_eth_ocp_phy_bit(sc, 0xBC82, BIT_15 | BIT_14 | BIT_13); + re_set_eth_ocp_phy_bit(sc, 0xBC82, BIT_12 | BIT_11 | BIT_10); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBC80, + 0x001F, + 0x0005); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBC82, + 0x00E0, + 0x0040); + re_set_eth_ocp_phy_bit(sc, 0xBC82, BIT_4 | BIT_3 | BIT_2); + re_clear_eth_ocp_phy_bit(sc, 0xBCD8, BIT_15 | BIT_14); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBCD8, + 0xC000, + 0x8000); + re_clear_eth_ocp_phy_bit(sc, 0xBCD8, BIT_15 | BIT_14); + + re_clear_phy_mcu_patch_request(sc); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x832C); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0500); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB106, + 0x0700, + 0x0100); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB206, + 0x0700, + 0x0200); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB306, + 0x0700, + 0x0300); + re_real_ocp_phy_write(sc, 0xB87C, 0x80CB); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0300); + re_real_ocp_phy_write(sc, 0xBCF4, 0x0000); + re_real_ocp_phy_write(sc, 0xBCF6, 0x0000); + re_real_ocp_phy_write(sc, 0xBC12, 0x0000); + re_real_ocp_phy_write(sc, 0xB87C, 0x844d); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0200); + if (HW_HAS_WRITE_PHY_MCU_RAM_CODE(sc)) { + re_real_ocp_phy_write(sc, 0xB87C, 0x8feb); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8fe9); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0600); + } + + + re_clear_eth_ocp_phy_bit(sc, 0xAD40, BIT_5 | BIT_4); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD66, + 0x000F, + 0x0007); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD68, + 0xF000, + 0x8000); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD68, + 0x0F00, + 0x0500); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD68, + 0x000F, + 0x0002); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD6A, + 0xF000, + 0x7000); + re_real_ocp_phy_write(sc, 0xAC50, 0x01E8); + + + re_real_ocp_phy_write(sc, 0xA436, 0x81FA); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x5400); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA864, + 0x00F0, + 0x00C0); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA42C, + 0x00FF, + 0x0002); + re_real_ocp_phy_write(sc, 0xA436, 0x80E1); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x0F00); + re_real_ocp_phy_write(sc, 0xA436, 0x80DE); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xF000, + 0x0700); + re_set_eth_ocp_phy_bit(sc, 0xA846, BIT_7); + + re_real_ocp_phy_write(sc, 0xA436, 0x80BA); + re_real_ocp_phy_write(sc, 0xA438, 0x8A04); + re_real_ocp_phy_write(sc, 0xA436, 0x80BD); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xCA00); + re_real_ocp_phy_write(sc, 0xA436, 0x80B7); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xB300); + + re_real_ocp_phy_write(sc, 0xA436, 0x80CE); + re_real_ocp_phy_write(sc, 0xA438, 0x8A04); + re_real_ocp_phy_write(sc, 0xA436, 0x80D1); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xCA00); + re_real_ocp_phy_write(sc, 0xA436, 0x80CB); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xBB00); + + re_real_ocp_phy_write(sc, 0xA436, 0x80A6); + re_real_ocp_phy_write(sc, 0xA438, 0x4909); + re_real_ocp_phy_write(sc, 0xA436, 0x80A8); + re_real_ocp_phy_write(sc, 0xA438, 0x05B8); + + re_real_ocp_phy_write(sc, 0xA436, 0x8200); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x5800); + + re_real_ocp_phy_write(sc, 0xA436, 0x8FF1); + re_real_ocp_phy_write(sc, 0xA438, 0x7078); + re_real_ocp_phy_write(sc, 0xA436, 0x8FF3); + re_real_ocp_phy_write(sc, 0xA438, 0x5D78); + re_real_ocp_phy_write(sc, 0xA436, 0x8FF5); + re_real_ocp_phy_write(sc, 0xA438, 0x7862); + re_real_ocp_phy_write(sc, 0xA436, 0x8FF7); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x1400); + + + if (HW_HAS_WRITE_PHY_MCU_RAM_CODE(sc)) { + re_real_ocp_phy_write(sc, 0xA436, 0x814C); + re_real_ocp_phy_write(sc, 0xA438, 0x8455); + re_real_ocp_phy_write(sc, 0xA436, 0x814E); + re_real_ocp_phy_write(sc, 0xA438, 0x84A6); + re_real_ocp_phy_write(sc, 0xA436, 0x8163); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x0600); + re_real_ocp_phy_write(sc, 0xA436, 0x816A); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x0500); + re_real_ocp_phy_write(sc, 0xA436, 0x8171); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x1f00); + } + + + re_clear_set_eth_ocp_phy_bit(sc, + 0xBC3A, + 0x000F, + 0x0006); + re_real_ocp_phy_write(sc, 0xA436, 0x8064); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x8067); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x806A); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x806D); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x8070); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x8073); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x8076); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x8079); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x807C); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x807F); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + + + re_clear_set_eth_ocp_phy_bit(sc, + 0xBFA0, + 0xFF70, + 0x5500); + re_real_ocp_phy_write(sc, 0xBFA2, 0x9D00); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8165); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0x0700, + 0x0200); + + + if (HW_HAS_WRITE_PHY_MCU_RAM_CODE(sc)) { + re_real_ocp_phy_write(sc, 0xA436, 0x8019); + re_set_eth_ocp_phy_bit(sc, 0xA438, BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x8FE3); + re_real_ocp_phy_write(sc, 0xA438, 0x0005); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x00ED); + re_real_ocp_phy_write(sc, 0xA438, 0x0502); + re_real_ocp_phy_write(sc, 0xA438, 0x0B00); + re_real_ocp_phy_write(sc, 0xA438, 0xD401); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x2900); + } + + + re_real_ocp_phy_write(sc, 0xA436, 0x8018); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x1700); + + + if (HW_HAS_WRITE_PHY_MCU_RAM_CODE(sc)) { + re_real_ocp_phy_write(sc, 0xA436, 0x815B); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x1700); + } + + + re_clear_eth_ocp_phy_bit(sc, 0xA4E0, BIT_15); + + + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_12 | BIT_0); + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_7); + + + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_87) { + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_12 | BIT_0); + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_7); + + + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_90) { + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_91) { + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + + re_real_ocp_phy_write(sc, 0xA436, 0x80BF); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xED00); + + re_real_ocp_phy_write(sc, 0xA436, 0x80CD); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x1000); + re_real_ocp_phy_write(sc, 0xA436, 0x80D1); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xC800); + re_real_ocp_phy_write(sc, 0xA436, 0x80D4); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xC800); + + re_real_ocp_phy_write(sc, 0xA436, 0x80E1); + re_real_ocp_phy_write(sc, 0xA438, 0x10CC); + re_real_ocp_phy_write(sc, 0xA436, 0x80E5); + re_real_ocp_phy_write(sc, 0xA438, 0x4F0C); + + re_real_ocp_phy_write(sc, 0xA436, 0x8387); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x4700); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA80C, + BIT_7 | BIT_6, + BIT_7); + + + re_clear_eth_ocp_phy_bit(sc, 0xAC90, BIT_4); + re_clear_eth_ocp_phy_bit(sc, 0xAD2C, BIT_15); + re_real_ocp_phy_write(sc, 0xB87C, 0x8321); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x1100); + re_set_eth_ocp_phy_bit(sc, 0xACF8, (BIT_3 | BIT_2)); + re_real_ocp_phy_write(sc, 0xA436, 0x8183); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x5900); + re_set_eth_ocp_phy_bit(sc, 0xAD94, BIT_5); + re_clear_eth_ocp_phy_bit(sc, 0xA654, BIT_11); + re_set_eth_ocp_phy_bit(sc, 0xB648, BIT_14); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x839E); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x2F00); + re_real_ocp_phy_write(sc, 0xB87C, 0x83F2); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0800); + re_set_eth_ocp_phy_bit(sc, 0xADA0, BIT_1); + + re_real_ocp_phy_write(sc, 0xB87C, 0x80F3); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x9900); + re_real_ocp_phy_write(sc, 0xB87C, 0x8126); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0xC100); + re_real_ocp_phy_write(sc, 0xB87C, 0x893A); + re_real_ocp_phy_write(sc, 0xB87E, 0x8080); + re_real_ocp_phy_write(sc, 0xB87C, 0x8647); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0xE600); + re_real_ocp_phy_write(sc, 0xB87C, 0x862C); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x1200); + + re_real_ocp_phy_write(sc, 0xB87C, 0x864A); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0xE600); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x80A0); + re_real_ocp_phy_write(sc, 0xB87E, 0xBCBC); + re_real_ocp_phy_write(sc, 0xB87C, 0x805E); + re_real_ocp_phy_write(sc, 0xB87E, 0xBCBC); + re_real_ocp_phy_write(sc, 0xB87C, 0x8056); + re_real_ocp_phy_write(sc, 0xB87E, 0x3077); + re_real_ocp_phy_write(sc, 0xB87C, 0x8058); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x5A00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8098); + re_real_ocp_phy_write(sc, 0xB87E, 0x3077); + re_real_ocp_phy_write(sc, 0xB87C, 0x809A); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x5A00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8052); + re_real_ocp_phy_write(sc, 0xB87E, 0x3733); + re_real_ocp_phy_write(sc, 0xB87C, 0x8094); + re_real_ocp_phy_write(sc, 0xB87E, 0x3733); + re_real_ocp_phy_write(sc, 0xB87C, 0x807F); + re_real_ocp_phy_write(sc, 0xB87E, 0x7C75); + re_real_ocp_phy_write(sc, 0xB87C, 0x803D); + re_real_ocp_phy_write(sc, 0xB87E, 0x7C75); + re_real_ocp_phy_write(sc, 0xB87C, 0x8036); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x3000); + re_real_ocp_phy_write(sc, 0xB87C, 0x8078); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x3000); + re_real_ocp_phy_write(sc, 0xB87C, 0x8031); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x3300); + re_real_ocp_phy_write(sc, 0xB87C, 0x8073); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x3300); + + + re_clear_set_eth_ocp_phy_bit(sc, + 0xAE06, + 0xFC00, + 0x7C00); + re_real_ocp_phy_write(sc, 0xB87C, 0x89D1); + re_real_ocp_phy_write(sc, 0xB87E, 0x0004); + re_real_ocp_phy_write(sc, 0xA436, 0x8FBD); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x0A00); + re_real_ocp_phy_write(sc, 0xA436, 0x8FBE); + re_real_ocp_phy_write(sc, 0xA438, 0x0D09); + re_real_ocp_phy_write(sc, 0xB87C, 0x89CD); + re_real_ocp_phy_write(sc, 0xB87E, 0x0F0F); + re_real_ocp_phy_write(sc, 0xB87C, 0x89CF); + re_real_ocp_phy_write(sc, 0xB87E, 0x0F0F); + + re_real_ocp_phy_write(sc, 0xB87C, 0x83A4); + re_real_ocp_phy_write(sc, 0xB87E, 0x6600); + re_real_ocp_phy_write(sc, 0xB87C, 0x83A6); + re_real_ocp_phy_write(sc, 0xB87E, 0x6601); + re_real_ocp_phy_write(sc, 0xB87C, 0x83C0); + re_real_ocp_phy_write(sc, 0xB87E, 0x6600); + re_real_ocp_phy_write(sc, 0xB87C, 0x83C2); + re_real_ocp_phy_write(sc, 0xB87E, 0x6601); + re_real_ocp_phy_write(sc, 0xB87C, 0x8414); + re_real_ocp_phy_write(sc, 0xB87E, 0x6600); + re_real_ocp_phy_write(sc, 0xB87C, 0x8416); + re_real_ocp_phy_write(sc, 0xB87E, 0x6601); + re_real_ocp_phy_write(sc, 0xB87C, 0x83F8); + re_real_ocp_phy_write(sc, 0xB87E, 0x6600); + re_real_ocp_phy_write(sc, 0xB87C, 0x83FA); + re_real_ocp_phy_write(sc, 0xB87E, 0x6601); + + + re_set_phy_mcu_patch_request(sc); + + re_clear_set_eth_ocp_phy_bit(sc, + 0xBD96, + 0x1F00, + 0x1000); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF1C, + 0x0007, + 0x0007); + re_clear_eth_ocp_phy_bit(sc, 0xBFBE, BIT_15); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF40, + 0x0380, + 0x0280); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF90, + BIT_7, + (BIT_6 | BIT_5)); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF90, + BIT_4, + BIT_3 | BIT_2); + + re_clear_phy_mcu_patch_request(sc); + + + re_real_ocp_phy_write(sc, 0xA436, 0x843B); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x2000); + re_real_ocp_phy_write(sc, 0xA436, 0x843D); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x2000); + + + re_clear_eth_ocp_phy_bit(sc, 0xB516, 0x7F); + + + re_clear_eth_ocp_phy_bit(sc, 0xBF80, (BIT_5 | BIT_4)); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8188); + re_real_ocp_phy_write(sc, 0xA438, 0x0044); + re_real_ocp_phy_write(sc, 0xA438, 0x00A8); + re_real_ocp_phy_write(sc, 0xA438, 0x00D6); + re_real_ocp_phy_write(sc, 0xA438, 0x00EC); + re_real_ocp_phy_write(sc, 0xA438, 0x00F6); + re_real_ocp_phy_write(sc, 0xA438, 0x00FC); + re_real_ocp_phy_write(sc, 0xA438, 0x00FE); + re_real_ocp_phy_write(sc, 0xA438, 0x00FE); + re_real_ocp_phy_write(sc, 0xA438, 0x00BC); + re_real_ocp_phy_write(sc, 0xA438, 0x0058); + re_real_ocp_phy_write(sc, 0xA438, 0x002A); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x8015); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0800); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FFD); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0000); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FFF); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x7F00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FFB); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FE9); + re_real_ocp_phy_write(sc, 0xB87E, 0x0002); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FEF); + re_real_ocp_phy_write(sc, 0xB87E, 0x00A5); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FF1); + re_real_ocp_phy_write(sc, 0xB87E, 0x0106); + + re_real_ocp_phy_write(sc, 0xB87C, 0x8FE1); + re_real_ocp_phy_write(sc, 0xB87E, 0x0102); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FE3); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0400); + + + re_set_eth_ocp_phy_bit(sc, 0xA654, BIT_11); + re_clear_eth_ocp_phy_bit(sc, 0XA65A, (BIT_1 | BIT_0)); + + re_real_ocp_phy_write(sc, 0xAC3A, 0x5851); + re_clear_set_eth_ocp_phy_bit(sc, + 0XAC3C, + BIT_15 | BIT_14 | BIT_12, + BIT_13); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAC42, + BIT_9, + BIT_8 | BIT_7 | BIT_6); + re_clear_eth_ocp_phy_bit(sc, 0xAC3E, BIT_15 | BIT_14 | BIT_13); + re_clear_eth_ocp_phy_bit(sc, 0xAC42, BIT_5 | BIT_4 | BIT_3); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAC42, + BIT_1, + BIT_2 | BIT_0); + + re_real_ocp_phy_write(sc, 0xAC1A, 0x00DB); + re_real_ocp_phy_write(sc, 0xADE4, 0x01B5); + re_clear_eth_ocp_phy_bit(sc, 0xAD9C, BIT_11 | BIT_10); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x814B); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x1100); + re_real_ocp_phy_write(sc, 0xB87C, 0x814D); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x1100); + re_real_ocp_phy_write(sc, 0xB87C, 0x814F); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0B00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8142); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8144); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8150); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8118); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0700); + re_real_ocp_phy_write(sc, 0xB87C, 0x811A); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0700); + re_real_ocp_phy_write(sc, 0xB87C, 0x811C); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0500); + re_real_ocp_phy_write(sc, 0xB87C, 0x810F); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8111); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x811D); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + + re_set_eth_ocp_phy_bit(sc, 0xAC36, BIT_12); + re_clear_eth_ocp_phy_bit(sc, 0xAD1C, BIT_8); + re_clear_set_eth_ocp_phy_bit(sc, + 0xADE8, + 0xFFC0, + 0x1400); + re_real_ocp_phy_write(sc, 0xB87C, 0x864B); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x9D00); + + re_real_ocp_phy_write(sc, 0xA436, 0x8F97); + re_real_ocp_phy_write(sc, 0xA438, 0x003F); + re_real_ocp_phy_write(sc, 0xA438, 0x3F02); + re_real_ocp_phy_write(sc, 0xA438, 0x023C); + re_real_ocp_phy_write(sc, 0xA438, 0x3B0A); + re_real_ocp_phy_write(sc, 0xA438, 0x1C00); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + + + re_set_eth_ocp_phy_bit(sc, 0xAD9C, BIT_5); + re_real_ocp_phy_write(sc, 0xB87C, 0x8122); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0C00); + + re_real_ocp_phy_write(sc, 0xB87C, 0x82C8); + re_real_ocp_phy_write(sc, 0xB87E, 0x03ED); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FF); + re_real_ocp_phy_write(sc, 0xB87E, 0x0009); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FE); + re_real_ocp_phy_write(sc, 0xB87E, 0x000B); + re_real_ocp_phy_write(sc, 0xB87E, 0x0021); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F7); + re_real_ocp_phy_write(sc, 0xB87E, 0x03B8); + re_real_ocp_phy_write(sc, 0xB87E, 0x03E0); + re_real_ocp_phy_write(sc, 0xB87E, 0x0049); + re_real_ocp_phy_write(sc, 0xB87E, 0x0049); + re_real_ocp_phy_write(sc, 0xB87E, 0x03E0); + re_real_ocp_phy_write(sc, 0xB87E, 0x03B8); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F7); + re_real_ocp_phy_write(sc, 0xB87E, 0x0021); + re_real_ocp_phy_write(sc, 0xB87E, 0x000B); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FE); + re_real_ocp_phy_write(sc, 0xB87E, 0x0009); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FF); + re_real_ocp_phy_write(sc, 0xB87E, 0x03ED); + + re_real_ocp_phy_write(sc, 0xB87C, 0x80EF); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0C00); + re_real_ocp_phy_write(sc, 0xB87C, 0x82A0); + re_real_ocp_phy_write(sc, 0xB87E, 0x000E); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FE); + re_real_ocp_phy_write(sc, 0xB87E, 0x03ED); + re_real_ocp_phy_write(sc, 0xB87E, 0x0006); + re_real_ocp_phy_write(sc, 0xB87E, 0x001A); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F1); + re_real_ocp_phy_write(sc, 0xB87E, 0x03D8); + re_real_ocp_phy_write(sc, 0xB87E, 0x0023); + re_real_ocp_phy_write(sc, 0xB87E, 0x0054); + re_real_ocp_phy_write(sc, 0xB87E, 0x0322); + re_real_ocp_phy_write(sc, 0xB87E, 0x00DD); + re_real_ocp_phy_write(sc, 0xB87E, 0x03AB); + re_real_ocp_phy_write(sc, 0xB87E, 0x03DC); + re_real_ocp_phy_write(sc, 0xB87E, 0x0027); + re_real_ocp_phy_write(sc, 0xB87E, 0x000E); + re_real_ocp_phy_write(sc, 0xB87E, 0x03E5); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F9); + re_real_ocp_phy_write(sc, 0xB87E, 0x0012); + re_real_ocp_phy_write(sc, 0xB87E, 0x0001); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F1); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8018); + re_set_eth_ocp_phy_bit(sc, 0xA438, BIT_13); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x8FE4); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0000); + + + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_92) { + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8183); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x5900); + re_set_eth_ocp_phy_bit(sc, 0xA654, BIT_11); + re_set_eth_ocp_phy_bit(sc, 0xB648, BIT_14); + re_clear_eth_ocp_phy_bit(sc, 0xAD2C, BIT_15); + re_set_eth_ocp_phy_bit(sc, 0xAD94, BIT_5); + re_set_eth_ocp_phy_bit(sc, 0xADA0, BIT_1); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAE06, + BIT_15 | BIT_14 | BIT_13 | BIT_12 | BIT_11 | BIT_10, + BIT_14 | BIT_13 | BIT_12 | BIT_11 | BIT_10); + + re_real_ocp_phy_write(sc, 0xB87C, 0x8647); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0xE600); + re_real_ocp_phy_write(sc, 0xB87C, 0x8036); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x3000); + re_real_ocp_phy_write(sc, 0xB87C, 0x8078); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x3000); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x89E9); + re_clear_eth_ocp_phy_bit(sc, 0xB87E, 0xFF00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FFD); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FFE); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0200); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FFF); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0400); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8018); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x7700); + re_real_ocp_phy_write(sc, 0xA436, 0x8F9C); + re_real_ocp_phy_write(sc, 0xA438, 0x0005); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x00ED); + re_real_ocp_phy_write(sc, 0xA438, 0x0502); + re_real_ocp_phy_write(sc, 0xA438, 0x0B00); + re_real_ocp_phy_write(sc, 0xA438, 0xD401); + re_real_ocp_phy_write(sc, 0xA436, 0x8FA8); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x2900); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x814B); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x1100); + re_real_ocp_phy_write(sc, 0xB87C, 0x814D); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x1100); + re_real_ocp_phy_write(sc, 0xB87C, 0x814F); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0B00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8142); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8144); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8150); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + + re_real_ocp_phy_write(sc, 0xB87C, 0x8118); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0700); + re_real_ocp_phy_write(sc, 0xB87C, 0x811A); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0700); + re_real_ocp_phy_write(sc, 0xB87C, 0x811C); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0500); + re_real_ocp_phy_write(sc, 0xB87C, 0x810F); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8111); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x811D); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + + + re_clear_eth_ocp_phy_bit(sc, 0xAD1C, BIT_8); + re_clear_set_eth_ocp_phy_bit(sc, + 0xADE8, + BIT_15 | BIT_14 | BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6, + BIT_12 | BIT_10); + re_real_ocp_phy_write(sc, 0xB87C, 0x864B); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x9D00); + re_real_ocp_phy_write(sc, 0xB87C, 0x862C); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x1200); + re_real_ocp_phy_write(sc, 0xA436, 0x8566); + re_real_ocp_phy_write(sc, 0xA438, 0x003F); + re_real_ocp_phy_write(sc, 0xA438, 0x3F02); + re_real_ocp_phy_write(sc, 0xA438, 0x023C); + re_real_ocp_phy_write(sc, 0xA438, 0x3B0A); + re_real_ocp_phy_write(sc, 0xA438, 0x1C00); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + + + re_set_eth_ocp_phy_bit(sc, 0xAD9C, BIT_5); + + re_real_ocp_phy_write(sc, 0xB87C, 0x8122); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0C00); + re_real_ocp_phy_write(sc, 0xB87C, 0x82C8); + re_real_ocp_phy_write(sc, 0xB87E, 0x03ED); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FF); + re_real_ocp_phy_write(sc, 0xB87E, 0x0009); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FE); + re_real_ocp_phy_write(sc, 0xB87E, 0x000B); + re_real_ocp_phy_write(sc, 0xB87E, 0x0021); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F7); + re_real_ocp_phy_write(sc, 0xB87E, 0x03B8); + re_real_ocp_phy_write(sc, 0xB87E, 0x03E0); + re_real_ocp_phy_write(sc, 0xB87E, 0x0049); + re_real_ocp_phy_write(sc, 0xB87E, 0x0049); + re_real_ocp_phy_write(sc, 0xB87E, 0x03E0); + re_real_ocp_phy_write(sc, 0xB87E, 0x03B8); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F7); + re_real_ocp_phy_write(sc, 0xB87E, 0x0021); + re_real_ocp_phy_write(sc, 0xB87E, 0x000B); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FE); + re_real_ocp_phy_write(sc, 0xB87E, 0x0009); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FF); + re_real_ocp_phy_write(sc, 0xB87E, 0x03ED); + + re_real_ocp_phy_write(sc, 0xB87C, 0x80EF); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0C00); + re_real_ocp_phy_write(sc, 0xB87C, 0x82A0); + re_real_ocp_phy_write(sc, 0xB87E, 0x000E); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FE); + re_real_ocp_phy_write(sc, 0xB87E, 0x03ED); + re_real_ocp_phy_write(sc, 0xB87E, 0x0006); + re_real_ocp_phy_write(sc, 0xB87E, 0x001A); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F1); + re_real_ocp_phy_write(sc, 0xB87E, 0x03D8); + re_real_ocp_phy_write(sc, 0xB87E, 0x0023); + re_real_ocp_phy_write(sc, 0xB87E, 0x0054); + re_real_ocp_phy_write(sc, 0xB87E, 0x0322); + re_real_ocp_phy_write(sc, 0xB87E, 0x00DD); + re_real_ocp_phy_write(sc, 0xB87E, 0x03AB); + re_real_ocp_phy_write(sc, 0xB87E, 0x03DC); + re_real_ocp_phy_write(sc, 0xB87E, 0x0027); + re_real_ocp_phy_write(sc, 0xB87E, 0x000E); + re_real_ocp_phy_write(sc, 0xB87E, 0x03E5); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F9); + re_real_ocp_phy_write(sc, 0xB87E, 0x0012); + re_real_ocp_phy_write(sc, 0xB87E, 0x0001); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F1); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8188); + re_real_ocp_phy_write(sc, 0xA438, 0x0032); + re_real_ocp_phy_write(sc, 0xA438, 0x0064); + re_real_ocp_phy_write(sc, 0xA438, 0x0098); + re_real_ocp_phy_write(sc, 0xA438, 0x00CA); + re_real_ocp_phy_write(sc, 0xA438, 0x00FE); + re_real_ocp_phy_write(sc, 0xA438, 0x00FE); + re_real_ocp_phy_write(sc, 0xA438, 0x00FE); + re_real_ocp_phy_write(sc, 0xA438, 0x00FE); + re_real_ocp_phy_write(sc, 0xA438, 0x00CC); + re_real_ocp_phy_write(sc, 0xA438, 0x009A); + re_real_ocp_phy_write(sc, 0xA438, 0x0066); + re_real_ocp_phy_write(sc, 0xA438, 0x0034); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + + + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_1 | BIT_0); + + + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } + +#ifdef ENABLE_FIBER_SUPPORT + if (HW_FIBER_MODE_ENABLED(sc)) + re_hw_fiber_phy_config(sc); +#endif //ENABLE_FIBER_SUPPORT + + //EthPhyPPSW + if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || + sc->re_type == MACFG_58 || sc->re_type == MACFG_59 || + sc->re_type == MACFG_60) { + //disable EthPhyPPSW + re_mdio_write(sc, 0x1F, 0x0BCD); + re_mdio_write(sc, 0x14, 0x5065); + re_mdio_write(sc, 0x14, 0xD065); + re_mdio_write(sc, 0x1F, 0x0BC8); + re_mdio_write(sc, 0x12, 0x00ED); + re_mdio_write(sc, 0x1F, 0x0BCD); + re_mdio_write(sc, 0x14, 0x1065); + re_mdio_write(sc, 0x14, 0x9065); + re_mdio_write(sc, 0x14, 0x1065); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75) { + //enable EthPhyPPSW + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_7); + re_mdio_write(sc, 0x1F, 0x0000); + } + + switch(sc->re_type) { + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + if (phy_mdix_mode == RE_ETH_PHY_FORCE_MDI) { + //Force MDI + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_8 | BIT_9); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (phy_mdix_mode == RE_ETH_PHY_FORCE_MDIX) { + //Force MDIX + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_8); + re_set_eth_phy_bit(sc, 0x10, BIT_9); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + //Auto MDI/MDIX + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_8 | BIT_9); + re_mdio_write(sc, 0x1F, 0x0000); + } + + break; + } + + //legacy force mode(Chap 22) + switch(sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_clear_eth_ocp_phy_bit(sc, 0xA5B4, BIT_15); + break; + } + + if (phy_power_saving == 1) { + switch (sc->re_type) { + case MACFG_59: + case MACFG_60: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + re_enable_ocp_phy_power_saving(sc); + break; + } + } + + if (eee_enable == 1) + re_enable_eee(sc); + else + re_disable_eee(sc); + + re_mdio_write(sc, 0x1F, 0x0000); +} + +void re_mdio_write(struct re_softc *sc,u_int8_t RegAddr,u_int16_t RegData) +{ + u_int32_t TmpUlong=0x80000000; + u_int32_t Timeout=0; + + if (RegAddr == 0x1F) { + sc->cur_page = RegData; + } + + if (sc->re_type == MACFG_63) { + int i; + CSR_WRITE_4(sc, RE_OCPDR, OCPDR_Write | + (RegAddr & OCPDR_Reg_Mask) << OCPDR_GPHY_Reg_shift | + (RegData & OCPDR_Data_Mask)); + CSR_WRITE_4(sc, RE_OCPAR, OCPAR_GPHY_Write); + CSR_WRITE_4(sc, RE_EPHY_RXER_NUM, 0); + + for (i = 0; i < 100; i++) { + DELAY(1000); + if (!(CSR_READ_4(sc, RE_OCPAR) & OCPAR_Flag)) + break; + } + } else if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || + sc->re_type == MACFG_58 || sc->re_type == MACFG_59 || + sc->re_type == MACFG_60 || sc->re_type == MACFG_61 || + sc->re_type == MACFG_62 || sc->re_type == MACFG_67 || + sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || + sc->re_type == MACFG_72 || sc->re_type == MACFG_73 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || + sc->re_type == MACFG_76 || sc->re_type == MACFG_80 || + sc->re_type == MACFG_81 || sc->re_type == MACFG_82 || + sc->re_type == MACFG_83 || sc->re_type == MACFG_84 || + sc->re_type == MACFG_85 || sc->re_type == MACFG_86 || + sc->re_type == MACFG_87 || sc->re_type == MACFG_90 || + sc->re_type == MACFG_91 || sc->re_type == MACFG_92) { + if (RegAddr == 0x1F) { + return; + } + + re_ocp_phy_write(sc, sc->cur_page, RegAddr, RegData); + } else { + if (sc->re_type == MACFG_65 || sc->re_type == MACFG_66) + CSR_WRITE_4(sc, 0xD0, CSR_READ_4(sc, 0xD0) & ~0x00020000); + + TmpUlong |= (((u_int32_t)RegAddr)<<16 | (u_int32_t)RegData); + + CSR_WRITE_4(sc, RE_PHYAR, TmpUlong); + + /* Wait for writing to Phy ok */ + for (Timeout=0; Timeout<5; Timeout++) { + DELAY(1000); + if ((CSR_READ_4(sc, RE_PHYAR)&PHYAR_Flag)==0) + break; + } + + if (sc->re_type == MACFG_65 || sc->re_type == MACFG_66) + CSR_WRITE_4(sc, 0xD0, CSR_READ_4(sc, 0xD0) | 0x00020000); + } +} + +u_int16_t re_mdio_read(struct re_softc *sc,u_int8_t RegAddr) +{ + u_int16_t RegData; + u_int32_t TmpUlong; + u_int32_t Timeout=0; + + if (sc->re_type == MACFG_63) { + int i; + CSR_WRITE_4(sc, RE_OCPDR, OCPDR_Read | + (RegAddr & OCPDR_Reg_Mask) << OCPDR_GPHY_Reg_shift); + CSR_WRITE_4(sc, RE_OCPAR, OCPAR_GPHY_Write); + CSR_WRITE_4(sc, RE_EPHY_RXER_NUM, 0); + + for (i = 0; i < 100; i++) { + DELAY(1000); + if (!(CSR_READ_4(sc, RE_OCPAR) & OCPAR_Flag)) + break; + } + + DELAY(1000); + CSR_WRITE_4(sc, RE_OCPAR, OCPAR_GPHY_Read); + CSR_WRITE_4(sc, RE_EPHY_RXER_NUM, 0); + + for (i = 0; i < 100; i++) { + DELAY(1000); + if (CSR_READ_4(sc, RE_OCPAR) & OCPAR_Flag) + break; + } + + RegData = CSR_READ_4(sc, RE_OCPDR) & OCPDR_Data_Mask; + } else if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || + sc->re_type == MACFG_58 || sc->re_type == MACFG_59 || + sc->re_type == MACFG_60 || sc->re_type == MACFG_61 || + sc->re_type == MACFG_62 || sc->re_type == MACFG_67 || + sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || + sc->re_type == MACFG_72 || sc->re_type == MACFG_73 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || + sc->re_type == MACFG_76 || sc->re_type == MACFG_80 || + sc->re_type == MACFG_81 || sc->re_type == MACFG_82 || + sc->re_type == MACFG_83 || sc->re_type == MACFG_84 || + sc->re_type == MACFG_85 || sc->re_type == MACFG_86 || + sc->re_type == MACFG_87 || sc->re_type == MACFG_90 || + sc->re_type == MACFG_91 || sc->re_type == MACFG_92) { + RegData = re_ocp_phy_read(sc, sc->cur_page, RegAddr); + } else { + if (sc->re_type == MACFG_65 || sc->re_type == MACFG_66) + CSR_WRITE_4(sc, 0xD0, CSR_READ_4(sc, 0xD0) & ~0x00020000); + + TmpUlong = ((u_int32_t)RegAddr << 16); + CSR_WRITE_4(sc, RE_PHYAR, TmpUlong); + + /* Wait for writing to Phy ok */ + for (Timeout=0; Timeout<5; Timeout++) { + DELAY(1000); + TmpUlong = CSR_READ_4(sc, RE_PHYAR); + if ((TmpUlong&PHYAR_Flag)!=0) + break; + } + + RegData = (u_int16_t)(TmpUlong & 0x0000ffff); + + if (sc->re_type == MACFG_65 || sc->re_type == MACFG_66) + CSR_WRITE_4(sc, 0xD0, CSR_READ_4(sc, 0xD0) | 0x00020000); + } + + return RegData; +} + +static u_int8_t RtCheckPciEPhyAddr(struct re_softc *sc, int RegAddr) +{ + if (sc->re_type != MACFG_74 && sc->re_type != MACFG_75) + goto exit; + + if (RegAddr & (BIT_6 | BIT_5)) + re_clear_set_mac_ocp_bit(sc, 0xDE28, + (BIT_1 | BIT_0), + (RegAddr >> 5) & (BIT_1 | BIT_0)); + + RegAddr &= 0x1F; + +exit: + return RegAddr; +} + +static void _re_ephy_write(struct re_softc *sc, u_int8_t RegAddr, u_int16_t RegData) +{ + u_int32_t TmpUlong=0x80000000; + u_int32_t Timeout=0; + + TmpUlong |= (((u_int32_t)RegAddr<<16) | (u_int32_t)RegData); + + CSR_WRITE_4(sc, RE_EPHYAR, TmpUlong); + + /* Wait for writing to Phy ok */ + for (Timeout=0; Timeout<5; Timeout++) { + DELAY(1000); + if ((CSR_READ_4(sc, RE_EPHYAR)&PHYAR_Flag)==0) + break; + } +} + +void re_ephy_write(struct re_softc *sc, u_int8_t RegAddr, u_int16_t RegData) +{ + _re_ephy_write(sc, RtCheckPciEPhyAddr(sc, RegAddr), RegData); +} + +static u_int16_t _re_ephy_read(struct re_softc *sc, u_int8_t RegAddr) +{ + u_int16_t RegData; + u_int32_t TmpUlong; + u_int32_t Timeout=0; + + TmpUlong = ((u_int32_t)RegAddr << 16); + CSR_WRITE_4(sc, RE_EPHYAR, TmpUlong); + + /* Wait for writing to Phy ok */ + for (Timeout=0; Timeout<5; Timeout++) { + DELAY(1000); + TmpUlong = CSR_READ_4(sc, RE_EPHYAR); + if ((TmpUlong&PHYAR_Flag)!=0) + break; + } + + RegData = (u_int16_t)(TmpUlong & 0x0000ffff); + + return RegData; +} + +u_int16_t re_ephy_read(struct re_softc *sc, u_int8_t RegAddr) +{ + return _re_ephy_read(sc, RtCheckPciEPhyAddr(sc, RegAddr)); +} + +static u_int8_t re_calc_efuse_dummy_bit(u_int16_t reg) +{ + int s,a; + u_int8_t dummyBitPos = 0; + + + s=reg% 32; + a=s % 16; + + if (s/16) { + dummyBitPos = (u_int8_t)(16-a); + } else { + dummyBitPos = (u_int8_t)a; + } + + return dummyBitPos; +} + +static u_int32_t re_decode_efuse_cmd(struct re_softc *sc, u_int32_t DwCmd) +{ + u_int16_t reg = (u_int16_t)((DwCmd & 0x00FE0000) >> 17); + u_int32_t DummyPos = re_calc_efuse_dummy_bit(reg); + u_int32_t DeCodeDwCmd; + u_int32_t Dw17BitData; + + + if (sc->re_efuse_ver < 3) { + DeCodeDwCmd = (DwCmd>>(DummyPos+1))< 0) + DeCodeDwCmd |= ((DwCmd<<(32-DummyPos))>>(32-DummyPos)); + } else { + reg = (u_int16_t)((DwCmd & 0x007F0000) >> 16); + DummyPos = re_calc_efuse_dummy_bit(reg); + Dw17BitData = ((DwCmd & BIT_23) >> 23); + Dw17BitData <<= 16; + Dw17BitData |= (DwCmd & 0x0000FFFF); + DeCodeDwCmd = (Dw17BitData>>(DummyPos+1))< 0) + DeCodeDwCmd |= ((Dw17BitData<<(32-DummyPos))>>(32-DummyPos)); + } + + return DeCodeDwCmd; +} + +#define EFUSE_WRITE 0x80000000 +#define EFUSE_WRITE_OK 0x00000000 +#define EFUSE_READ 0x00000000 +#define EFUSE_READ_OK 0x80000000 +#define EFUSE_Reg_Mask 0x03FF +#define EFUSE_Reg_Shift 8 +#define EFUSE_Check_Cnt 300 +#define EFUSE_READ_FAIL 0xFF +#define EFUSE_Data_Mask 0x000000FF + +u_int8_t re_efuse_read(struct re_softc *sc, u_int16_t reg) +{ + u_int8_t efuse_data = 0; + u_int32_t temp; + u_int32_t cnt; + + if (sc->re_efuse_ver == EFUSE_NOT_SUPPORT) + return EFUSE_READ_FAIL; + + if (sc->re_efuse_ver == EFUSE_SUPPORT_V1) { + temp = EFUSE_READ | ((reg & EFUSE_Reg_Mask) << EFUSE_Reg_Shift); + CSR_WRITE_4(sc, RE_EFUSEAR, temp); + + cnt = 0; + do { + DELAY(100); + temp = CSR_READ_4(sc, RE_EFUSEAR); + cnt++; + } while (!(temp & EFUSE_READ_OK) && (cnt < EFUSE_Check_Cnt)); + + if (cnt == EFUSE_Check_Cnt) + efuse_data = EFUSE_READ_FAIL; + else + efuse_data = (u_int8_t)(CSR_READ_4(sc, RE_EFUSEAR) & EFUSE_Data_Mask); + } else if (sc->re_efuse_ver == EFUSE_SUPPORT_V2) { + temp = (reg/2) & 0x03ff; + temp <<= 17; + temp |= EFUSE_READ; + CSR_WRITE_4(sc, RE_EFUSEAR, temp); + + cnt = 0; + do { + DELAY(100); + temp = CSR_READ_4(sc, RE_EFUSEAR); + cnt++; + } while (!(temp & EFUSE_READ_OK) && (cnt < EFUSE_Check_Cnt)); + + if (cnt == EFUSE_Check_Cnt) { + efuse_data = EFUSE_READ_FAIL; + } else { + temp = CSR_READ_4(sc, RE_EFUSEAR); + temp = re_decode_efuse_cmd(sc, temp); + + if (reg%2) { + temp >>= 8; + efuse_data = (u_int8_t)temp; + } else { + efuse_data = (u_int8_t)temp; + } + } + } else if (sc->re_efuse_ver == EFUSE_SUPPORT_V3) { + temp = (reg/2) & 0x03ff; + temp <<= 16; + temp |= EFUSE_READ; + CSR_WRITE_4(sc, RE_EFUSEAR, temp); + + cnt = 0; + do { + DELAY(100); + temp = CSR_READ_4(sc, RE_EFUSEAR); + cnt++; + } while (!(temp & EFUSE_READ_OK) && (cnt < EFUSE_Check_Cnt)); + + if (cnt == EFUSE_Check_Cnt) { + efuse_data = EFUSE_READ_FAIL; + } else { + temp = CSR_READ_4(sc, RE_EFUSEAR); + temp = re_decode_efuse_cmd(sc, temp); + + if (reg%2) { + temp >>= 8; + efuse_data = (u_int8_t)temp; + } else { + efuse_data = (u_int8_t)temp; + } + } + } + + DELAY(20); + + return efuse_data; +} + +void re_csi_other_fun_write( + struct re_softc *sc, + u_int8_t MultiFunSelBit, + u_int16_t ByteEnAndAddr, + u_int32_t RegData) +{ + u_int32_t Timeout = 0, WaitCount = 10; + u_int32_t TmpUlong = 0x80000000; + u_int32_t WriteDone; + + if (MultiFunSelBit > 7) { + return; + } + + TmpUlong |= MultiFunSelBit << 16; + + CSR_WRITE_4(sc, RE_CSIDR, RegData); + TmpUlong |= (u_int32_t) ByteEnAndAddr; + CSR_WRITE_4(sc, RE_CSIAR, TmpUlong); + + do { + DELAY(100); + + WriteDone = CSR_READ_4(sc, RE_CSIAR); + Timeout++; + } while (((WriteDone & 0x80000000) != 0) && (Timeout < WaitCount)); + + + DELAY(50); +} + +u_int32_t re_csi_other_fun_read( + struct re_softc *sc, + u_int8_t MultiFunSelBit, + u_int16_t ByteEnAndAddr) +{ + u_int32_t Timeout = 0, WaitCount = 10; + u_int32_t TmpUlong = 0x00000000; + u_int32_t ReadDone; + u_int32_t RetVal = 0xffffffff; + + if (MultiFunSelBit > 7) { + return 0xffffffff; + } + + TmpUlong |= MultiFunSelBit << 16; + + TmpUlong |= (u_int32_t) ByteEnAndAddr; + CSR_WRITE_4(sc, RE_CSIAR, TmpUlong); + + do { + DELAY(100); + + ReadDone = CSR_READ_4(sc, RE_CSIAR); + Timeout++; + } while (((ReadDone & 0x80000000) == 0)&& (Timeout < WaitCount)); + + RetVal = CSR_READ_4(sc, RE_CSIDR); + + DELAY(50); + + return RetVal; +} + +void re_csi_write( + struct re_softc *sc, + u_int16_t ByteEnAndAddr, + u_int32_t RegData) +{ + u_int8_t MultiFunSelBit; + + if (sc->re_type == MACFG_52 || sc->re_type == MACFG_53) { + MultiFunSelBit = 2; + } else if (sc->re_type == MACFG_60) { + MultiFunSelBit = 1; + } else { + MultiFunSelBit = 0; + } + + re_csi_other_fun_write(sc, MultiFunSelBit, ByteEnAndAddr, RegData); + +} + +u_int32_t re_csi_read( + struct re_softc *sc, + u_int16_t ByteEnAndAddr) +{ + u_int8_t MultiFunSelBit; + + if (sc->re_type == MACFG_52 || sc->re_type == MACFG_53) { + MultiFunSelBit = 2; + } else if (sc->re_type == MACFG_60) { + MultiFunSelBit = 1; + } else { + MultiFunSelBit = 0; + } + + return re_csi_other_fun_read(sc, MultiFunSelBit, ByteEnAndAddr); +} + +/* +u_int8_t re_csi_fun0_read_byte( + struct re_softc *sc, + u_int16_t RegAddr) +{ + u_int8_t RetVal = 0; + u_int32_t TmpUlong; + u_int16_t RegAlignAddr; + u_int8_t ShiftByte; + + RegAlignAddr = RegAddr & ~(0x3); + ShiftByte = RegAddr & (0x3); + + TmpUlong = re_csi_other_fun_read(sc, 0, RegAlignAddr | 0xF000); + TmpUlong >>= (8*ShiftByte); + RetVal = (u_int8_t)TmpUlong; + + return RetVal; +} +*/ + +static u_int16_t MappingPhyOcpAddress( + struct re_softc *sc, + u_int16_t PageNum, + u_int8_t RegNum) +{ + u_int16_t OcpPageNum = 0; + u_int8_t OcpRegNum = 0; + u_int16_t OcpPhyAddress = 0; + + if (PageNum == 0) { + OcpPageNum = 0x0A40 + (RegNum / 8); + OcpRegNum = 0x10 + (RegNum % 8); + } else { + OcpPageNum = PageNum; + OcpRegNum = RegNum; + } + + OcpPageNum <<= 4; + + if (OcpRegNum < 16) { + OcpPhyAddress = 0; + } else { + OcpRegNum -= 16; + OcpRegNum <<= 1; + + OcpPhyAddress = OcpPageNum + OcpRegNum; + } + + return OcpPhyAddress; +} + +u_int16_t re_real_ocp_phy_read( + struct re_softc *sc, + u_int16_t OcpRegAddr) +{ + u_int32_t Timeout = 0, WaitCount = 100; + u_int32_t TmpUlong; + u_int16_t RetVal; + + TmpUlong = OcpRegAddr / 2; + TmpUlong <<= 16; + + CSR_WRITE_4(sc, RE_PHYOCPACCESS, TmpUlong); + + do { + DELAY(1); + + TmpUlong = CSR_READ_4(sc, RE_PHYOCPACCESS); + + Timeout++; + } while ((!(TmpUlong & PHYAR_Flag)) && (Timeout < WaitCount)); + + RetVal = (u_int16_t)TmpUlong; + + return RetVal; +} + +u_int16_t re_ocp_phy_read( + struct re_softc *sc, + u_int16_t PhyPage, + u_int8_t PhyRegNum) +{ + u_int16_t OcpRegAddr; + u_int16_t RetVal; + + OcpRegAddr = MappingPhyOcpAddress(sc, PhyPage, PhyRegNum); + + if (OcpRegAddr % 2) { + u_int16_t tmpUshort; + + tmpUshort = re_real_ocp_phy_read(sc, OcpRegAddr); + tmpUshort &= 0xFF00; + tmpUshort >>= 8; + RetVal = tmpUshort; + + + tmpUshort = re_real_ocp_phy_read(sc, OcpRegAddr + 1); + tmpUshort &= 0x00FF; + tmpUshort <<= 8; + RetVal |= tmpUshort; + } else { + RetVal = re_real_ocp_phy_read(sc, OcpRegAddr); + } + + return RetVal; +} + +void re_real_ocp_phy_write( + struct re_softc *sc, + u_int16_t OcpRegAddr, + u_int16_t RegData) +{ + u_int32_t Timeout = 0, WaitCount = 100; + u_int32_t TmpUlong; + + TmpUlong = OcpRegAddr / 2; + TmpUlong <<= 16; + TmpUlong += RegData; + TmpUlong |= BIT_31; + + CSR_WRITE_4(sc, RE_PHYOCPACCESS, TmpUlong); + + do { + DELAY(1); + + TmpUlong = CSR_READ_4(sc, RE_PHYOCPACCESS); + + Timeout++; + } while ((TmpUlong & PHYAR_Flag) && (Timeout < WaitCount)); +} + +void re_ocp_phy_write( + struct re_softc *sc, + u_int16_t PhyPage, + u_int8_t PhyRegNum, + u_int16_t RegData) +{ + u_int16_t OcpRegAddr; + + OcpRegAddr = MappingPhyOcpAddress(sc, PhyPage, PhyRegNum); + + if (OcpRegAddr % 2) { + u_int16_t tmpUshort; + + tmpUshort = re_real_ocp_phy_read(sc, OcpRegAddr); + tmpUshort &= 0x00FF; + tmpUshort |= (RegData << 8); + re_real_ocp_phy_write(sc, OcpRegAddr, tmpUshort); + tmpUshort = re_real_ocp_phy_read(sc, OcpRegAddr + 1); + tmpUshort &= 0xFF00; + tmpUshort |= (RegData >> 8); + re_real_ocp_phy_write(sc, OcpRegAddr + 1, tmpUshort); + } else { + re_real_ocp_phy_write(sc, OcpRegAddr, RegData); + } +} + +void re_mac_ocp_write( + struct re_softc *sc, + u_int16_t ExtRegAddr, + u_int16_t RegData) +{ + u_int32_t TmpUlong; + + TmpUlong = ExtRegAddr / 2; + TmpUlong <<= 16; + TmpUlong += RegData; + TmpUlong |= BIT_31; + + CSR_WRITE_4(sc, RE_MCUACCESS, TmpUlong); +} + +u_int16_t re_mac_ocp_read( + struct re_softc *sc, + u_int16_t ExtRegAddr) +{ + u_int32_t TmpUlong; + u_int16_t RetVal; + + TmpUlong = ExtRegAddr / 2; + TmpUlong <<= 16; + + CSR_WRITE_4(sc, RE_MCUACCESS, TmpUlong); + TmpUlong = CSR_READ_4(sc, RE_MCUACCESS); + RetVal = (u_int16_t)TmpUlong; + + return RetVal; +} + +static u_int32_t real_ocp_read(struct re_softc *sc, u_int16_t addr, u_int8_t len) +{ + int i, val_shift, shift = 0; + u_int32_t value1 = 0, value2 = 0, mask; + + if (len > 4 || len <= 0) + return -1; + + while (len > 0) { + val_shift = addr % 4; + addr = addr & ~0x3; + + CSR_WRITE_4(sc, RE_OCPAR, (0x0F<<12) | (addr&0xFFF)); + + for (i = 0; i < 20; i++) { + DELAY(100); + if (CSR_READ_4(sc, RE_OCPAR) & OCPAR_Flag) + break; + } + + if (len == 1) mask = (0xFF << (val_shift * 8)) & 0xFFFFFFFF; + else if (len == 2) mask = (0xFFFF << (val_shift * 8)) & 0xFFFFFFFF; + else if (len == 3) mask = (0xFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; + else mask = (0xFFFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; + + value1 = CSR_READ_4(sc, RE_OCPDR) & mask; + value2 |= (value1 >> val_shift * 8) << shift * 8; + + if (len <= 4 - val_shift) { + len = 0; + } else { + len -= (4 - val_shift); + shift = 4 - val_shift; + addr += 4; + } + } + + DELAY(20); + + return value2; +} + +static u_int32_t re_ocp_read_with_oob_base_address(struct re_softc *sc, u_int16_t addr, u_int8_t len, const u_int32_t base_address) +{ + return re_eri_read_with_oob_base_address(sc, addr, len, ERIAR_OOB, base_address); +} + +static u_int32_t re_ocp_read(struct re_softc *sc, u_int16_t addr, u_int8_t len) +{ + u_int32_t value = 0; + + if (!sc->AllowAccessDashOcp) + return 0xffffffff; + + if (sc->HwSuppOcpChannelVer == 1) + value = real_ocp_read(sc, addr, len); + else if (sc->HwSuppOcpChannelVer == 2) + value = re_eri_read(sc, addr, len, ERIAR_OOB); + else if (sc->HwSuppOcpChannelVer == 3) + value = re_ocp_read_with_oob_base_address(sc, addr, len, RTL8168FP_OOBMAC_BASE); + + return value; +} + +static int real_ocp_write(struct re_softc *sc, u_int16_t addr, u_int8_t len, u_int32_t value) +{ + int i, val_shift, shift = 0; + u_int32_t value1 = 0, mask; + + if (len > 4 || len <= 0) + return -1; + + while (len > 0) { + val_shift = addr % 4; + addr = addr & ~0x3; + + if (len == 1) mask = (0xFF << (val_shift * 8)) & 0xFFFFFFFF; + else if (len == 2) mask = (0xFFFF << (val_shift * 8)) & 0xFFFFFFFF; + else if (len == 3) mask = (0xFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; + else mask = (0xFFFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; + + value1 = re_ocp_read(sc, addr, 4) & ~mask; + value1 |= ((value << val_shift * 8) >> shift * 8); + + CSR_WRITE_4(sc, RE_OCPDR, value1); + CSR_WRITE_4(sc, RE_OCPAR, OCPAR_Flag | (0x0F<<12) | (addr&0xFFF)); + + for (i = 0; i < 10; i++) { + DELAY(100); + + /* Check if the RTL8168 has completed ERI write */ + if (!(CSR_READ_4(sc, RE_OCPAR) & OCPAR_Flag)) + break; + } + + if (len <= 4 - val_shift) { + len = 0; + } else { + len -= (4 - val_shift); + shift = 4 - val_shift; + addr += 4; + } + } + + DELAY(20); + + return 0; +} + +static int re_ocp_write_with_oob_base_address(struct re_softc *sc, u_int16_t addr, u_int8_t len, u_int32_t value, const u_int32_t base_address) +{ + return re_eri_write_with_oob_base_address(sc, addr, len, value, ERIAR_OOB, base_address); +} + +static void re_ocp_write(struct re_softc *sc, u_int16_t addr, u_int8_t len, u_int32_t value) +{ + if (!sc->AllowAccessDashOcp) + return; + + if (sc->HwSuppOcpChannelVer == 1) + real_ocp_write(sc, addr, len, value); + else if (sc->HwSuppOcpChannelVer == 2) + re_eri_write(sc, addr, len, value, ERIAR_OOB); + else if (sc->HwSuppOcpChannelVer == 3) + re_ocp_write_with_oob_base_address(sc, addr, len, value, RTL8168FP_OOBMAC_BASE); +} + +static void OOB_mutex_lock(struct re_softc *sc) +{ + u_int8_t reg_16, reg_a0; + u_int32_t wait_cnt_0, wait_Cnt_1; + u_int16_t ocp_reg_mutex_ib; + u_int16_t ocp_reg_mutex_oob; + u_int16_t ocp_reg_mutex_prio; + + if (!sc->re_dash) + return; + + switch (sc->re_type) { + case MACFG_63: + case MACFG_64: + case MACFG_65: + ocp_reg_mutex_oob = 0x16; + ocp_reg_mutex_ib = 0x17; + ocp_reg_mutex_prio = 0x9C; + break; + case MACFG_66: + ocp_reg_mutex_oob = 0x06; + ocp_reg_mutex_ib = 0x07; + ocp_reg_mutex_prio = 0x9C; + break; + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_80: + case MACFG_81: + case MACFG_84: + case MACFG_85: + ocp_reg_mutex_oob = 0x110; + ocp_reg_mutex_ib = 0x114; + ocp_reg_mutex_prio = 0x11C; + break; + default: + return; + } + + re_ocp_write(sc, ocp_reg_mutex_ib, 1, BIT_0); + reg_16 = re_ocp_read(sc, ocp_reg_mutex_oob, 1); + wait_cnt_0 = 0; + while(reg_16) { + reg_a0 = re_ocp_read(sc, ocp_reg_mutex_prio, 1); + if (reg_a0) { + re_ocp_write(sc, ocp_reg_mutex_ib, 1, 0x00); + reg_a0 = re_ocp_read(sc, ocp_reg_mutex_prio, 1); + wait_Cnt_1 = 0; + while(reg_a0) { + reg_a0 = re_ocp_read(sc, ocp_reg_mutex_prio, 1); + + wait_Cnt_1++; + + if (wait_Cnt_1 > 2000) + break; + }; + re_ocp_write(sc, ocp_reg_mutex_ib, 1, BIT_0); + + } + reg_16 = re_ocp_read(sc, ocp_reg_mutex_oob, 1); + + wait_cnt_0++; + + if (wait_cnt_0 > 2000) + break; + }; +} + +static void OOB_mutex_unlock(struct re_softc *sc) +{ + u_int16_t ocp_reg_mutex_ib; + u_int16_t ocp_reg_mutex_prio; + + if (!sc->re_dash) + return; + + switch (sc->re_type) { + case MACFG_63: + case MACFG_64: + case MACFG_65: + ocp_reg_mutex_ib = 0x17; + ocp_reg_mutex_prio = 0x9C; + break; + case MACFG_66: + ocp_reg_mutex_ib = 0x07; + ocp_reg_mutex_prio = 0x9C; + break; + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_80: + case MACFG_81: + case MACFG_84: + case MACFG_85: + ocp_reg_mutex_ib = 0x114; + ocp_reg_mutex_prio = 0x11C; + break; + default: + return; + } + + re_ocp_write(sc, ocp_reg_mutex_prio, 1, BIT_0); + re_ocp_write(sc, ocp_reg_mutex_ib, 1, 0x00); +} + +static u_int32_t re_get_dash_fw_ver(struct re_softc *sc) +{ + if (HW_DASH_SUPPORT_GET_FIRMWARE_VERSION(sc)) + return re_ocp_read(sc, OCP_REG_FIRMWARE_MAJOR_VERSION, 4); + else + return 0xffffffff; +} + +static int _re_check_dash(struct re_softc *sc) +{ + if (HW_DASH_SUPPORT_DASH(sc) == FALSE) + return 0; + + if (!sc->AllowAccessDashOcp) + return 0; + + if (HW_DASH_SUPPORT_TYPE_2(sc) || HW_DASH_SUPPORT_TYPE_3(sc) || + HW_DASH_SUPPORT_TYPE_4(sc)) { + return !!(re_ocp_read(sc, 0x128, 1) & BIT_0); + } else if (HW_DASH_SUPPORT_TYPE_1(sc)) { + if (sc->re_type == MACFG_66) + return !!(re_ocp_read(sc, 0xb8, 2) & BIT_15); + else + return !!(re_ocp_read(sc, 0x10, 2) & BIT_15); + } + + return 0; +} + +static int re_check_dash(struct re_softc *sc) +{ + if (_re_check_dash(sc)) { + u_int32_t ver = re_get_dash_fw_ver(sc); + sc->re_dash_fw_ver = ver; + if (!(ver == 0 || ver == 0xffffffff)) + return 1; + } + + return 0; +} + +static void re_wait_dash_fw_ready(struct re_softc *sc) +{ + int timeout; + + if (!HW_DASH_SUPPORT_DASH(sc)) + return; + + if (!sc->re_dash) + return; + + if (HW_DASH_SUPPORT_TYPE_2(sc) || HW_DASH_SUPPORT_TYPE_3(sc) || + HW_DASH_SUPPORT_TYPE_4(sc)) { + for (timeout = 0; timeout < 10; timeout++) { + DELAY(10000); + if (re_ocp_read(sc, 0x124, 1) & BIT_0) + break; + } + } else { + u_int32_t reg; + + if (sc->re_type == MACFG_66) + reg = 0xB8; + else + reg = 0x10; + + for (timeout = 0; timeout < 10; timeout++) { + DELAY(10000); + if (re_ocp_read(sc, reg, 2) & BIT_11) + break; + } + } +} + +static void re_notify_dash_oob_dp(struct re_softc *sc, u_int32_t cmd) +{ + if (!HW_DASH_SUPPORT_TYPE_1(sc)) + return; + + if (sc->re_type == MACFG_66 && cmd == OOB_CMD_DRIVER_START) + CSR_WRITE_1(sc, RE_TwiCmdReg, CSR_READ_1(sc, RE_TwiCmdReg) | BIT_7); + + re_eri_write(sc, 0xE8, 1, (u_int8_t)cmd, ERIAR_ExGMAC); + + re_ocp_write(sc, 0x30, 1, 0x01); + + if (sc->re_type == MACFG_66 && cmd == OOB_CMD_DRIVER_STOP) + CSR_WRITE_1(sc, RE_TwiCmdReg, CSR_READ_1(sc, RE_TwiCmdReg) & ~BIT_7); +} + +static void re_notify_dash_oob_cmac(struct re_softc *sc, u_int32_t cmd) +{ + if (!HW_DASH_SUPPORT_CMAC(sc)) + return; + + re_ocp_write(sc, 0x180, 1, cmd); + re_ocp_write(sc, 0x30, 1, re_ocp_read(sc, 0x30, 1) | BIT_0); +} + +static void re_notify_dash_oob_ipc2(struct re_softc *sc, u_int32_t cmd) +{ + if (!HW_DASH_SUPPORT_IPC2(sc)) + return; + + re_ocp_write(sc, RE_IB2SOC_DATA, 4, cmd); + re_ocp_write(sc, RE_IB2SOC_CMD, 4, 0x00); + re_ocp_write(sc, RE_IB2SOC_SET, 4, 0x01); +} + +static void re_notify_dash_oob(struct re_softc *sc, u_int32_t cmd) +{ + switch (sc->HwSuppDashVer) { + case 1: + return re_notify_dash_oob_dp(sc, cmd); + case 2: + case 3: + return re_notify_dash_oob_cmac(sc, cmd); + case 4: + return re_notify_dash_oob_ipc2(sc, cmd); + default: + return; + } +} + +void re_driver_start(struct re_softc *sc) +{ + if (!HW_DASH_SUPPORT_DASH(sc)) + return; + + if (!sc->AllowAccessDashOcp) + return; + + re_notify_dash_oob(sc, OOB_CMD_DRIVER_START); + + re_wait_dash_fw_ready(sc); +} + +void re_driver_stop(struct re_softc *sc) +{ + if (!HW_DASH_SUPPORT_DASH(sc)) + return; + + if (!sc->AllowAccessDashOcp) + return; + + re_notify_dash_oob(sc, OOB_CMD_DRIVER_STOP); + + re_wait_dash_fw_ready(sc); +} + +/*----------------------------------------------------------------------------*/ +/* 8139 (CR9346) 9346 command register bits (offset 0x50, 1 byte)*/ +/*----------------------------------------------------------------------------*/ +#define CR9346_EEDO 0x01 /* 9346 data out*/ +#define CR9346_EEDI 0x02 /* 9346 data in*/ +#define CR9346_EESK 0x04 /* 9346 serial clock*/ +#define CR9346_EECS 0x08 /* 9346 chip select*/ +#define CR9346_EEM0 0x40 /* select 8139 operating mode*/ +#define CR9346_EEM1 0x80 /* 00: normal*/ +#define CR9346_CFGRW 0xC0 /* Config register write*/ +#define CR9346_NORM 0x00 + +/*----------------------------------------------------------------------------*/ +/* EEPROM bit definitions(EEPROM control register bits)*/ +/*----------------------------------------------------------------------------*/ +#define EN_TRNF 0x10 /* Enable turnoff*/ +#define EEDO CR9346_EEDO /* EEPROM data out*/ +#define EEDI CR9346_EEDI /* EEPROM data in (set for writing data)*/ +#define EECS CR9346_EECS /* EEPROM chip select (1=high, 0=low)*/ +#define EESK CR9346_EESK /* EEPROM shift clock (1=high, 0=low)*/ + +/*----------------------------------------------------------------------------*/ +/* EEPROM opcodes*/ +/*----------------------------------------------------------------------------*/ +#define EEPROM_READ_OPCODE 06 +#define EEPROM_WRITE_OPCODE 05 +#define EEPROM_ERASE_OPCODE 07 +#define EEPROM_EWEN_OPCODE 19 /* Erase/write enable*/ +#define EEPROM_EWDS_OPCODE 16 /* Erase/write disable*/ + +#define CLOCK_RATE 50 /* us*/ + +#define RaiseClock(_sc,_x) \ + (_x) = (_x) | EESK; \ + CSR_WRITE_1((_sc), RE_EECMD, (_x)); \ + DELAY(CLOCK_RATE); + +#define LowerClock(_sc,_x) \ + (_x) = (_x) & ~EESK; \ + CSR_WRITE_1((_sc), RE_EECMD, (_x)); \ + DELAY(CLOCK_RATE); + +/* + * Shift out bit(s) to the EEPROM. + */ +static void re_eeprom_ShiftOutBits(struct re_softc *sc, int data, int count) +{ + u_int16_t x, mask; + + mask = 0x01 << (count - 1); + x = CSR_READ_1(sc, RE_EECMD); + + x &= ~(EEDO | EEDI); + + do { + x &= ~EEDI; + if (data & mask) + x |= EEDI; + + CSR_WRITE_1(sc, RE_EECMD, x); + DELAY(CLOCK_RATE); + RaiseClock(sc,x); + LowerClock(sc,x); + mask = mask >> 1; + } while (mask); + + x &= ~EEDI; + CSR_WRITE_1(sc, RE_EECMD, x); +} + +/* + * Shift in bit(s) from the EEPROM. + */ +static u_int16_t re_eeprom_ShiftInBits(struct re_softc *sc) +{ + u_int16_t x,d,i; + x = CSR_READ_1(sc, RE_EECMD); + + x &= ~(EEDO | EEDI); + d = 0; + + for (i=0; i<16; i++) { + d = d << 1; + RaiseClock(sc, x); + + x = CSR_READ_1(sc, RE_EECMD); + + x &= ~(EEDI); + if (x & EEDO) + d |= 1; + + LowerClock(sc, x); + } + + return d; +} + +/* + * Clean up EEprom read/write setting + */ +static void re_eeprom_EEpromCleanup(struct re_softc *sc) +{ + u_int16_t x; + x = CSR_READ_1(sc, RE_EECMD); + + x &= ~(EECS | EEDI); + CSR_WRITE_1(sc, RE_EECMD, x); + + RaiseClock(sc, x); + LowerClock(sc, x); +} + +/* + * Read a word of data stored in the EEPROM at address 'addr.' + */ +static void re_eeprom_getword(struct re_softc *sc, int addr, u_int16_t *dest) +{ + u_int16_t x; + + /* select EEPROM, reset bits, set EECS*/ + x = CSR_READ_1(sc, RE_EECMD); + + x &= ~(EEDI | EEDO | EESK | CR9346_EEM0); + x |= CR9346_EEM1 | EECS; + CSR_WRITE_1(sc, RE_EECMD, x); + + /* write the read opcode and register number in that order*/ + /* The opcode is 3bits in length, reg is 6 bits long*/ + re_eeprom_ShiftOutBits(sc, EEPROM_READ_OPCODE, 3); + + if (CSR_READ_4(sc, RE_RXCFG) & RE_RXCFG_RX_9356SEL) + re_eeprom_ShiftOutBits(sc, addr,8); /*93c56=8*/ + else + re_eeprom_ShiftOutBits(sc, addr,6); /*93c46=6*/ + + /* Now read the data (16 bits) in from the selected EEPROM word*/ + *dest=re_eeprom_ShiftInBits(sc); + + re_eeprom_EEpromCleanup(sc); + return; +} + +/* + * Read a sequence of words from the EEPROM. + */ +static void re_read_eeprom(struct re_softc *sc, caddr_t dest, int off, int cnt, + int swap) +{ + int i; + u_int16_t word = 0, *ptr; + + for (i = 0; i < cnt; i++) { + re_eeprom_getword(sc, off + i, &word); + ptr = (u_int16_t *)(dest + (i * 2)); + if (swap) + *ptr = ntohs(word); + else + *ptr = word; + } + + return; +} diff --git a/import/if_rereg.h b/import/if_rereg.h new file mode 100644 index 0000000..7ce8c74 --- /dev/null +++ b/import/if_rereg.h @@ -0,0 +1,1384 @@ +/* + * Copyright (c) 1997, 1998 + * Bill Paul . All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgment: + * This product includes software developed by Bill Paul. + * 4. Neither the name of the author nor the names of any co-contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/re/if_rereg.h,v 1.14.2.1 2001/07/19 18:33:07 wpaul Exp $ + */ + +#include +#include + +/*#define VERSION(_MainVer,_MinorVer) ((_MainVer)*10+(_MinorVer))*/ +/*#define OS_VER VERSION(5,1)*/ +#if __FreeBSD_version < 500000 +#define VERSION(_MainVer,_MinorVer) ((_MainVer)*100000+(_MinorVer)*10000) +#else +#define VERSION(_MainVer,_MinorVer) ((_MainVer)*100000+(_MinorVer)*1000) +#endif +#define OS_VER __FreeBSD_version + +#ifndef M_DONTWAIT +#define M_DONTWAIT M_NOWAIT +#endif + +#if OS_VER>=VERSION(4,0) +#define RE_USE_NEW_CALLOUT_FUN 1 +#endif + + +/* + * RealTek RTL8110S/SB/SC register offsets + */ + +#define RE_TPPOLL 0x0038 /* transmit priority polling */ + +/* + * RealTek RTL8110S/SB/SC register contents + */ + +/* Transmit Priority Polling --- 0x40 */ +#define RE_HPQ 0x80 /* high priority queue polling */ +#define RE_NPQ 0x40 /* normal priority queue polling */ +#define RE_FSWInt 0x01 /* Forced Software Interrupt */ +#define RE_NPQ_8125 0x01 + + +/* + * RealTek 8129/8139 register offsets + */ + +#define RE_IDR0 0x0000 /* ID register 0 (station addr) */ +#define RE_IDR1 0x0001 /* Must use 32-bit accesses (?) */ +#define RE_IDR2 0x0002 +#define RE_IDR3 0x0003 +#define RE_IDR4 0x0004 +#define RE_IDR5 0x0005 +/* 0006-0007 reserved */ +#define RE_MAR0 0x0008 /* Multicast hash table */ +#define RE_MAR1 0x0009 +#define RE_MAR2 0x000A +#define RE_MAR3 0x000B +#define RE_MAR4 0x000C +#define RE_MAR5 0x000D +#define RE_MAR6 0x000E +#define RE_MAR7 0x000F + +#define RE_DUMPSTATS_LO 0x0010 /* counter dump command register */ +#define RE_DUMPSTATS_HI 0x0014 /* counter dump command register */ + +#define RE_TXSTAT0 0x0010 /* status of TX descriptor 0 */ +#define RE_TXSTAT1 0x0014 /* status of TX descriptor 1 */ +#define RE_TXSTAT2 0x0018 /* status of TX descriptor 2 */ +#define RE_CUSTOM_LED 0x0018 +#define RE_TXSTAT3 0x001C /* status of TX descriptor 3 */ + +#define RE_TXADDR0 0x0020 /* address of TX descriptor 0 */ +#define RE_TXADDR1 0x0024 /* address of TX descriptor 1 */ +#define RE_TXADDR2 0x0028 /* address of TX descriptor 2 */ +#define RE_TXADDR3 0x002C /* address of TX descriptor 3 */ + +#define RE_RXADDR 0x0030 /* RX ring start address */ +#define RE_COMMAND 0x0037 /* command register */ +#define RE_CURRXADDR 0x0038 /* current address of packet read */ +#define RE_CURRXBUF 0x003A /* current RX buffer address */ +#define RE_IMR 0x003C /* interrupt mask register */ +#define RE_ISR 0x003E /* interrupt status register */ +#define RE_TXCFG 0x0040 /* transmit config */ +#define RE_RXCFG 0x0044 /* receive config */ +#define RE_TIMERCNT 0x0048 /* timer count register */ +#define RE_MISSEDPKT 0x004C /* missed packet counter */ +#define RE_EECMD 0x0050 /* EEPROM command register */ +#define RE_CFG0 0x0051 /* config register #0 */ +#define RE_CFG1 0x0052 /* config register #1 */ +#define RE_CFG2 0x0053 /* config register #2 */ +#define RE_CFG3 0x0054 /* config register #3 */ +#define RE_CFG4 0x0055 /* config register #4 */ +#define RE_CFG5 0x0056 /* config register #5 */ +/* 0053-0057 reserved */ +#define RE_TDFNR 0x0057 /* Tx descriptor fetch number */ +#define RE_MEDIASTAT 0x0058 /* media status register (8139) */ +#define RE_TIMERINT 0x0058 /* timer interrupt register */ +/* 0059-005A reserved */ +#define RE_MII 0x005A /* 8129 chip only */ +#define RE_HALTCLK 0x005B +#define RE_MULTIINTR 0x005C /* multiple interrupt */ +#define RE_PCIREV 0x005E /* PCI revision value */ +/* 005F reserved */ +#define RE_PHYAR 0x0060 /* PHY register access */ +#define RE_CSIDR 0x0064 +#define RE_CSIAR 0x0068 +#define RE_PHY_STATUS 0x006C /* PHY status */ +#define RE_MACDBG 0x006D +#define RE_PMCH 0x006F /* 8 bits */ +#define RE_ERIDR 0x0070 +#define RE_ERIAR 0x0074 +#define RE_EPHY_RXER_NUM 0x007C +#define RE_EPHYAR 0x0080 +#define RE_MCUACCESS 0x00B0 +#define RE_OCPDR 0x00B0 +#define RE_OCPAR 0x00B4 +#define RE_SecMAC0 0x00B4 +#define RE_SecMAC4 0x00B8 +#define RE_PHYOCPACCESS 0x00B8 +#define RE_DBG_reg 0x00D1 +#define RE_TwiCmdReg 0x00D2 +#define RE_MCU_CMD 0x00D3 +#define RE_RxMaxSize 0x00DA +#define RE_EFUSEAR 0x00DC +#define RE_CPlusCmd 0x00E0 +#define RE_IntrMitigate 0x00E2 +#define RE_MTPS 0x00EC +#define RE_CMAC_IBCR0 0x00F8 +#define RE_CMAC_IBCR2 0x00F9 +#define RE_CMAC_IBIMR0 0x00FA +#define RE_CMAC_IBISR0 0x00FB +/* MAC OCP */ +#define RE_EEE_TXIDLE_TIMER_8168 0xE048 +//8125 +#define RE_INT_CFG0_8125 0x34 +#define RE_INT_CFG1_8125 0x7A +#define RE_IMR0_8125 0x38 +#define RE_ISR0_8125 0x3C +#define RE_TPPOLL_8125 0x90 +#define RE_BACKUP_ADDR0_8125 0x19E0 +#define RE_BACKUP_ADDR4_8125 0X19E4 +#define RE_EEE_TXIDLE_TIMER_8125 0x6048 + +/* ERI access */ +#define ERIAR_Flag 0x80000000 +#define ERIAR_Write 0x80000000 +#define ERIAR_Read 0x00000000 +#define ERIAR_Addr_Align 4 /* ERI access register address must be 4 byte alignment */ +#define ERIAR_ExGMAC 0 +#define ERIAR_MSIX 1 +#define ERIAR_ASF 2 +#define ERIAR_Type_shift 16 +#define ERIAR_ByteEn 0x0f +#define ERIAR_ByteEn_shift 12 +#define ERIAR_OOB 2 + +/* IPC2 */ +#define RE_IB2SOC_SET 0x0010 +#define RE_IB2SOC_DATA 0x0014 +#define RE_IB2SOC_CMD 0x0018 +#define RE_IB2SOC_IMR 0x001C + + +/* Direct PHY access registers only available on 8139 */ +#define RE_BMCR 0x0062 /* PHY basic mode control */ +#define RE_BMSR 0x0064 /* PHY basic mode status */ +#define RE_ANAR 0x0066 /* PHY autoneg advert */ +#define RE_LPAR 0x0068 /* PHY link partner ability */ +#define RE_ANER 0x006A /* PHY autoneg expansion */ + +#define RE_DISCCNT 0x006C /* disconnect counter */ +#define RE_FALSECAR 0x006E /* false carrier counter */ +#define RE_NWAYTST 0x0070 /* NWAY test register */ +#define RE_RX_ER 0x0072 /* RX_ER counter */ +#define RE_CSCFG 0x0074 /* CS configuration register */ +#define RE_LDPS 0x0082 /* Link Down Power Saving */ +#define RE_CPCR 0x00E0 +#define RE_IM 0x00E2 + + +/* + * TX config register bits + */ +#define RE_TXCFG_CLRABRT 0x00000001 /* retransmit aborted pkt */ +#define RE_TXCFG_MAXDMA 0x00000700 /* max DMA burst size */ +#define RE_TXCFG_CRCAPPEND 0x00010000 /* CRC append (0 = yes) */ +#define RE_TXCFG_LOOPBKTST 0x00060000 /* loopback test */ +#define RE_TXCFG_IFG 0x03000000 /* interframe gap */ + +#define RE_TXDMA_16BYTES 0x00000000 +#define RE_TXDMA_32BYTES 0x00000100 +#define RE_TXDMA_64BYTES 0x00000200 +#define RE_TXDMA_128BYTES 0x00000300 +#define RE_TXDMA_256BYTES 0x00000400 +#define RE_TXDMA_512BYTES 0x00000500 +#define RE_TXDMA_1024BYTES 0x00000600 +#define RE_TXDMA_2048BYTES 0x00000700 + +/* + * Transmit descriptor status register bits. + */ +#define RE_TXSTAT_LENMASK 0x00001FFF +#define RE_TXSTAT_OWN 0x00002000 +#define RE_TXSTAT_TX_UNDERRUN 0x00004000 +#define RE_TXSTAT_TX_OK 0x00008000 +#define RE_TXSTAT_COLLCNT 0x0F000000 +#define RE_TXSTAT_CARR_HBEAT 0x10000000 +#define RE_TXSTAT_OUTOFWIN 0x20000000 +#define RE_TXSTAT_TXABRT 0x40000000 +#define RE_TXSTAT_CARRLOSS 0x80000000 + +/* + * Interrupt status register bits. + */ +#define RE_ISR_RX_OK 0x0001 +#define RE_ISR_RX_ERR 0x0002 +#define RE_ISR_TX_OK 0x0004 +#define RE_ISR_TX_ERR 0x0008 +#define RE_ISR_RX_OVERRUN 0x0010 +#define RE_ISR_PKT_UNDERRUN 0x0020 +#define RE_ISR_LINKCHG 0x0020 +#define RE_ISR_FIFO_OFLOW 0x0040 +#define RE_ISR_TDU 0x0080 +#define RE_ISR_PCS_TIMEOUT 0x4000 /* 8129 only */ +#define RE_ISR_SYSTEM_ERR 0x8000 + +/* +#define RE_INTRS \ + (RE_ISR_TX_OK|RE_ISR_RX_OK|RE_ISR_RX_ERR|RE_ISR_TX_ERR| \ + RE_ISR_RX_OVERRUN|RE_ISR_PKT_UNDERRUN|RE_ISR_FIFO_OFLOW| \ + RE_ISR_PCS_TIMEOUT|RE_ISR_SYSTEM_ERR) +*/ + +#define RE_INTRS \ + (RE_ISR_TX_OK|RE_ISR_RX_OK|RE_ISR_RX_ERR|RE_ISR_TX_ERR| \ + RE_ISR_RX_OVERRUN|RE_ISR_PKT_UNDERRUN|RE_ISR_TDU| \ + RE_ISR_PCS_TIMEOUT|RE_ISR_SYSTEM_ERR) + +/* + * Media status register. (8139 only) + */ +#define RE_MEDIASTAT_RXPAUSE 0x01 +#define RE_MEDIASTAT_TXPAUSE 0x02 +#define RE_MEDIASTAT_LINK 0x04 +#define RE_MEDIASTAT_SPEED10 0x08 +#define RE_MEDIASTAT_RXFLOWCTL 0x40 /* duplex mode */ +#define RE_MEDIASTAT_TXFLOWCTL 0x80 /* duplex mode */ + +/* + * Receive config register. + */ +#define RE_RXCFG_RX_ALLPHYS 0x00000001 /* accept all nodes */ +#define RE_RXCFG_RX_INDIV 0x00000002 /* match filter */ +#define RE_RXCFG_RX_MULTI 0x00000004 /* accept all multicast */ +#define RE_RXCFG_RX_BROAD 0x00000008 /* accept all broadcast */ +#define RE_RXCFG_RX_RUNT 0x00000010 +#define RE_RXCFG_RX_ERRPKT 0x00000020 +#define RE_RXCFG_RX_9356SEL 0x00000040 +#define RE_RXCFG_WRAP 0x00000080 +#define RE_RXCFG_MAXDMA 0x00000700 +#define RE_RXCFG_BUFSZ 0x00001800 + +#define RE_RXDMA_16BYTES 0x00000000 +#define RE_RXDMA_32BYTES 0x00000100 +#define RE_RXDMA_64BYTES 0x00000200 +#define RE_RXDMA_128BYTES 0x00000300 +#define RE_RXDMA_256BYTES 0x00000400 +#define RE_RXDMA_512BYTES 0x00000500 +#define RE_RXDMA_1024BYTES 0x00000600 +#define RE_RXDMA_UNLIMITED 0x00000700 + +#define RE_RXBUF_8 0x00000000 +#define RE_RXBUF_16 0x00000800 +#define RE_RXBUF_32 0x00001000 +#define RE_RXBUF_64 0x00001800 + +#define RE_RXRESVERED 0x0000E000 + +/* + * Bits in RX status header (included with RX'ed packet + * in ring buffer). + */ +#define RE_RXSTAT_RXOK 0x00000001 +#define RE_RXSTAT_ALIGNERR 0x00000002 +#define RE_RXSTAT_CRCERR 0x00000004 +#define RE_RXSTAT_GIANT 0x00000008 +#define RE_RXSTAT_RUNT 0x00000010 +#define RE_RXSTAT_BADSYM 0x00000020 +#define RE_RXSTAT_BROAD 0x00002000 +#define RE_RXSTAT_INDIV 0x00004000 +#define RE_RXSTAT_MULTI 0x00008000 +#define RE_RXSTAT_LENMASK 0xFFFF0000 + +#define RE_RXSTAT_UNFINISHED 0xFFF0 /* DMA still in progress */ +/* + * Command register. + */ +#define RE_CMD_EMPTY_RXBUF 0x0001 +#define RE_CMD_TX_ENB 0x0004 +#define RE_CMD_RX_ENB 0x0008 +#define RE_CMD_RESET 0x0010 +#define RE_CMD_STOP_REQ 0x0080 + +/* + * EEPROM control register + */ +#define RE_EE_DATAOUT 0x01 /* Data out */ +#define RE_EE_DATAIN 0x02 /* Data in */ +#define RE_EE_CLK 0x04 /* clock */ +#define RE_EE_SEL 0x08 /* chip select */ +#define RE_EE_MODE (0x40|0x80) + +#define RE_EEMODE_OFF 0x00 +#define RE_EEMODE_AUTOLOAD 0x40 +#define RE_EEMODE_PROGRAM 0x80 +#define RE_EEMODE_WRITECFG (0x80|0x40) + +/* 9346 EEPROM commands */ +#define RE_EECMD_WRITE 0x140 +#define RE_EECMD_READ 0x180 +#define RE_EECMD_ERASE 0x1c0 + +#define RE_EE_ID 0x00 +#define RE_EE_PCI_VID 0x01 +#define RE_EE_PCI_DID 0x02 +/* Location of station address inside EEPROM */ +#define RE_EE_EADDR 0x07 + +/* + * MII register (8129 only) + */ +#define RE_MII_CLK 0x01 +#define RE_MII_DATAIN 0x02 +#define RE_MII_DATAOUT 0x04 +#define RE_MII_DIR 0x80 /* 0 == input, 1 == output */ + +/* + * Config 0 register + */ +#define RE_CFG0_ROM0 0x01 +#define RE_CFG0_ROM1 0x02 +#define RE_CFG0_ROM2 0x04 +#define RE_CFG0_PL0 0x08 +#define RE_CFG0_PL1 0x10 +#define RE_CFG0_10MBPS 0x20 /* 10 Mbps internal mode */ +#define RE_CFG0_PCS 0x40 +#define RE_CFG0_SCR 0x80 + +/* + * Config 1 register + */ +#define RE_CFG1_PME 0x01 +#define RE_CFG1_IOMAP 0x04 +#define RE_CFG1_MEMMAP 0x08 +#define RE_CFG1_RSVD 0x10 +#define RE_CFG1_LED0 0x40 +#define RE_CFG1_LED1 0x80 + +/* + * Config 3 register + */ +#define RL_CFG3_GRANTSEL 0x80 +#define RL_CFG3_WOL_MAGIC 0x20 +#define RL_CFG3_WOL_LINK 0x10 +#define RL_CFG3_JUMBO_EN0 0x04 /* RTL8168C or later. */ +#define RL_CFG3_FAST_B2B 0x01 + +/* + * Config 4 register + */ +#define RL_CFG4_LWPTN 0x04 +#define RL_CFG4_LWPME 0x10 +#define RL_CFG4_JUMBO_EN1 0x02 /* RTL8168C or later. */ +#define RL_CFG4_CUSTOMIZED_LED 0x40 + +/* + * Config 5 register + */ +#define RL_CFG5_WOL_BCAST 0x40 +#define RL_CFG5_WOL_MCAST 0x20 +#define RL_CFG5_WOL_UCAST 0x10 +#define RL_CFG5_WOL_LANWAKE 0x02 +#define RL_CFG5_PME_STS 0x01 + +/* RL_DUMPSTATS_LO register */ +#define RE_DUMPSTATS_START 0x00000008 + +/* + * PHY Status register + */ +#define RL_PHY_STATUS_500MF 0x80000 +#define RL_PHY_STATUS_5000MF 0x1000 +#define RL_PHY_STATUS_5000MF_LITE 0x800 +#define RL_PHY_STATUS_2500MF 0x400 +#define RL_PHY_STATUS_1250MF 0x200 +#define RL_PHY_STATUS_CABLE_PLUG 0x80 +#define RL_PHY_STATUS_TX_FLOW_CTRL 0x40 +#define RL_PHY_STATUS_RX_FLOW_CTRL 0x20 +#define RL_PHY_STATUS_1000MF 0x10 +#define RL_PHY_STATUS_100M 0x08 +#define RL_PHY_STATUS_10M 0x04 +#define RL_PHY_STATUS_LINK_STS 0x02 +#define RL_PHY_STATUS_FULL_DUP 0x01 + +/* OCP GPHY access */ +#define OCPDR_Write 0x80000000 +#define OCPDR_Read 0x00000000 +#define OCPDR_Reg_Mask 0xFF +#define OCPDR_Data_Mask 0xFFFF +#define OCPDR_GPHY_Reg_shift 16 +#define OCPAR_Flag 0x80000000 +#define OCPAR_GPHY_Write 0x8000F060 +#define OCPAR_GPHY_Read 0x0000F060 +#define OCPR_Write 0x80000000 +#define OCPR_Read 0x00000000 +#define OCPR_Addr_Reg_shift 16 +#define OCPR_Flag 0x80000000 +#define OCP_STD_PHY_BASE_PAGE 0x0A40 + +/* MCU Command */ +#define RE_NOW_IS_OOB (1 << 7) +#define RE_TXFIFO_EMPTY (1 << 5) +#define RE_RXFIFO_EMPTY (1 << 4) + +/* OOB Command */ +#define OOB_CMD_RESET 0x00 +#define OOB_CMD_DRIVER_START 0x05 +#define OOB_CMD_DRIVER_STOP 0x06 +#define OOB_CMD_SET_IPMAC 0x41 + +/* Ethernet PHY MDI Mode */ +#define RE_ETH_PHY_FORCE_MDI 0 +#define RE_ETH_PHY_FORCE_MDIX 1 +#define RE_ETH_PHY_AUTO_MDI_MDIX 2 + +/* + * Statistics counter structure + */ +struct re_stats { + uint64_t re_tx_pkts; + uint64_t re_rx_pkts; + uint64_t re_tx_errs; + uint32_t re_rx_errs; + uint16_t re_missed_pkts; + uint16_t re_rx_framealign_errs; + uint32_t re_tx_onecoll; + uint32_t re_tx_multicolls; + uint64_t re_rx_ucasts; + uint64_t re_rx_bcasts; + uint32_t re_rx_mcasts; + uint16_t re_tx_aborts; + uint16_t re_rx_underruns; + + /* extended */ + uint64_t re_tx_octets; + uint64_t re_rx_octets; + uint64_t re_rx_multicast64; + uint64_t re_tx_unicast64; + uint64_t re_tx_broadcast64; + uint64_t re_tx_multicast64; + uint32_t re_tx_pause_on; + uint32_t re_tx_pause_off; + uint32_t re_tx_pause_all; + uint32_t re_tx_deferred; + uint32_t re_tx_late_collision; + uint32_t re_tx_all_collision; + uint32_t re_tx_aborted32; + uint32_t re_align_errors32; + uint32_t re_rx_frame_too_long; + uint32_t re_rx_runt; + uint32_t re_rx_pause_on; + uint32_t re_rx_pause_off; + uint32_t re_rx_pause_all; + uint32_t re_rx_unknown_opcode; + uint32_t re_rx_mac_error; + uint32_t re_tx_underrun32; + uint32_t re_rx_mac_missed; + uint32_t re_rx_tcam_dropped; + uint32_t re_tdu; + uint32_t re_rdu; +}; + +/* + * The RealTek doesn't use a fragment-based descriptor mechanism. + * Instead, there are only four register sets, each or which represents + * one 'descriptor.' Basically, each TX descriptor is just a contiguous + * packet buffer (32-bit aligned!) and we place the buffer addresses in + * the registers so the chip knows where they are. + * + * We can sort of kludge together the same kind of buffer management + * used in previous drivers, but we have to do buffer copies almost all + * the time, so it doesn't really buy us much. + * + * For reception, there's just one large buffer where the chip stores + * all received packets. + */ +#ifndef __NO_STRICT_ALIGNMENT +#define RE_FIXUP_RX 1 +#endif + + +#define RE_RX_BUF_SZ RE_RXBUF_64 +#define RE_RXBUFLEN (1 << ((RE_RX_BUF_SZ >> 11) + 13)) +#define RE_TX_LIST_CNT 4 /* C mode Tx buffer number */ +#define RE_TX_BUF_NUM 1024 /* Tx buffer number */ +#define RE_RX_BUF_NUM 1024 /* Rx buffer number */ +#define RE_BUF_SIZE 9216 /* Buffer size of descriptor buffer */ +#define RE_MIN_FRAMELEN 60 +#define RE_TXREV(x) ((x) << 11) +#define RE_RX_RESVERED RE_RXRESVERED +#define RE_RX_MAXDMA RE_RXDMA_UNLIMITED +#define RE_TX_MAXDMA RE_TXDMA_2048BYTES +#define RE_NTXSEGS 35 +#define RE_TX_MAXSIZE_32K (32 * 1024) +#define RE_TX_MAXSIZE_64K (64 * 1024) +#define RE_RX_BUDGET (64) + +#define RE_TXCFG_CONFIG 0x03000780 //(RE_TXCFG_IFG|RE_TX_MAXDMA) + +#define RE_DESC_ALIGN 256 /* descriptor alignment */ +#define RE_RX_BUFFER_ALIGN 8 /* descriptor alignment */ +#define RE_DUMP_ALIGN 64 + +#ifdef RE_FIXUP_RX +#define RE_ETHER_ALIGN RE_RX_BUFFER_ALIGN +#else +#define RE_ETHER_ALIGN 0 +#endif + +#define Jumbo_Frame_2k ((2 * 1024) - ETHER_VLAN_ENCAP_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) +#define Jumbo_Frame_3k ((3 * 1024) - ETHER_VLAN_ENCAP_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) +#define Jumbo_Frame_4k ((4 * 1024) - ETHER_VLAN_ENCAP_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) +#define Jumbo_Frame_5k ((5 * 1024) - ETHER_VLAN_ENCAP_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) +#define Jumbo_Frame_6k ((6 * 1024) - ETHER_VLAN_ENCAP_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) +#define Jumbo_Frame_7k ((7 * 1024) - ETHER_VLAN_ENCAP_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) +#define Jumbo_Frame_8k ((8 * 1024) - ETHER_VLAN_ENCAP_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) +#define Jumbo_Frame_9k ((9 * 1024) - ETHER_VLAN_ENCAP_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) +struct re_chain_data { + u_int32_t cur_rx; + caddr_t re_rx_buf; + caddr_t re_rx_buf_ptr; + + struct mbuf *re_tx_chain[RE_TX_LIST_CNT]; + u_int32_t last_tx; /* Previous Tx OK */ + u_int32_t cur_tx; /* Next to TX */ +}; + +#define HW_SUPPORT_MAC_MCU(_M) ((_M)->HwSuppMacMcuVer > 0) +#define HW_SUPPORT_OCP_CHANNEL(_M) ((_M)->HwSuppOcpChannelVer > 0) + +//+++ From FreeBSD 9.0 +++ + +#define RL_MSI_MESSAGES 1 + +#define RL_ADDR_LO(y) ((uint64_t) (y) & 0xFFFFFFFF) +#define RL_ADDR_HI(y) ((uint64_t) (y) >> 32) +/* + * RX/TX descriptor definition. When large send mode is enabled, the + * lower 11 bits of the TX rl_cmd word are used to hold the MSS, and + * the checksum offload bits are disabled. The structure layout is + * the same for RX and TX descriptors + */ + +#define RL_TDESC_CMD_FRAGLEN 0x0000FFFF +#define RL_TDESC_CMD_TCPCSUM 0x00010000 /* TCP checksum enable */ +#define RL_TDESC_CMD_UDPCSUM 0x00020000 /* UDP checksum enable */ +#define RL_TDESC_CMD_IPCSUM 0x00040000 /* IP header checksum enable */ +#define RL_TDESC_CMD_MSSVAL 0x07FF0000 /* Large send MSS value */ +#define RL_TDESC_CMD_MSSVAL_SHIFT 16 /* Large send MSS value shift */ +#define RL_TDESC_CMD_LGSEND 0x08000000 /* TCP large send enb */ +#define RL_TDESC_CMD_EOF 0x10000000 /* end of frame marker */ +#define RL_TDESC_CMD_SOF 0x20000000 /* start of frame marker */ +#define RL_TDESC_CMD_EOR 0x40000000 /* end of ring marker */ +#define RL_TDESC_CMD_OWN 0x80000000 /* chip owns descriptor */ + +#define RL_TDESC_VLANCTL_TAG 0x00020000 /* Insert VLAN tag */ +#define RL_TDESC_VLANCTL_DATA 0x0000FFFF /* TAG data */ +/* RTL8168C/RTL8168CP/RTL8111C/RTL8111CP */ +#define RL_TDESC_CMD_UDPCSUMV2 0x80000000 +#define RL_TDESC_CMD_TCPCSUMV2 0x40000000 +#define RL_TDESC_CMD_IPCSUMV2 0x20000000 +#define RL_TDESC_CMD_CSUM_TCPHO_SHIFT 18 +#define RL_TDESC_CMD_MSSVALV2 0x1FFC0000 +#define RL_TDESC_CMD_MSSVALV2_SHIFT 18 +#define RL_TDESC_CMD_GTSEND_TCPHO_SHIFT 18 +#define RL_TDESC_CMD_GTSENDV6 0x02000000 /* TCP giant send enb */ +#define RL_TDESC_CMD_GTSENDV4 0x04000000 /* TCP giant send enb */ + +#define RL_TDESC_CMD_BUFLEN 0x0000FFFF +#define RL_TDESC_STAT_OWN 0x80000000 + +/* + * RX descriptor cmd/vlan definitions + */ + +#define RL_RDESC_CMD_EOR 0x40000000 +#define RL_RDESC_CMD_OWN 0x80000000 +#define RL_RDESC_CMD_BUFLEN 0x00003FFF + +#define RL_RDESC_STAT_OWN 0x80000000 +#define RL_RDESC_STAT_EOR 0x40000000 +#define RL_RDESC_STAT_SOF 0x20000000 +#define RL_RDESC_STAT_EOF 0x10000000 +#define RL_RDESC_STAT_FRALIGN 0x08000000 /* frame alignment error */ +#define RL_RDESC_STAT_MCAST 0x04000000 /* multicast pkt received */ +#define RL_RDESC_STAT_UCAST 0x02000000 /* unicast pkt received */ +#define RL_RDESC_STAT_BCAST 0x01000000 /* broadcast pkt received */ +#define RL_RDESC_STAT_BUFOFLOW 0x00800000 /* out of buffer space */ +#define RL_RDESC_STAT_FIFOOFLOW 0x00400000 /* FIFO overrun */ +#define RL_RDESC_STAT_GIANT 0x00200000 /* pkt > 4096 bytes */ +#define RL_RDESC_STAT_RXERRSUM 0x00100000 /* RX error summary */ +#define RL_RDESC_STAT_RUNT 0x00080000 /* runt packet received */ +#define RL_RDESC_STAT_CRCERR 0x00040000 /* CRC error */ +#define RL_RDESC_STAT_PROTOID 0x00030000 /* Protocol type */ +#define RL_RDESC_STAT_UDP 0x00020000 /* UDP, 8168C/CP, 8111C/CP */ +#define RL_RDESC_STAT_TCP 0x00010000 /* TCP, 8168C/CP, 8111C/CP */ +#define RL_RDESC_STAT_IPSUMBAD 0x00008000 /* IP header checksum bad */ +#define RL_RDESC_STAT_UDPSUMBAD 0x00004000 /* UDP checksum bad */ +#define RL_RDESC_STAT_TCPSUMBAD 0x00002000 /* TCP checksum bad */ +#define RL_RDESC_STAT_GFRAGLEN RL_RDESC_CMD_BUFLEN /* RX'ed frame/frag len */ +#define RL_RDESC_STAT_ERRS (RL_RDESC_STAT_GIANT|RL_RDESC_STAT_RUNT| \ + RL_RDESC_STAT_CRCERR) + +#define RL_RDESC_VLANCTL_TAG 0x00010000 /* VLAN tag available + (rl_vlandata valid)*/ +#define RL_RDESC_VLANCTL_DATA 0x0000FFFF /* TAG data */ +/* RTL8168C/RTL8168CP/RTL8111C/RTL8111CP */ +#define RL_RDESC_RES 0x00200000 +#define RL_RDESC_IPV6 0x80000000 +#define RL_RDESC_IPV4 0x40000000 + +#define RL_PROTOID_NONIP 0x00000000 +#define RL_PROTOID_TCPIP 0x00010000 +#define RL_PROTOID_UDPIP 0x00020000 +#define RL_PROTOID_IP 0x00030000 +#define RL_TCPPKT(x) (((x) & RL_RDESC_STAT_PROTOID) == \ + RL_PROTOID_TCPIP) +#define RL_UDPPKT(x) (((x) & RL_RDESC_STAT_PROTOID) == \ + RL_PROTOID_UDPIP) + +//--- From FreeBSD 9.0--- + + +union RxDesc { + u_int32_t ul[4]; + struct { +#if defined(_LITTLE_ENDIAN) + u_int32_t Frame_Length:14; + u_int32_t TCPF:1; + u_int32_t UDPF:1; + u_int32_t IPF:1; + u_int32_t TCPT:1; + u_int32_t UDPT:1; + u_int32_t CRC:1; + u_int32_t RUNT:1; + u_int32_t RES:1; + u_int32_t RWT:1; + u_int32_t RESV:2; + u_int32_t BAR:1; + u_int32_t PAM:1; + u_int32_t MAR:1; + u_int32_t LS:1; + u_int32_t FS:1; + u_int32_t EOR:1; + u_int32_t OWN:1; + + u_int32_t VLAN_TAG:16; + u_int32_t TAVA:1; + u_int32_t RESV1:15; +#elif defined(_BIG_ENDIAN) + u_int32_t OWN:1; + u_int32_t EOR:1; + u_int32_t FS:1; + u_int32_t LS:1; + u_int32_t MAR:1; + u_int32_t PAM:1; + u_int32_t BAR:1; + u_int32_t RESV:2; + u_int32_t RWT:1; + u_int32_t RES:1; + u_int32_t RUNT:1; + u_int32_t CRC:1; + u_int32_t UDPT:1; + u_int32_t TCPT:1; + u_int32_t IPF:1; + u_int32_t UDPF:1; + u_int32_t TCPF:1; + u_int32_t Frame_Length:14; + + u_int32_t RESV1:15; + u_int32_t TAVA:1; + u_int32_t VLAN_TAG:16; +#else +#error "what endian is this machine?" +#endif + u_int64_t RxBuff; + } so0; /* symbol owner=0 */ +}; + +union TxDesc { + u_int32_t ul[4]; + struct { +#if defined(_LITTLE_ENDIAN) + u_int32_t Frame_Length:16; + u_int32_t TCPCS:1; + u_int32_t UDPCS:1; + u_int32_t IPCS:1; + u_int32_t SCRC:1; + u_int32_t RESV:6; + u_int32_t TDMA:1; + u_int32_t LGSEN:1; + u_int32_t LS:1; + u_int32_t FS:1; + u_int32_t EOR:1; + u_int32_t OWN:1; + + u_int32_t VLAN_TAG:16; + u_int32_t TAGC0:1; + u_int32_t TAGC1:1; + u_int32_t RESV1:14; +#elif defined(_BIG_ENDIAN) + u_int32_t OWN:1; + u_int32_t EOR:1; + u_int32_t FS:1; + u_int32_t LS:1; + u_int32_t LGSEN:1; + u_int32_t TDMA:1; + u_int32_t RESV:6; + u_int32_t SCRC:1; + u_int32_t IPCS:1; + u_int32_t UDPCS:1; + u_int32_t TCPCS:1; + u_int32_t Frame_Length:16; + + u_int32_t RESV1:14; + u_int32_t TAGC1:1; + u_int32_t TAGC0:1; + u_int32_t VLAN_TAG:16; +#else +#error "what endian is this machine?" +#endif + u_int64_t TxBuff; + } so1; /* symbol owner=1 */ +}; + +struct re_descriptor { + u_int32_t rx_cur_index; + union RxDesc *rx_desc; /* 8 bits alignment */ + struct mbuf *rx_buf[RE_RX_BUF_NUM]; + + u_int32_t tx_cur_index; + u_int32_t tx_last_index; + union TxDesc *tx_desc; /* 8 bits alignment */ + struct mbuf *tx_buf[RE_TX_BUF_NUM]; + bus_dma_tag_t rx_desc_tag; + bus_dmamap_t rx_desc_dmamap; + bus_dma_tag_t re_rx_mtag; /* mbuf RX mapping tag */ + bus_dmamap_t re_rx_dmamap[RE_RX_BUF_NUM]; + + bus_dma_tag_t tx_desc_tag; + bus_dmamap_t tx_desc_dmamap; + bus_dma_tag_t re_tx_mtag; /* mbuf TX mapping tag */ + bus_dmamap_t re_tx_dmamap[RE_TX_BUF_NUM]; +}; + +struct re_tally_counter { + bus_dma_tag_t re_stag; /* stats mapping tag */ + bus_dmamap_t re_smap; /* stats map */ + struct re_stats *re_stats; + bus_addr_t re_stats_addr; +}; + +#define RE_INC(x) (x = (x + 1) % RE_TX_LIST_CNT) +#define RE_CUR_TXADDR(x) ((x->re_cdata.cur_tx * 4) + RE_TXADDR0) +#define RE_CUR_TXSTAT(x) ((x->re_cdata.cur_tx * 4) + RE_TXSTAT0) +#define RE_CUR_TXMBUF(x) (x->re_cdata.re_tx_chain[x->re_cdata.cur_tx]) +#define RE_LAST_TXADDR(x) ((x->re_cdata.last_tx * 4) + RE_TXADDR0) +#define RE_LAST_TXSTAT(x) ((x->re_cdata.last_tx * 4) + RE_TXSTAT0) +#define RE_LAST_TXMBUF(x) (x->re_cdata.re_tx_chain[x->re_cdata.last_tx]) + +struct re_type { + u_int16_t re_vid; + u_int16_t re_did; + char *re_name; +}; + +struct re_mii_frame { + u_int8_t mii_stdelim; + u_int8_t mii_opcode; + u_int8_t mii_phyaddr; + u_int8_t mii_regaddr; + u_int8_t mii_turnaround; + u_int16_t mii_data; +}; + +/* + * MII constants + */ +#define RE_MII_STARTDELIM 0x01 +#define RE_MII_READOP 0x02 +#define RE_MII_WRITEOP 0x01 +#define RE_MII_TURNAROUND 0x02 +#define RL_TDESC_VLANCTL_TAG 0x00020000 +#define RL_RDESC_VLANCTL_TAG 0x00010000 +#define RL_RDESC_VLANCTL_DATA 0x0000FFFF +#define RL_CPLUSCMD_VLANSTRIP 0x0040 +#define RL_FLAG_MSI 0x00000001 +#define RL_FLAG_PHYWAKE_PM 0x00000004 +#define RL_FLAG_DESCV2 0x00000040 +#define RL_FLAG_MSIX 0x00000800 +#define RL_FLAG_8168G_PLUS 0x00040000 +#define RL_FLAG_MAGIC_PACKET_V2 0x20000000 +#define RL_FLAG_PCIE 0x40000000 +#define RL_FLAG_MAGIC_PACKET_V3 0x80000000 + +#define RL_PID0 (1<<17) +#define RL_PID1 (1<<18) +#define RL_ProtoUDP (RL_PID1) +#define RL_ProtoTCP (RL_PID0) +#define RL_ProtoIP (RL_PID0|RL_PID1) +#define RL_ProtoMASK (RL_PID0|RL_PID1) +#define RL_TCPT (1<<17) /* TCP, 8168C/CP, 8111C/CP */ +#define RL_UDPT (1<<18) /* UDP, 8168C/CP, 8111C/CP */ +#define RL_IPF (1<<16) +#define RL_UDPF (1<<15) +#define RL_TCPF (1<<14) +#define RL_V4F (1<<30) /* IPv4, 8168C/CP, 8111C/CP */ +#define RL_V6F (1<<31) /* IPv6, 8168C/CP, 8111C/CP */ + +#define RL_CS_V6F (1<<28) /* IPv6 Frame, 8168C/CP, 8111C/CP */ +#define RL_IPV4CS (1<<29) +#define RL_TCPCS (1<<30) +#define RL_UDPCS (1<<31) +#define RL_IPV4CS1 (1<<18) +#define RL_TCPCS1 (1<<16) +#define RL_UDPCS1 (1<<17) + +#define RL_RxChkSum (1<<5) + +enum { + EFUSE_NOT_SUPPORT = 0, + EFUSE_SUPPORT_V1, + EFUSE_SUPPORT_V2, + EFUSE_SUPPORT_V3, + EFUSE_SUPPORT_V4, +}; + +enum { + MACFG_3 = 3, + MACFG_4, + MACFG_5, + MACFG_6, + + MACFG_11 = 11, + MACFG_12, + MACFG_13, + MACFG_14, + MACFG_15, + MACFG_16, + MACFG_17, + MACFG_18, + MACFG_19, + + MACFG_21 = 21, + MACFG_22, + MACFG_23, + MACFG_24, + MACFG_25, + MACFG_26, + MACFG_27, + MACFG_28, + + MACFG_31 = 31, + MACFG_32, + MACFG_33, + + MACFG_36 = 36, + MACFG_37, + MACFG_38, + MACFG_39, + + MACFG_41 = 41, + MACFG_42, + MACFG_43, + + MACFG_50 = 50, + MACFG_51, + MACFG_52, + MACFG_53, + MACFG_54, + MACFG_55, + MACFG_56, + MACFG_57, + MACFG_58, + MACFG_59, + MACFG_60, + MACFG_61, + MACFG_62, + MACFG_63, + MACFG_64, + MACFG_65, + MACFG_66, + MACFG_67, + MACFG_68, + MACFG_69, + MACFG_70, + MACFG_71, + MACFG_72, + MACFG_73, + MACFG_74, + MACFG_75, + MACFG_76, + + MACFG_80 = 80, + MACFG_81, + MACFG_82, + MACFG_83, + MACFG_84, + MACFG_85, + MACFG_86, + MACFG_87, + + MACFG_90 = 90, + MACFG_91, + MACFG_92, + + MACFG_FF = 0xFF +}; + +//#define MAC_STYLE_1 1 /* RTL8110S/SB/SC, RTL8111B and RTL8101E */ +//#define MAC_STYLE_2 2 /* RTL8111C/CP/D and RTL8102E */ + +struct re_softc { +#if OS_VER=VERSION(7,0) + struct task re_inttask; + struct task re_inttask_poll; +#endif + u_int16_t cur_page; + + u_int16_t phy_reg_anlpar; + + u_int8_t re_hw_enable_msi_msix; + + u_int8_t re_coalesce_tx_pkt; + + u_int8_t link_state; + + u_int8_t prohibit_access_reg; + + u_int8_t re_hw_supp_now_is_oob_ver; + + u_int8_t hw_hw_supp_serdes_phy_ver; + u_int8_t HwSuppOcpChannelVer; + + u_int8_t HwSuppDashVer; + u_int8_t re_dash; + u_int8_t AllowAccessDashOcp; + u_int32_t re_dash_fw_ver; + bus_space_handle_t re_mapped_cmac_handle; /* bus space tag */ + bus_space_tag_t re_mapped_cmac_tag; /* bus space tag */ + bus_space_handle_t re_cmac_handle; /* bus space handle */ + bus_space_tag_t re_cmac_tag; /* bus space tag */ + bus_space_handle_t re_msix_tbl_handle; /* bus space handle */ + bus_space_tag_t re_msix_tbl_tag; /* bus space tag */ + u_int8_t HwPkgDet; + + u_int32_t HwFiberModeVer; + u_int32_t HwFiberStat; + + u_int8_t HwSuppExtendTallyCounterVer; + + u_int8_t HwSuppMacMcuVer; + u_int16_t MacMcuPageSize; + + struct lro_ctrl re_lro; + + int (*ifmedia_upd)(struct ifnet *); + void (*ifmedia_sts)(struct ifnet *, struct ifmediareq *); +#if OS_VER < VERSION(7,0) + void (*intr)(void *); +#else + int (*intr)(void *); +#endif //OS_VER < VERSION(7,0) + void (*int_task)(void *, int); + void (*int_task_poll)(void *, int); + void (*hw_start_unlock)(struct re_softc *); + struct taskqueue *re_tq; +}; + +enum bits { + BIT_0 = (1 << 0), + BIT_1 = (1 << 1), + BIT_2 = (1 << 2), + BIT_3 = (1 << 3), + BIT_4 = (1 << 4), + BIT_5 = (1 << 5), + BIT_6 = (1 << 6), + BIT_7 = (1 << 7), + BIT_8 = (1 << 8), + BIT_9 = (1 << 9), + BIT_10 = (1 << 10), + BIT_11 = (1 << 11), + BIT_12 = (1 << 12), + BIT_13 = (1 << 13), + BIT_14 = (1 << 14), + BIT_15 = (1 << 15), + BIT_16 = (1 << 16), + BIT_17 = (1 << 17), + BIT_18 = (1 << 18), + BIT_19 = (1 << 19), + BIT_20 = (1 << 20), + BIT_21 = (1 << 21), + BIT_22 = (1 << 22), + BIT_23 = (1 << 23), + BIT_24 = (1 << 24), + BIT_25 = (1 << 25), + BIT_26 = (1 << 26), + BIT_27 = (1 << 27), + BIT_28 = (1 << 28), + BIT_29 = (1 << 29), + BIT_30 = (1 << 30), + BIT_31 = (1 << 31) +}; + +#define RE_LOCK(_sc) mtx_lock(&(_sc)->mtx) +#define RE_UNLOCK(_sc) mtx_unlock(&(_sc)->mtx) +#define RE_LOCK_INIT(_sc,_name) mtx_init(&(_sc)->mtx,_name,MTX_NETWORK_LOCK,MTX_DEF) +#define RE_LOCK_DESTROY(_sc) mtx_destroy(&(_sc)->mtx) +#define RE_LOCK_ASSERT(_sc) mtx_assert(&(_sc)->mtx,MA_OWNED) + +/* + * register space access macros + */ +#if OS_VER>VERSION(5,9) +#define CSR_WRITE_STREAM_4(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_stream_4(sc->re_btag, sc->re_bhandle, reg, val)) +#define CSR_WRITE_STREAM_2(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_stream_2(sc->re_btag, sc->re_bhandle, reg, val)) +#endif +#define CSR_WRITE_4(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_4(sc->re_btag, sc->re_bhandle, reg, val)) +#define CSR_WRITE_2(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_2(sc->re_btag, sc->re_bhandle, reg, val)) +#define CSR_WRITE_1(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_1(sc->re_btag, sc->re_bhandle, reg, val)) + +#define CSR_READ_4(sc, reg) ((sc->prohibit_access_reg)?0xFFFFFFFF:bus_space_read_4(sc->re_btag, sc->re_bhandle, reg)) +#define CSR_READ_2(sc, reg) ((sc->prohibit_access_reg)?0xFFFF:bus_space_read_2(sc->re_btag, sc->re_bhandle, reg)) +#define CSR_READ_1(sc, reg) ((sc->prohibit_access_reg)?0xFF:bus_space_read_1(sc->re_btag, sc->re_bhandle, reg)) + +/* cmac write/read MMIO register */ +#define RE_CMAC_WRITE_1(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_1(sc->re_cmac_tag, sc->re_cmac_handle, reg, val)) +#define RE_CMAC_WRITE_2(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_2(sc->re_cmac_tag, sc->re_cmac_handle, reg, val)) +#define RE_CMAC_WRITE_4(sc, reg, val) ((sc->prohibit_access_reg)?:bus_space_write_4(sc->re_cmac_tag, sc->re_cmac_handle, reg, val)) +#define RE_CMAC_READ_1(sc, reg) ((sc->prohibit_access_reg)?0xFF:bus_space_read_1(sc->re_cmac_tag, sc->re_cmac_handle, reg)) +#define RE_CMAC_READ_2(sc, reg) ((sc->prohibit_access_reg)?0xFFFF:bus_space_read_2(sc->re_cmac_tag, sc->re_cmac_handle, reg)) +#define RE_CMAC_READ_4(sc, reg) ((sc->prohibit_access_reg)?0xFFFFFFFF:bus_space_read_4(sc->re_cmac_tag, sc->re_cmac_handle, reg)) + +/* msix table write/read MMIO register */ +#define RE_MSIX_TBL_WRITE_4(sc, reg, val) ((sc->re_res_pba == NULL)?:bus_space_write_4(sc->re_msix_tbl_tag, sc->re_msix_tbl_handle, reg, val)) +#define RE_MSIX_TBL_READ_4(sc, reg) ((sc->re_res_pba == NULL)?0xFFFFFFFF:bus_space_read_4(sc->re_msix_tbl_tag, sc->re_msix_tbl_handle, reg)) + +#define RE_TIMEOUT 1000 + +/* + * General constants that are fun to know. + * + * RealTek PCI vendor ID + */ +#define RT_VENDORID 0x10EC + +/* + * RealTek chip device IDs. + */ +#define RT_DEVICEID_8129 0x8129 +#define RT_DEVICEID_8139 0x8139 +#define RT_DEVICEID_8169 0x8169 /* For RTL8169 */ +#define RT_DEVICEID_8169SC 0x8167 /* For RTL8169SC */ +#define RT_DEVICEID_8168 0x8168 /* For RTL8168B */ +#define RT_DEVICEID_8161 0x8161 /* For RTL8168 Series add-on card */ +#define RT_DEVICEID_8162 0x8162 /* For RTL8168KB */ +#define RT_DEVICEID_8136 0x8136 /* For RTL8101E */ +#define RT_DEVICEID_8125 0x8125 /* For RTL8125 */ +#define RT_DEVICEID_3000 0x3000 /* For Killer E3000/E3100 with RTL8125 */ +#define RT_DEVICEID_8126 0x8126 /* For RTL8126 */ + +/* + * Accton PCI vendor ID + */ +#define ACCTON_VENDORID 0x1113 + +/* + * Accton MPX 5030/5038 device ID. + */ +#define ACCTON_DEVICEID_5030 0x1211 + +/* + * Delta Electronics Vendor ID. + */ +#define DELTA_VENDORID 0x1500 + +/* + * Delta device IDs. + */ +#define DELTA_DEVICEID_8139 0x1360 + +/* + * Addtron vendor ID. + */ +#define ADDTRON_VENDORID 0x4033 + +/* + * Addtron device IDs. + */ +#define ADDTRON_DEVICEID_8139 0x1360 + +/* + * D-Link vendor ID. + */ +#define DLINK_VENDORID 0x1186 + +/* + * D-Link DFE-530TX+ device ID + */ +#define DLINK_DEVICEID_530TXPLUS 0x1300 + +/* + * PCI low memory base and low I/O base register, and + * other PCI registers. + */ + +#define RE_PCI_VENDOR_ID 0x00 +#define RE_PCI_DEVICE_ID 0x02 +#define RE_PCI_COMMAND 0x04 +#define RE_PCI_STATUS 0x06 +#define RE_PCI_REVISION_ID 0x08 /* 8 bits */ +#define RE_PCI_CLASSCODE 0x09 +#define RE_PCI_LATENCY_TIMER 0x0D +#define RE_PCI_HEADER_TYPE 0x0E +#define RE_PCI_BIOSROM 0x30 +#define RE_PCI_INTLINE 0x3C +#define RE_PCI_INTPIN 0x3D +#define RE_PCI_MINGNT 0x3E +#define RE_PCI_MINLAT 0x0F +#define RE_PCI_RESETOPT 0x48 +#define RE_PCI_EEPROM_DATA 0x4C + +#define RE_PCI_CAPID 0x50 /* 8 bits */ +#define RE_PCI_NEXTPTR 0x51 /* 8 bits */ +#define RE_PCI_PWRMGMTCAP 0x52 /* 16 bits */ +#define RE_PCI_PWRMGMTCTRL 0x54 /* 16 bits */ + +#define RE_PSTATE_MASK 0x0003 +#define RE_PSTATE_D0 0x0000 +#define RE_PSTATE_D1 0x0002 +#define RE_PSTATE_D2 0x0002 +#define RE_PSTATE_D3 0x0003 +#define RE_PME_EN 0x0010 +#define RE_PME_STATUS 0x8000 + +#define RE_WOL_LINK_SPEED_10M_FIRST (0) +#define RE_WOL_LINK_SPEED_100M_FIRST (1) + +#define RTK_ADVERTISE_2500FULL 0x80 +#define RTK_ADVERTISE_5000FULL 0x100 + +#define RTL8125_MAC_MCU_PAGE_SIZE 256 //256 words + +#define RTL8125_INT_CFG0_ENABLE_8125 (0x0001) +#define RTL8125_INT_CFG0_TIMEOUT0_BYPASS (0x0002) +#define RTL8125_INT_CFG0_MITIGATION_BYPASS (0x0004) +#define RTL8126_INT_CFG0_RDU_BYPASS (0x0010) +#define RTL8125_INT_CFG0_MSIX_ENTRY_NUM_MODE (0x0020) + +//Ram Code Version +#define NIC_RAMCODE_VERSION_8168E (0x0057) +#define NIC_RAMCODE_VERSION_8168EVL (0x0055) +#define NIC_RAMCODE_VERSION_8168F (0x0052) +#define NIC_RAMCODE_VERSION_8411 (0x0044) +#define NIC_RAMCODE_VERSION_8168G (0x0048) +#define NIC_RAMCODE_VERSION_8168GU (0x0001) +#define NIC_RAMCODE_VERSION_8168EP (0x0019) +#define NIC_RAMCODE_VERSION_8411B (0x0012) +#define NIC_RAMCODE_VERSION_8168H (0x0083) +#define NIC_RAMCODE_VERSION_8168H_6838 (0x0027) +#define NIC_RAMCODE_VERSION_8168H_6878B (0x0000) +#define NIC_RAMCODE_VERSION_8168FP (0x0003) +#define NIC_RAMCODE_VERSION_8125A_REV_A (0x0B11) +#define NIC_RAMCODE_VERSION_8125A_REV_B (0x0B33) +#define NIC_RAMCODE_VERSION_8125B_REV_A (0x0B17) +#define NIC_RAMCODE_VERSION_8125B_REV_B (0x0B99) +#define NIC_RAMCODE_VERSION_8125BP_REV_A (0x0013) +#define NIC_RAMCODE_VERSION_8125BP_REV_B (0x0001) +#define NIC_RAMCODE_VERSION_8126A_REV_A (0x0023) +#define NIC_RAMCODE_VERSION_8126A_REV_B (0x0033) +#define NIC_RAMCODE_VERSION_8126A_REV_C (0x0051) +#define NIC_RAMCODE_VERSION_8125D_REV_A (0x0016) +#define NIC_RAMCODE_VERSION_8125D_REV_B (0x0001) + +#ifdef __alpha__ +#undef vtophys +#define vtophys(va) alpha_XXX_dmamap((vm_offset_t)va) +#endif + +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif + +#define PHYAR_Flag 0x80000000 +#define RE_CPlusMode 0x20 /* In Revision ID */ + +/* interrupt service routine loop time*/ +/* the minimum value is 1 */ +#define INTR_MAX_LOOP 1 + +#define RE_REGS_SIZE (256) + +#define OCP_REG_FIRMWARE_MAJOR_VERSION (0x120) +#define RTL8168FP_OOBMAC_BASE 0xBAF70000 +#define HW_DASH_SUPPORT_DASH(_M) ((_M)->HwSuppDashVer > 0) +#define HW_DASH_SUPPORT_TYPE_1(_M) ((_M)->HwSuppDashVer == 1) +#define HW_DASH_SUPPORT_TYPE_2(_M) ((_M)->HwSuppDashVer == 2) +#define HW_DASH_SUPPORT_TYPE_3(_M) ((_M)->HwSuppDashVer == 3) +#define HW_DASH_SUPPORT_TYPE_4(_M) ((_M)->HwSuppDashVer == 4) +#define HW_DASH_SUPPORT_CMAC(_M) (HW_DASH_SUPPORT_TYPE_2(_M) || HW_DASH_SUPPORT_TYPE_3(_M)) +#define HW_DASH_SUPPORT_IPC2(_M) (HW_DASH_SUPPORT_TYPE_4(_M)) +#define HW_DASH_SUPPORT_GET_FIRMWARE_VERSION(_M) (HW_DASH_SUPPORT_TYPE_2(_M) || \ + HW_DASH_SUPPORT_TYPE_3(_M) || \ + HW_DASH_SUPPORT_TYPE_4(_M)) + +#define HW_SUPP_SERDES_PHY(_M) ((_M)->hw_hw_supp_serdes_phy_ver > 0) +#define HW_HAS_WRITE_PHY_MCU_RAM_CODE(_M) ((_M)->re_hw_ram_code_ver == (_M)->re_sw_ram_code_ver) + +/*#define RE_DBG*/ + +#ifdef RE_DBG +#define DBGPRINT(_unit, _msg) printf ("re%d: %s\n", _unit,_msg) +#define DBGPRINT1(_unit, _msg, _para1) \ + { \ + char buf[100]; \ + sprintf(buf,_msg,_para1); \ + printf ("re%d: %s\n", _unit,buf); \ + } +#else +#define DBGPRINT(_unit, _msg) +#define DBGPRINT1(_unit, _msg, _para1) +#endif + +#if OS_VERarpcom.ac_if +#define if_drv_flags if_flags +#define IFF_DRV_RUNNING IFF_RUNNING +#define IFF_DRV_OACTIVE IFF_OACTIVE +#else +#define RE_GET_IFNET(SC) SC->re_ifp +#endif + +#if OS_VER>=VERSION(10,0) +#define IF_ADDR_LOCK IF_ADDR_WLOCK +#define IF_ADDR_UNLOCK IF_ADDR_WUNLOCK +#endif + +#if OS_VER>=VERSION(7,4) +#if OS_VER>=VERSION(9,2) +#define RE_PCIEM_LINK_CAP_ASPM PCIEM_LINK_CAP_ASPM +#define RE_PCIER_LINK_CTL PCIER_LINK_CTL +#define RE_PCIER_LINK_CAP PCIER_LINK_CAP +#else //OS_VER>=VERSION(9,2) +#define RE_PCIEM_LINK_CAP_ASPM PCIM_LINK_CAP_ASPM +#define RE_PCIER_LINK_CTL PCIR_EXPRESS_LINK_CTL +#define RE_PCIER_LINK_CAP PCIR_EXPRESS_LINK_CAP +#endif +#endif //OS_VER>=VERSION(7,4) + +#ifndef IFM_2500_X +#define IFM_2500_X IFM_X(63) +#endif + +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(_a) (sizeof((_a)) / sizeof((_a)[0])) +#endif diff --git a/import/version.txt b/import/version.txt new file mode 100644 index 0000000..dbb4acd --- /dev/null +++ b/import/version.txt @@ -0,0 +1,2 @@ +https://github.com/alexdupre/rtl_bsd_drv.git +ea4ed1e95aa99d68eef60b1b97ebdd6eede10991 diff --git a/precomp.cpp b/precomp.cpp new file mode 100644 index 0000000..b6ff0c6 --- /dev/null +++ b/precomp.cpp @@ -0,0 +1,5 @@ +// This file makes precompiled headers work. +// +// - precomp.cpp has build configuration set to "Create precompiled header". +// - All other .cpp files have build configuration set to "Use precompiled header". +#include "precomp.h" diff --git a/precomp.h b/precomp.h index 9db9124..6c20ff5 100644 --- a/precomp.h +++ b/precomp.h @@ -14,6 +14,8 @@ #include #include +#include + #include "forward.h" // Error log definitions diff --git a/rtlhw.cpp b/rtlhw.cpp index 135f006..f019038 100644 --- a/rtlhw.cpp +++ b/rtlhw.cpp @@ -1,7 +1,3 @@ -#include "precomp.h" -#include "trace.h" -#include "adapter.h" - /* * Copyright (c) 1997, 1998 * Bill Paul . All rights reserved. @@ -36,13 +32,117 @@ * $FreeBSD: src/sys/dev/if_rl.c,v 1.38.2.7 2001/07/19 18:33:07 wpaul Exp $ */ - /* - * RealTek 8129/8139 PCI NIC driver - * - * Written by Bill Paul - * Electrical Engineering Department - * Columbia University, New York City - */ +/* + * RealTek 8129/8139 PCI NIC driver + * + * Written by Bill Paul + * Electrical Engineering Department + * Columbia University, New York City + */ + +#include "precomp.h" // _WIN32: Must be outside the ifdef due to precompiled header rules. +#ifdef _WIN32 +#include "trace.h" +#include "adapter.h" +#include +#endif // _WIN32 + +#ifndef _WIN32 +#include +#endif // !_WIN32 + +#ifdef ENABLE_FIBER_SUPPORT +#define FIBER_SUFFIX "-FIBER" +#else +#define FIBER_SUFFIX "" +#endif +#define RE_VERSION "1.100.00" FIBER_SUFFIX + +__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v " RE_VERSION __DATE__ " " __TIME__ " wpaul Exp $"); + +/* +* This driver also support Realtek RTL8110/RTL8169, RTL8111/RTL8168, RTL8125, RTL8126, and RTL8136/RTL810x. +*/ + +#ifndef _WIN32 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include /* for vtophys */ +#include /* for vtophys */ +#include /* for DELAY */ + +#include +#include +#include +#include +#include + +#include +#include "if_rereg.h" +#ifdef ENABLE_FIBER_SUPPORT +#include +#endif //ENABLE_FIBER_SUPPORT + +#if OS_VER < VERSION(5,3) +#include +#include +#include +#include +#else +#include +#include +#include +#endif + +#if OS_VER > VERSION(5,9) +#include +#include +#include +#include +#endif + +#include +#include +#include + +#include + +#include "opt_inet.h" +#include "opt_inet6.h" + +#endif // !_WIN32 + +#ifdef _WIN32 + +static int const max_rx_mbuf_sz = MJUM9BYTES; + +static inline void +ether_gen_addr_impl(void *hwaddr) +{ + PUCHAR dst = (PUCHAR)hwaddr; + BCryptGenRandom(NULL, dst, 6, BCRYPT_USE_SYSTEM_PREFERRED_RNG); + dst[0] &= 0xfe; + dst[0] |= 0x02; +} +#define ether_gen_addr(ignored, hwaddr) ether_gen_addr_impl(hwaddr) static inline uint32_t pci_read_config(RT_ADAPTER* Adapter, int reg, int width) { UINT32 val; @@ -65,6 +165,8 @@ static inline uint32_t pci_write_config(RT_ADAPTER* Adapter, int reg, uint32_t v return val; } +#endif // _WIN32 + #define EE_SET(x) \ CSR_WRITE_1(sc, RE_EECMD, \ CSR_READ_1(sc, RE_EECMD) | x) @@ -73,21191 +175,26043 @@ static inline uint32_t pci_write_config(RT_ADAPTER* Adapter, int reg, uint32_t v CSR_WRITE_1(sc, RE_EECMD, \ CSR_READ_1(sc, RE_EECMD) & ~x) -void MP_WritePhyUshort __P((struct re_softc*, u_int8_t, u_int16_t)); -u_int16_t MP_ReadPhyUshort __P((struct re_softc*, u_int8_t)); -static void MP_WriteEPhyUshort __P((struct re_softc*, u_int8_t, u_int16_t)); -static u_int16_t MP_ReadEPhyUshort __P((struct re_softc*, u_int8_t)); -static u_int8_t MP_ReadEfuse __P((struct re_softc*, u_int16_t)); -static void MP_RealWritePhyOcpRegWord __P((struct re_softc*, u_int16_t, u_int16_t)); -static u_int16_t MP_RealReadPhyOcpRegWord __P((struct re_softc*, u_int16_t)); -static void MP_WritePhyOcpRegWord __P((struct re_softc*, u_int16_t, u_int8_t, u_int16_t)); -static u_int16_t MP_ReadPhyOcpRegWord __P((struct re_softc*, u_int16_t, u_int8_t)); -void MP_WriteMcuAccessRegWord __P((struct re_softc*, u_int16_t, u_int16_t)); -u_int16_t MP_ReadMcuAccessRegWord __P((struct re_softc*, u_int16_t)); -static void MP_WriteOtherFunPciEConfigSpace __P((struct re_softc*, u_int8_t, u_int16_t, u_int32_t Regata)); -static u_int32_t MP_ReadOtherFunPciEConfigSpace __P((struct re_softc*, u_int8_t, u_int16_t)); -static void MP_WritePciEConfigSpace __P((struct re_softc*, u_int16_t, u_int32_t)); -static u_int32_t MP_ReadPciEConfigSpace __P((struct re_softc*, u_int16_t)); -//static u_int8_t MP_ReadByteFun0PciEConfigSpace __P((struct re_softc*, u_int16_t)); -static bool re_set_phy_mcu_patch_request __P((struct re_softc*)); -static bool re_clear_phy_mcu_patch_request __P((struct re_softc*)); - -#if DISABLED_CODE -static void re_setwol __P((struct re_softc*)); -static void re_clrwol __P((struct re_softc*)); -static void re_set_wol_linkspeed __P((struct re_softc*)); +#ifndef _WIN32 + +struct bus_dma_tag { + struct bus_dma_tag_common common; + int map_count; + int bounce_flags; + bus_dma_segment_t *segments; + struct bounce_zone *bounce_zone; +}; + +/* + * Various supported device vendors/types and their names. + */ +static struct re_type re_devs[] = { + { + RT_VENDORID, RT_DEVICEID_8169, + "Realtek PCI GbE Family Controller" + }, + { + RT_VENDORID, RT_DEVICEID_8169SC, + "Realtek PCI GbE Family Controller" + }, + { + RT_VENDORID, RT_DEVICEID_8168, + "Realtek PCIe GbE Family Controller" + }, + { + RT_VENDORID, RT_DEVICEID_8161, + "Realtek PCIe GbE Family Controller" + }, + { + RT_VENDORID, RT_DEVICEID_8162, + "Realtek PCIe GbE Family Controller" + }, + { + RT_VENDORID, RT_DEVICEID_8136, + "Realtek PCIe FE Family Controller" + }, + { + DLINK_VENDORID, 0x4300, + "Realtek PCI GbE Family Controller" + }, + { + RT_VENDORID, RT_DEVICEID_8125, + "Realtek PCIe 2.5GbE Family Controller" + }, + { + RT_VENDORID, RT_DEVICEID_3000, + "Killer PCIe 3x00 2.5GbE Family Controller" + }, + { + RT_VENDORID, RT_DEVICEID_8126, + "Realtek PCIe 5GbE Family Controller" + }, + { 0, 0, NULL } +}; + +static int re_probe __P((device_t)); +static int re_attach __P((device_t)); +static int re_detach __P((device_t)); +static int re_suspend __P((device_t)); +static int re_resume __P((device_t)); +static int re_shutdown __P((device_t)); + +#endif // !_WIN32 + +void re_mdio_write __P((struct re_softc*, u_int8_t, u_int16_t)); +u_int16_t re_mdio_read __P((struct re_softc*, u_int8_t)); +static void re_ephy_write __P((struct re_softc*, u_int8_t, u_int16_t)); +static u_int16_t re_ephy_read __P((struct re_softc*, u_int8_t)); +static u_int8_t re_efuse_read __P((struct re_softc*, u_int16_t)); +static void re_real_ocp_phy_write __P((struct re_softc*, u_int16_t, u_int16_t)); +static u_int16_t re_real_ocp_phy_read __P((struct re_softc*, u_int16_t)); +static void re_ocp_phy_write __P((struct re_softc*, u_int16_t, u_int8_t, u_int16_t)); +static u_int16_t re_ocp_phy_read __P((struct re_softc*, u_int16_t, u_int8_t)); +void re_mac_ocp_write __P((struct re_softc*, u_int16_t, u_int16_t)); +u_int16_t re_mac_ocp_read __P((struct re_softc*, u_int16_t)); +static void re_csi_other_fun_write __P((struct re_softc *, u_int8_t, u_int16_t, u_int32_t Regata)); +static u_int32_t re_csi_other_fun_read __P((struct re_softc *, u_int8_t, u_int16_t)); +static void re_csi_write __P((struct re_softc*, u_int16_t, u_int32_t)); +static u_int32_t re_csi_read __P((struct re_softc*, u_int16_t)); +//static u_int8_t re_csi_fun0_read_byte __P((struct re_softc*, u_int16_t)); +static bool re_set_phy_mcu_patch_request __P((struct re_softc *)); +static bool re_clear_phy_mcu_patch_request __P((struct re_softc *)); + +static int re_check_dash __P((struct re_softc *)); + +#ifndef _WIN32 +static void re_driver_start __P((struct re_softc*)); +static void re_driver_stop __P((struct re_softc*)); + +static void re_hw_phy_config __P((struct re_softc *)); +static void re_init __P((void *)); +static int re_var_init __P((struct re_softc *)); +static void re_reset __P((struct re_softc *)); +static void re_stop __P((struct re_softc *)); +#endif // !_WIN32 + +static void re_setwol __P((struct re_softc *)); +static void re_clrwol __P((struct re_softc *)); +static u_int8_t re_set_wol_linkspeed __P((struct re_softc *)); + +#ifndef _WIN32 +static void re_start __P((struct ifnet *)); +static void re_start_locked __P((struct ifnet *)); +static int re_encap __P((struct re_softc *, struct mbuf **)); +static int re_8125_pad __P((struct re_softc *, struct mbuf *)); +static void WritePacket __P((struct re_softc *, bus_dma_segment_t*, int, int, uint32_t, uint32_t, uint32_t)); +static void re_start_tx __P((struct re_softc *)); +static uint32_t CountFreeTxDescNum __P((struct re_descriptor *)); +//static int CountMbufNum __P((struct mbuf *)); +#ifdef RE_FIXUP_RX +static __inline void re_fixup_rx __P((struct mbuf *)); +#endif +static void re_txeof __P((struct re_softc *)); + +//static int re_rxeof __P((struct re_softc *)); + +#if OS_VER < VERSION(7,0) +static void re_intr __P((void *)); +#else +static int re_intr __P((void *)); +#endif //OS_VER < VERSION(7,0) +#if OS_VER < VERSION(7,0) +static void re_intr_8125 __P((void *)); +#else +static int re_intr_8125 __P((void *)); +#endif //OS_VER < VERSION(7,0) +//static void re_set_multicast_reg __P((struct re_softc *, u_int32_t, u_int32_t)); +#endif // _WIN32 + +static void re_clear_all_rx_packet_filter __P((struct re_softc *)); + +#ifndef _WIN32 +static void re_set_rx_packet_filter_in_sleep_state __P((struct re_softc *)); +static void re_set_rx_packet_filter __P((struct re_softc *)); +static void re_setmulti __P((struct re_softc *)); +static int re_ioctl __P((struct ifnet *, u_long, caddr_t)); +static u_int8_t re_link_ok __P((struct re_softc *)); +static void re_link_on_patch __P((struct re_softc *)); +static void re_link_down_patch __P((struct re_softc *)); +static void re_init_timer __P((struct re_softc *)); +static void re_stop_timer __P((struct re_softc *)); +static void re_start_timer __P((struct re_softc *)); +static void re_tick __P((void *)); +#if OS_VER < VERSION(7,0) +static void re_watchdog __P((struct ifnet *)); #endif -void re_set_rx_packet_filter __P((struct re_softc*)); +static int re_ifmedia_upd __P((struct ifnet *)); +static void re_ifmedia_sts __P((struct ifnet *, struct ifmediareq *)); + +static int re_ifmedia_upd_8125 __P((struct ifnet *)); +static void re_ifmedia_sts_8125 __P((struct ifnet *, struct ifmediareq *)); +#endif // !_WIN32 + +static void re_eeprom_ShiftOutBits __P((struct re_softc *, int, int)); +//static u_int16_t re_eeprom_ShiftInBits __P((struct re_softc *)); +//static void re_eeprom_EEpromCleanup __P((struct re_softc *)); +//static void re_eeprom_getword __P((struct re_softc *, int, u_int16_t *)); +static void re_read_eeprom __P((struct re_softc *, caddr_t, int, int, int)); + +#ifndef _WIN32 +static void re_int_task_poll (void *, int); +static void re_int_task (void *, int); +static void re_int_task_8125_poll (void *, int); +static void re_int_task_8125 (void *, int); + +//static void re_phy_power_up(device_t dev); +//static void re_phy_power_down(device_t dev); +static int re_alloc_buf(struct re_softc *); +static void re_release_buf(struct re_softc *); +static void set_rxbufsize(struct re_softc*); +static void re_release_rx_buf(struct re_softc *); +static void re_release_tx_buf(struct re_softc *); +#endif // !_WIN32 + +static u_int32_t re_eri_read(struct re_softc *, int, int, int); +static int re_eri_write(struct re_softc *, int, int, u_int32_t, int); +static void OOB_mutex_lock(struct re_softc *); +static void OOB_mutex_unlock(struct re_softc *); + +#ifndef _WIN32 +static void re_hw_start_unlock(struct re_softc *sc); +static void re_hw_start_unlock_8125(struct re_softc *sc); + +static void re_add_sysctls (struct re_softc *); +static int re_sysctl_driver_variable (SYSCTL_HANDLER_ARGS); +static int re_sysctl_stats (SYSCTL_HANDLER_ARGS); +static int re_sysctl_registers (SYSCTL_HANDLER_ARGS); +static int re_sysctl_registers2 (SYSCTL_HANDLER_ARGS); +static int re_sysctl_registers3 (SYSCTL_HANDLER_ARGS); +static int re_sysctl_registers4 (SYSCTL_HANDLER_ARGS); +static int re_sysctl_registers5 (SYSCTL_HANDLER_ARGS); +static int re_sysctl_eth_phy (SYSCTL_HANDLER_ARGS); +static int re_sysctl_dump_rx_desc (SYSCTL_HANDLER_ARGS); +static int re_sysctl_dump_tx_desc (SYSCTL_HANDLER_ARGS); +static int re_sysctl_pcie_phy (SYSCTL_HANDLER_ARGS); +static int re_sysctl_extended_registers (SYSCTL_HANDLER_ARGS); +static int re_sysctl_pci_registers (SYSCTL_HANDLER_ARGS); +static int re_sysctl_msix_tbl (SYSCTL_HANDLER_ARGS); + +/* Tunables. */ +SYSCTL_NODE(_hw, OID_AUTO, re, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, ""); +static int msi_disable = 1; +SYSCTL_INT(_hw_re, OID_AUTO, msi_disable, CTLFLAG_RDTUN, &msi_disable, 0, + ""); +static int msix_disable = 0; +SYSCTL_INT(_hw_re, OID_AUTO, msix_disable, CTLFLAG_RDTUN, &msix_disable, 0, + ""); +static int prefer_iomap = 0; +SYSCTL_INT(_hw_re, OID_AUTO, prefer_iomap, CTLFLAG_RDTUN, &prefer_iomap, 0, + ""); +static int re_lro_entry_count = 128; +SYSCTL_INT(_hw_re, OID_AUTO, lro_entry_count, CTLFLAG_RDTUN, + &re_lro_entry_count, 0, ""); +static int re_lro_mbufq_depth = RE_RX_BUF_NUM; +SYSCTL_INT(_hw_re, OID_AUTO, lro_mbufq_depth, CTLFLAG_RDTUN, + &re_lro_mbufq_depth, 0, ""); +#ifdef ENABLE_EEE +static int eee_enable = 1; +#else +static int eee_enable = 0; +#endif +SYSCTL_INT(_hw_re, OID_AUTO, eee_enable, CTLFLAG_RDTUN, &eee_enable, 0, + ""); +static int phy_power_saving = 1; +SYSCTL_INT(_hw_re, OID_AUTO, phy_power_saving, CTLFLAG_RDTUN, + &phy_power_saving, 0, ""); +static int phy_mdix_mode = RE_ETH_PHY_AUTO_MDI_MDIX; +SYSCTL_INT(_hw_re, OID_AUTO, phy_mdix_mode, CTLFLAG_RDTUN, &phy_mdix_mode, + 0, ""); +#ifdef ENABLE_S5WOL +static int s5wol = 1; +#else +static int s5wol = 0; +SYSCTL_INT(_hw_re, OID_AUTO, s5wol, CTLFLAG_RDTUN, &s5wol, 0, ""); +#endif +#ifdef ENABLE_S0_MAGIC_PACKET +static int s0_magic_packet = 1; +#else +static int s0_magic_packet = 0; +#endif +SYSCTL_INT(_hw_re, OID_AUTO, s0_magic_packet, CTLFLAG_RDTUN, + &s0_magic_packet, 0, ""); +#ifdef CONFIG_SOC_LAN +static int config_soc_lan = 1; +#else +static int config_soc_lan = 0; +#endif +SYSCTL_INT(_hw_re, OID_AUTO, config_soc_lan, CTLFLAG_RDTUN, + &config_soc_lan, 0, ""); +#ifdef ENABLE_INTERRUPT_MITIGATIN +static int interrupt_mitigation = 1; +#else +static int interrupt_mitigation = 0; +#endif +SYSCTL_INT(_hw_re, OID_AUTO, interrupt_mitigation, CTLFLAG_RDTUN, + &interrupt_mitigation, 0, ""); +static int max_rx_mbuf_sz = MJUM9BYTES; +SYSCTL_INT(_hw_re, OID_AUTO, max_rx_mbuf_sz, CTLFLAG_RDTUN, + &max_rx_mbuf_sz, 0, ""); + +#define RE_CSUM_FEATURES_IPV4 (CSUM_IP | CSUM_TCP | CSUM_UDP) +#define RE_CSUM_FEATURES_IPV6 (CSUM_TCP_IPV6 | CSUM_UDP_IPV6) +#define RE_CSUM_FEATURES (RE_CSUM_FEATURES_IPV4 | RE_CSUM_FEATURES_IPV6) + +static device_method_t re_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, re_probe), + DEVMETHOD(device_attach, re_attach), + DEVMETHOD(device_detach, re_detach), + DEVMETHOD(device_suspend, re_suspend), + DEVMETHOD(device_resume, re_resume), + DEVMETHOD(device_shutdown, re_shutdown), + { 0, 0 } +}; -static void re_eeprom_ShiftOutBits __P((struct re_softc*, int, int)); -static u_int16_t re_eeprom_ShiftInBits __P((struct re_softc*)); -static void re_eeprom_EEpromCleanup __P((struct re_softc*)); -static void re_eeprom_getword __P((struct re_softc*, int, u_int16_t*)); -static void re_read_eeprom __P((struct re_softc*, caddr_t, int, int, int)); +static driver_t re_driver = { + "re", + re_methods, + sizeof(struct re_softc) +}; -static u_int32_t re_eri_read(struct re_softc*, int, int, int); -static int re_eri_write(struct re_softc*, int, int, u_int32_t, int); -static void OOB_mutex_lock(struct re_softc*); -static void OOB_mutex_unlock(struct re_softc*); +#if OS_VER>=VERSION(14,0) +DRIVER_MODULE(if_re, pci, re_driver, 0, 0); +#else +static devclass_t re_devclass; +DRIVER_MODULE(if_re, pci, re_driver, re_devclass, 0, 0); +#endif +MODULE_DEPEND(if_re, pci, 1, 1, 1); +MODULE_DEPEND(if_re, ether, 1, 1, 1); -static int re_check_dash(struct re_softc* sc); +#endif // !_WIN32 static void -ClearAndSetEthPhyBit( - struct re_softc* sc, - u_int8_t addr, - u_int16_t clearmask, - u_int16_t setmask +re_clear_set_eth_phy_bit( + struct re_softc *sc, + u_int8_t addr, + u_int16_t clearmask, + u_int16_t setmask ) { - u_int16_t PhyRegValue; + u_int16_t PhyRegValue; - - PhyRegValue = MP_ReadPhyUshort(sc, addr); - PhyRegValue &= ~clearmask; - PhyRegValue |= setmask; - MP_WritePhyUshort(sc, addr, PhyRegValue); + PhyRegValue = re_mdio_read(sc, addr); + PhyRegValue &= ~clearmask; + PhyRegValue |= setmask; + re_mdio_write(sc, addr, PhyRegValue); } static void -ClearEthPhyBit( - struct re_softc* sc, - u_int8_t addr, - u_int16_t mask +re_clear_eth_phy_bit( + struct re_softc *sc, + u_int8_t addr, + u_int16_t mask ) { - ClearAndSetEthPhyBit(sc, - addr, - mask, - 0 - ); + re_clear_set_eth_phy_bit(sc, + addr, + mask, + 0 + ); } static void -SetEthPhyBit( - struct re_softc* sc, - u_int8_t addr, - u_int16_t mask +re_set_eth_phy_bit( + struct re_softc *sc, + u_int8_t addr, + u_int16_t mask ) { - ClearAndSetEthPhyBit(sc, - addr, - 0, - mask - ); + re_clear_set_eth_phy_bit(sc, + addr, + 0, + mask + ); } static void -ClearAndSetEthPhyOcpBit( - struct re_softc* sc, - u_int16_t addr, - u_int16_t clearmask, - u_int16_t setmask +re_clear_set_eth_ocp_phy_bit( + struct re_softc *sc, + u_int16_t addr, + u_int16_t clearmask, + u_int16_t setmask ) { - u_int16_t PhyRegValue; + u_int16_t PhyRegValue; - PhyRegValue = MP_RealReadPhyOcpRegWord(sc, addr); - PhyRegValue &= ~clearmask; - PhyRegValue |= setmask; - MP_RealWritePhyOcpRegWord(sc, addr, PhyRegValue); + PhyRegValue = re_real_ocp_phy_read(sc, addr); + PhyRegValue &= ~clearmask; + PhyRegValue |= setmask; + re_real_ocp_phy_write(sc, addr, PhyRegValue); } static void -ClearEthPhyOcpBit( - struct re_softc* sc, - u_int16_t addr, - u_int16_t mask +re_clear_eth_ocp_phy_bit( + struct re_softc *sc, + u_int16_t addr, + u_int16_t mask ) { - ClearAndSetEthPhyOcpBit(sc, - addr, - mask, - 0 - ); + re_clear_set_eth_ocp_phy_bit(sc, + addr, + mask, + 0 + ); } static void -SetEthPhyOcpBit( - struct re_softc* sc, - u_int16_t addr, - u_int16_t mask +re_set_eth_ocp_phy_bit( + struct re_softc *sc, + u_int16_t addr, + u_int16_t mask ) { - ClearAndSetEthPhyOcpBit(sc, - addr, - 0, - mask - ); + re_clear_set_eth_ocp_phy_bit(sc, + addr, + 0, + mask + ); } static void -ClearAndSetMcuAccessRegBit( - struct re_softc* sc, - u_int16_t addr, - u_int16_t clearmask, - u_int16_t setmask +re_clear_set_mac_ocp_bit( + struct re_softc *sc, + u_int16_t addr, + u_int16_t clearmask, + u_int16_t setmask ) { - u_int16_t PhyRegValue; + u_int16_t PhyRegValue; - PhyRegValue = MP_ReadMcuAccessRegWord(sc, addr); - PhyRegValue &= ~clearmask; - PhyRegValue |= setmask; - MP_WriteMcuAccessRegWord(sc, addr, PhyRegValue); + PhyRegValue = re_mac_ocp_read(sc, addr); + PhyRegValue &= ~clearmask; + PhyRegValue |= setmask; + re_mac_ocp_write(sc, addr, PhyRegValue); } static void -ClearMcuAccessRegBit( - struct re_softc* sc, - u_int16_t addr, - u_int16_t mask +re_clear_mac_ocp_bit( + struct re_softc *sc, + u_int16_t addr, + u_int16_t mask ) { - ClearAndSetMcuAccessRegBit(sc, - addr, - mask, - 0 - ); + re_clear_set_mac_ocp_bit(sc, + addr, + mask, + 0 + ); } static void -SetMcuAccessRegBit( - struct re_softc* sc, - u_int16_t addr, - u_int16_t mask +re_set_mac_ocp_bit( + struct re_softc *sc, + u_int16_t addr, + u_int16_t mask ) { - ClearAndSetMcuAccessRegBit(sc, - addr, - 0, - mask - ); + re_clear_set_mac_ocp_bit(sc, + addr, + 0, + mask + ); } -static void re_clear_phy_ups_reg(struct re_softc* sc) +static void re_clear_phy_ups_reg(struct re_softc *sc) { - switch (sc->re_type) { - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - ClearEthPhyOcpBit(sc, 0xA466, BIT_0); + switch(sc->re_type) { + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_clear_eth_ocp_phy_bit(sc, 0xA466, BIT_0); /* FALLTHROUGH */ - case MACFG_80: - case MACFG_81: - ClearEthPhyOcpBit(sc, 0xA468, BIT_3 | BIT_1); - break; - }; -} - -static int re_is_ups_resume(struct re_softc* sc) -{ - switch (sc->re_type) { - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - return (MP_ReadMcuAccessRegWord(sc, 0xD42C) & BIT_8); - default: - return (MP_ReadMcuAccessRegWord(sc, 0xD408) & BIT_0); - } -} - -static void re_clear_ups_resume_bit(struct re_softc* sc) -{ - switch (sc->re_type) { - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - MP_WriteMcuAccessRegWord(sc, 0xD42C, MP_ReadMcuAccessRegWord(sc, 0xD42C) & ~(BIT_8)); - break; - default: - MP_WriteMcuAccessRegWord(sc, 0xD408, MP_ReadMcuAccessRegWord(sc, 0xD408) & ~(BIT_0)); - break; - } + case MACFG_80: + case MACFG_81: + re_clear_eth_ocp_phy_bit(sc, 0xA468, BIT_3 | BIT_1); + break; + }; } -static void re_wait_phy_ups_resume(struct re_softc* sc, u_int16_t PhyState) +static int re_is_ups_resume(struct re_softc *sc) { - u_int16_t TmpPhyState; - int i = 0; - - switch (sc->re_type) { - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - do { - TmpPhyState = MP_RealReadPhyOcpRegWord(sc, 0xA420); - TmpPhyState &= 0x7; - DELAY(1000); - i++; - } while ((i < 100) && (TmpPhyState != 2)); - break; - default: - do { - TmpPhyState = MP_ReadPhyOcpRegWord(sc, 0x0A42, 0x10); - TmpPhyState &= 0x7; - DELAY(1000); - i++; - } while ((i < 100) && (TmpPhyState != 2)); - break; - }; + switch(sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + return (re_mac_ocp_read(sc, 0xD42C) & BIT_8); + default: + return (re_mac_ocp_read(sc, 0xD408) & BIT_0); + } } -void re_phy_power_up(struct re_softc* sc) +static void re_clear_ups_resume_bit(struct re_softc *sc) { - u_int8_t Data8; - - if ((sc->re_if_flags & RL_FLAG_PHYWAKE_PM) != 0) - CSR_WRITE_1(sc, RE_PMCH, CSR_READ_1(sc, RE_PMCH) | (BIT_6 | BIT_7)); - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - switch (sc->re_type) { - case MACFG_4: - case MACFG_5: - case MACFG_6: - case MACFG_21: - case MACFG_22: - case MACFG_23: - case MACFG_24: - case MACFG_25: - case MACFG_26: - case MACFG_27: - case MACFG_28: - case MACFG_31: - case MACFG_32: - case MACFG_33: - case MACFG_63: - case MACFG_64: - case MACFG_65: - case MACFG_66: - MP_WritePhyUshort(sc, 0x0e, 0x0000); - break; - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_61: - Data8 = re_eri_read(sc, 0x1AB, 1, ERIAR_ExGMAC); - Data8 |= (BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7); - re_eri_write(sc, 0x1AB, 1, Data8, ERIAR_ExGMAC); - break; - default: - break; - }; - - - MP_WritePhyUshort(sc, MII_BMCR, BMCR_AUTOEN); - - //wait mdc/mdio ready - switch (sc->re_type) { - case MACFG_61: - case MACFG_62: - case MACFG_67: - DELAY(10000); - break; - } - - //wait ups resume (phy state 3) - switch (sc->re_type) { - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - re_wait_phy_ups_resume(sc, 3); - break; - }; + switch(sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_mac_ocp_write(sc, 0xD42C, re_mac_ocp_read(sc, 0xD42C) & ~(BIT_8)); + break; + default: + re_mac_ocp_write(sc, 0xD408, re_mac_ocp_read(sc, 0xD408) & ~(BIT_0)); + break; + } } -static u_int16_t re_get_phy_lp_ability(struct re_softc* sc) +static u_int8_t re_get_phy_state(struct re_softc *sc) { - u_int16_t anlpar; - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - anlpar = MP_ReadPhyUshort(sc, MII_ANLPAR); - - return anlpar; + switch(sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + return (re_real_ocp_phy_read(sc, 0xA420) & 0x7); + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + return (re_ocp_phy_read(sc, 0x0A42, 0x10) & 0x7); + default: + return 0xff; + }; } -static void re_phy_power_down(struct re_softc* sc) +static void re_wait_phy_ups_resume(struct re_softc *sc, u_int16_t PhyState) { - u_int8_t Data8; - -#ifdef ENABLE_FIBER_SUPPORT - if (HW_FIBER_MODE_ENABLED(sc)) - return; -#endif //ENABLE_FIBER_SUPPORT - - if (sc->re_dash) { -#if DISABLED_CODE - re_set_wol_linkspeed(sc); -#endif - return; - } - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - switch (sc->re_type) { - case MACFG_21: - case MACFG_22: - case MACFG_23: - case MACFG_24: - case MACFG_25: - case MACFG_26: - case MACFG_27: - case MACFG_28: - case MACFG_31: - case MACFG_32: - case MACFG_33: - case MACFG_63: - case MACFG_64: - case MACFG_65: - case MACFG_66: - MP_WritePhyUshort(sc, 0x0e, 0x0200); - MP_WritePhyUshort(sc, MII_BMCR, (BMCR_AUTOEN | BMCR_PDOWN)); - break; - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_61: - Data8 = re_eri_read(sc, 0x1AB, 1, ERIAR_ExGMAC); - Data8 &= ~(BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7); - re_eri_write(sc, 0x1AB, 1, Data8, ERIAR_ExGMAC); - - MP_WritePhyUshort(sc, MII_BMCR, (BMCR_AUTOEN | BMCR_PDOWN)); - break; - default: - MP_WritePhyUshort(sc, MII_BMCR, (BMCR_AUTOEN | BMCR_PDOWN)); - break; - } - - switch (sc->re_type) { - case MACFG_36: - case MACFG_37: - case MACFG_42: - case MACFG_43: - case MACFG_54: - case MACFG_55: - CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) & ~BIT_6); - break; - case MACFG_38: - case MACFG_39: - case MACFG_50: - case MACFG_51: - case MACFG_52: - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) & ~BIT_6); - CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~BIT_6); - break; - } - - if ((sc->re_if_flags & RL_FLAG_PHYWAKE_PM) != 0) - CSR_WRITE_1(sc, RE_PMCH, CSR_READ_1(sc, RE_PMCH) & ~(BIT_6 | BIT_7)); + switch(sc->re_type) { + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + for (int i=0; i< 100; i++) { + if (re_get_phy_state(sc) == PhyState) + break; + else + DELAY(1000); + } + break; + default: + break; + }; } -static u_int32_t re_eri_read_with_oob_base_address(struct re_softc* sc, int addr, int len, int type, const u_int32_t base_address) +#ifdef _WIN32 +void re_phy_power_up(struct re_softc* sc) +#else // _WIN32 +static void re_phy_power_up(device_t dev) +#endif // _WIN32 { - int i, val_shift, shift = 0; - u_int32_t value1 = 0, value2 = 0, mask; - const u_int32_t transformed_base_address = ((base_address & 0x00FFF000) << 6) | (base_address & 0x000FFF); +#ifndef _WIN32 + struct re_softc *sc; +#endif // !_WIN32 - if (len > 4 || len <= 0) - return -1; + u_int8_t Data8; - while (len > 0) { - val_shift = addr % ERIAR_Addr_Align; - addr = addr & ~0x3; +#ifndef _WIN32 + sc = device_get_softc(dev); +#endif // !_WIN32 - CSR_WRITE_4(sc, RE_ERIAR, - ERIAR_Read | - transformed_base_address | - type << ERIAR_Type_shift | - ERIAR_ByteEn << ERIAR_ByteEn_shift | - addr); + if ((sc->re_if_flags & RL_FLAG_PHYWAKE_PM) != 0) + CSR_WRITE_1(sc, RE_PMCH, CSR_READ_1(sc, RE_PMCH) | (BIT_6|BIT_7)); - for (i = 0; i < 10; i++) { - DELAY(100); + re_mdio_write(sc, 0x1F, 0x0000); - /* Check if the RTL8168 has completed ERI read */ - if (CSR_READ_4(sc, RE_ERIAR) & ERIAR_Flag) + switch (sc->re_type) { + case MACFG_4: + case MACFG_5: + case MACFG_6: + case MACFG_21: + case MACFG_22: + case MACFG_23: + case MACFG_24: + case MACFG_25: + case MACFG_26: + case MACFG_27: + case MACFG_28: + case MACFG_31: + case MACFG_32: + case MACFG_33: + case MACFG_63: + case MACFG_64: + case MACFG_65: + case MACFG_66: + re_mdio_write(sc, 0x0e, 0x0000); break; - } + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_61: + Data8 = re_eri_read(sc, 0x1AB, 1, ERIAR_ExGMAC); + Data8 |= (BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7); + re_eri_write(sc, 0x1AB, 1, Data8, ERIAR_ExGMAC); + break; + default: + break; + }; - if (len == 1) mask = (0xFF << (val_shift * 8)) & 0xFFFFFFFF; - else if (len == 2) mask = (0xFFFF << (val_shift * 8)) & 0xFFFFFFFF; - else if (len == 3) mask = (0xFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; - else mask = (0xFFFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; - value1 = CSR_READ_4(sc, RE_ERIDR) & mask; - value2 |= (value1 >> val_shift * 8) << shift * 8; + re_mdio_write(sc, MII_BMCR, BMCR_AUTOEN); - if (len <= 4 - val_shift) - len = 0; - else { - len -= (4 - val_shift); - shift = 4 - val_shift; - addr += 4; + //wait mdc/mdio ready + switch(sc->re_type) { + case MACFG_61: + case MACFG_62: + case MACFG_67: + DELAY(10000); + break; } - } - return value2; + //wait ups resume (phy state 3) + switch(sc->re_type) { + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_wait_phy_ups_resume(sc, 3); + break; + }; } -static u_int32_t re_eri_read(struct re_softc* sc, int addr, int len, int type) +static u_int16_t re_get_phy_lp_ability(struct re_softc *sc) { - return re_eri_read_with_oob_base_address(sc, addr, len, type, 0); -} + u_int16_t anlpar; -static int re_eri_write_with_oob_base_address(struct re_softc* sc, int addr, int len, u_int32_t value, int type, const u_int32_t base_address) -{ + re_mdio_write(sc, 0x1F, 0x0000); + anlpar = re_mdio_read(sc, MII_ANLPAR); - int i, val_shift, shift = 0; - u_int32_t value1 = 0, mask; - const u_int32_t transformed_base_address = ((base_address & 0x00FFF000) << 6) | (base_address & 0x000FFF); + return anlpar; +} - if (len > 4 || len <= 0) - return -1; +#ifdef _WIN32 +static void re_phy_power_down(struct re_softc* sc) +#else // _WIN32 +static void re_phy_power_down(device_t dev) +#endif // _WIN32 +{ +#ifndef _WIN32 + struct re_softc *sc; +#endif // !_WIN32 - while (len > 0) { - val_shift = addr % ERIAR_Addr_Align; - addr = addr & ~0x3; + u_int8_t Data8; - if (len == 1) mask = (0xFF << (val_shift * 8)) & 0xFFFFFFFF; - else if (len == 2) mask = (0xFFFF << (val_shift * 8)) & 0xFFFFFFFF; - else if (len == 3) mask = (0xFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; - else mask = (0xFFFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; +#ifndef _WIN32 + sc = device_get_softc(dev); +#endif // !_WIN32 - value1 = re_eri_read_with_oob_base_address(sc, addr, 4, type, base_address) & ~mask; - value1 |= ((value << val_shift * 8) >> shift * 8); +#ifdef ENABLE_FIBER_SUPPORT + if (HW_FIBER_MODE_ENABLED(sc)) + return; +#endif //ENABLE_FIBER_SUPPORT - CSR_WRITE_4(sc, RE_ERIDR, value1); - CSR_WRITE_4(sc, RE_ERIAR, - ERIAR_Write | - transformed_base_address | - type << ERIAR_Type_shift | - ERIAR_ByteEn << ERIAR_ByteEn_shift | - addr); + if (sc->re_dash) { +#ifndef _WIN32 + re_set_wol_linkspeed(sc); +#endif // !_WIN32 + return; + } - for (i = 0; i < 10; i++) { - DELAY(100); + re_mdio_write(sc, 0x1F, 0x0000); - /* Check if the RTL8168 has completed ERI write */ - if (!(CSR_READ_4(sc, RE_ERIAR) & ERIAR_Flag)) + switch (sc->re_type) { + case MACFG_21: + case MACFG_22: + case MACFG_23: + case MACFG_24: + case MACFG_25: + case MACFG_26: + case MACFG_27: + case MACFG_28: + case MACFG_31: + case MACFG_32: + case MACFG_33: + case MACFG_63: + case MACFG_64: + case MACFG_65: + case MACFG_66: + re_mdio_write(sc, 0x0e, 0x0200); + re_mdio_write(sc, MII_BMCR, (BMCR_AUTOEN|BMCR_PDOWN)); + break; + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_61: + Data8 = re_eri_read(sc, 0x1AB, 1, ERIAR_ExGMAC); + Data8 &= ~(BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7); + re_eri_write(sc, 0x1AB, 1, Data8, ERIAR_ExGMAC); + + re_mdio_write(sc, MII_BMCR, (BMCR_AUTOEN|BMCR_PDOWN)); + break; + default: + re_mdio_write(sc, MII_BMCR, (BMCR_AUTOEN|BMCR_PDOWN)); break; } - if (len <= 4 - val_shift) - len = 0; - else { - len -= (4 - val_shift); - shift = 4 - val_shift; - addr += 4; + switch (sc->re_type) { + case MACFG_36: + case MACFG_37: + case MACFG_42: + case MACFG_43: + case MACFG_54: + case MACFG_55: + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) & ~BIT_6); + break; + case MACFG_38: + case MACFG_39: + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) & ~BIT_6); + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~BIT_6); + break; } - } - return 0; + if ((sc->re_if_flags & RL_FLAG_PHYWAKE_PM) != 0) + CSR_WRITE_1(sc, RE_PMCH, CSR_READ_1(sc, RE_PMCH) & ~(BIT_6|BIT_7)); } -static int re_eri_write(struct re_softc* sc, int addr, int len, u_int32_t value, int type) -{ - return re_eri_write_with_oob_base_address(sc, addr, len, value, type, 0); -} +#ifndef _WIN32 -static void re_enable_cfg9346_write(struct re_softc* sc) +/* +static void re_tx_dma_map_buf(void *arg, bus_dma_segment_t *segs, int nseg, int error) { - EE_SET(RE_EEMODE_WRITECFG); -} + union TxDesc *txptr = arg; -static void re_disable_cfg9346_write(struct re_softc* sc) -{ - EE_CLR(RE_EEMODE_WRITECFG); + if (error) { + txptr->ul[0] &= ~htole32(RL_TDESC_CMD_BUFLEN); + txptr->so1.TxBuff = 0; + return; + } + + txptr->so1.TxBuff = htole64(segs->ds_addr); } +*/ -static void re_enable_force_clkreq(struct re_softc* sc, bool enable) +static void re_rx_dma_map_buf(void *arg, bus_dma_segment_t *segs, int nseg, int error) { - if (enable) - CSR_WRITE_1(sc, 0xF1, CSR_READ_1(sc, 0xF1) | BIT_7); - else - CSR_WRITE_1(sc, 0xF1, CSR_READ_1(sc, 0xF1) & ~BIT_7); + union RxDesc *rxptr = arg; + + if (error) { + rxptr->ul[0] &= ~htole32(RL_RDESC_CMD_BUFLEN); + /* make sure desc is releasing before change buffer address */ + wmb(); + rxptr->so0.RxBuff = 0; + return; + } + + rxptr->so0.RxBuff = htole64(segs->ds_addr); } -static void _re_enable_aspm_clkreq_lock(struct re_softc* sc, bool enable) +static void re_dma_map_rxdesc(void *arg, bus_dma_segment_t *segs, int nseg, int error) { - switch (sc->re_type) { - case MACFG_91: - case MACFG_92: - if (enable) { - CSR_WRITE_1(sc, RE_INT_CFG0_8125, CSR_READ_1(sc, RE_INT_CFG0_8125) | BIT_3); - CSR_WRITE_1(sc, RE_CFG5, CSR_READ_1(sc, RE_CFG5) | BIT_0); - } - else { - CSR_WRITE_1(sc, RE_INT_CFG0_8125, CSR_READ_1(sc, RE_INT_CFG0_8125) & ~BIT_3); - CSR_WRITE_1(sc, RE_CFG5, CSR_READ_1(sc, RE_CFG5) & ~BIT_0); - } - break; - default: - if (enable) { - CSR_WRITE_1(sc, RE_CFG5, CSR_READ_1(sc, RE_CFG5) | BIT_0); - CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | BIT_7); - } - else { - CSR_WRITE_1(sc, RE_CFG5, CSR_READ_1(sc, RE_CFG5) & ~BIT_0); - CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) & ~BIT_7); - } - break; - } -} - -static void re_enable_aspm_clkreq_lock(struct re_softc* sc, bool enable) -{ - re_enable_cfg9346_write(sc); - _re_enable_aspm_clkreq_lock(sc, enable); - re_disable_cfg9346_write(sc); -} - -static void DisableMcuBPs(struct re_softc* sc) -{ - u_int16_t regAddr; - - switch (sc->re_type) { - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - re_enable_aspm_clkreq_lock(sc, 0); - break; - } - - switch (sc->re_type) { - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - MP_WriteMcuAccessRegWord(sc, 0xFC38, 0x0000); - break; - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - MP_WriteMcuAccessRegWord(sc, 0xFC48, 0x0000); - break; - } - - switch (sc->re_type) { - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - MP_WriteMcuAccessRegWord(sc, 0xFC28, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xFC2A, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xFC2C, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xFC2E, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xFC30, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xFC32, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xFC34, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xFC36, 0x0000); - - DELAY(3000); - - MP_WriteMcuAccessRegWord(sc, 0xFC26, 0x0000); - break; - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - for (regAddr = 0xFC28; regAddr < 0xFC48; regAddr += 2) { - MP_WriteMcuAccessRegWord(sc, regAddr, 0x0000); - } + struct re_softc *sc = arg; - DELAY(3000); + if (error) + return; - MP_WriteMcuAccessRegWord(sc, 0xFC26, 0x0000); - break; - } + CSR_WRITE_4(sc, 0xe4, RL_ADDR_LO(segs->ds_addr)); + CSR_WRITE_4(sc, 0xe8, RL_ADDR_HI(segs->ds_addr)); } -static void -re_switch_mac_mcu_ram_code_page(struct re_softc* sc, u_int16_t page) +static void re_dma_map_txdesc(void *arg, bus_dma_segment_t *segs, int nseg, int error) { - u_int16_t tmpUshort; + struct re_softc *sc = arg; - page &= (BIT_1 | BIT_0); - tmpUshort = MP_ReadMcuAccessRegWord(sc, 0xE446); - tmpUshort &= ~(BIT_1 | BIT_0); - tmpUshort |= page; - MP_WriteMcuAccessRegWord(sc, 0xE446, tmpUshort); + if (error) + return; + + CSR_WRITE_4(sc, 0x20, RL_ADDR_LO(segs->ds_addr)); + CSR_WRITE_4(sc, 0x24, RL_ADDR_HI(segs->ds_addr)); } -static void -_re_write_mac_mcu_ram_code(struct re_softc* sc, const u_int16_t* entry, u_int16_t entry_cnt) +/* + * Probe for a RealTek 8129/8139 chip. Check the PCI vendor and device + * IDs against our list and return a device name if we find a match. + */ +static int re_probe(device_t dev) /* Search for Realtek NIC chip */ { - u_int16_t i; + struct re_type *t; + t = re_devs; + while (t->re_name != NULL) { + if ((pci_get_vendor(dev) == t->re_vid) && + (pci_get_device(dev) == t->re_did)) { + device_set_desc(dev, t->re_name); + return(0); + } + t++; + } - for (i = 0; i < entry_cnt; i++) { - MP_WriteMcuAccessRegWord(sc, 0xF800 + i * 2, entry[i]); - } + return(ENXIO); } -static void -_re_write_mac_mcu_ram_code_with_page(struct re_softc* sc, const u_int16_t* entry, u_int16_t entry_cnt, u_int16_t page_size) +#endif // !_WIN32 + +static u_int32_t re_eri_read_with_oob_base_address(struct re_softc *sc, int addr, int len, int type, const u_int32_t base_address) { - u_int16_t i; - u_int16_t offset; + int i, val_shift, shift = 0; + u_int32_t value1 = 0, value2 = 0, mask; + const u_int32_t transformed_base_address = ((base_address & 0x00FFF000) << 6) | (base_address & 0x000FFF); + + if (len > 4 || len <= 0) + return -1; + + while (len > 0) { + val_shift = addr % ERIAR_Addr_Align; + addr = addr & ~0x3; + + CSR_WRITE_4(sc,RE_ERIAR, + ERIAR_Read | + transformed_base_address | + type << ERIAR_Type_shift | + ERIAR_ByteEn << ERIAR_ByteEn_shift | + addr); + + for (i = 0; i < 10; i++) { + DELAY(100); + + /* Check if the RTL8168 has completed ERI read */ + if (CSR_READ_4(sc,RE_ERIAR) & ERIAR_Flag) + break; + } + + if (len == 1) mask = (0xFF << (val_shift * 8)) & 0xFFFFFFFF; + else if (len == 2) mask = (0xFFFF << (val_shift * 8)) & 0xFFFFFFFF; + else if (len == 3) mask = (0xFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; + else mask = (0xFFFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; - if (page_size == 0) return; + value1 = CSR_READ_4(sc,RE_ERIDR) & mask; + value2 |= (value1 >> val_shift * 8) << shift * 8; - for (i = 0; i < entry_cnt; i++) { - offset = i % page_size; - if (offset == 0) { - u_int16_t page = (i / page_size); - re_switch_mac_mcu_ram_code_page(sc, page); + if (len <= 4 - val_shift) + len = 0; + else { + len -= (4 - val_shift); + shift = 4 - val_shift; + addr += 4; + } } - MP_WriteMcuAccessRegWord(sc, 0xF800 + offset * 2, entry[i]); - } + + return value2; } -static void -re_write_mac_mcu_ram_code(struct re_softc* sc, const u_int16_t* entry, u_int16_t entry_cnt) -{ - if (FALSE == HW_SUPPORT_MAC_MCU(sc)) return; - if (entry == NULL || entry_cnt == 0) return; - - if (sc->MacMcuPageSize > 0) - _re_write_mac_mcu_ram_code_with_page(sc, entry, entry_cnt, sc->MacMcuPageSize); - else - _re_write_mac_mcu_ram_code(sc, entry, entry_cnt); -} - -static void re_set_mac_mcu_8168g_1(struct re_softc* sc) -{ - static const uint16_t mcu_patch_code_8168g_1[] = { - 0xE008, 0xE01B, 0xE022, 0xE094, 0xE097, 0xE09A, 0xE0B3, 0xE0BA, 0x49D2, - 0xF10D, 0x766C, 0x49E2, 0xF00A, 0x1EC0, 0x8EE1, 0xC60A, 0x77C0, 0x4870, - 0x9FC0, 0x1EA0, 0xC707, 0x8EE1, 0x9D6C, 0xC603, 0xBE00, 0xB416, 0x0076, - 0xE86C, 0xC406, 0x7580, 0x4852, 0x8D80, 0xC403, 0xBC00, 0xD3E0, 0x02C8, - 0x8918, 0xE815, 0x1100, 0xF011, 0xE812, 0x4990, 0xF002, 0xE817, 0xE80E, - 0x4992, 0xF002, 0xE80E, 0xE80A, 0x4993, 0xF002, 0xE818, 0xE806, 0x4991, - 0xF002, 0xE838, 0xC25E, 0xBA00, 0xC056, 0x7100, 0xFF80, 0x7100, 0x4892, - 0x4813, 0x8900, 0xE00A, 0x7100, 0x4890, 0x4813, 0x8900, 0xC74B, 0x74F8, - 0x48C2, 0x4841, 0x8CF8, 0xC746, 0x74FC, 0x49C0, 0xF120, 0x49C1, 0xF11E, - 0x74F8, 0x49C0, 0xF01B, 0x49C6, 0xF119, 0x74F8, 0x49C4, 0xF013, 0xC536, - 0x74B0, 0x49C1, 0xF1FD, 0xC537, 0xC434, 0x9CA0, 0xC435, 0x1C13, 0x484F, - 0x9CA2, 0xC52B, 0x74B0, 0x49C1, 0xF1FD, 0x74F8, 0x48C4, 0x8CF8, 0x7100, - 0x4893, 0x8900, 0xFF80, 0xC520, 0x74B0, 0x49C1, 0xF11C, 0xC71E, 0x74FC, - 0x49C1, 0xF118, 0x49C0, 0xF116, 0x74F8, 0x49C0, 0xF013, 0x48C3, 0x8CF8, - 0xC516, 0x74A2, 0x49CE, 0xF1FE, 0xC411, 0x9CA0, 0xC411, 0x1C13, 0x484F, - 0x9CA2, 0x74A2, 0x49CF, 0xF1FE, 0x7100, 0x4891, 0x8900, 0xFF80, 0xE400, - 0xD3E0, 0xE000, 0x0481, 0x0C81, 0xDE20, 0x0000, 0x0992, 0x1B76, 0xC602, - 0xBE00, 0x059C, 0x1B76, 0xC602, 0xBE00, 0x065A, 0xB400, 0x18DE, 0x2008, - 0x4001, 0xF10F, 0x7342, 0x1880, 0x2008, 0x0009, 0x4018, 0xF109, 0x7340, - 0x25BC, 0x130F, 0xF105, 0xC00A, 0x7300, 0x4831, 0x9B00, 0xB000, 0x7340, - 0x8320, 0xC302, 0xBB00, 0x0C12, 0xE860, 0xC406, 0x7580, 0x4851, 0x8D80, - 0xC403, 0xBC00, 0xD3E0, 0x02C8, 0xC406, 0x7580, 0x4850, 0x8D80, 0xC403, - 0xBC00, 0xD3E0, 0x0298 - }; - - MP_WriteMcuAccessRegWord(sc, 0xE43C, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xE43E, 0x0000); - - MP_WriteMcuAccessRegWord(sc, 0xE434, 0x0004); - MP_WriteMcuAccessRegWord(sc, 0xE43C, 0x0004); - - DisableMcuBPs(sc); - - re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168g_1, ARRAY_SIZE(mcu_patch_code_8168g_1)); - - MP_WriteMcuAccessRegWord(sc, 0xDE30, 0x0080); - - MP_WriteMcuAccessRegWord(sc, 0xFC26, 0x8000); - - MP_WriteMcuAccessRegWord(sc, 0xFC28, 0x0075); - MP_WriteMcuAccessRegWord(sc, 0xFC2A, 0x02B1); - MP_WriteMcuAccessRegWord(sc, 0xFC2C, 0x0991); - MP_WriteMcuAccessRegWord(sc, 0xFC2E, 0x059B); - MP_WriteMcuAccessRegWord(sc, 0xFC30, 0x0659); - MP_WriteMcuAccessRegWord(sc, 0xFC32, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xFC34, 0x02C7); - MP_WriteMcuAccessRegWord(sc, 0xFC36, 0x0279); -} - -static void re_set_mac_mcu_8168gu_1(struct re_softc* sc) -{ - static const uint16_t mcu_patch_code_8168gu_1[] = { - 0xE008, 0xE011, 0xE015, 0xE018, 0xE01B, 0xE027, 0xE043, 0xE065, 0x49E2, - 0xF005, 0x49EA, 0xF003, 0xC404, 0xBC00, 0xC403, 0xBC00, 0x0496, 0x051A, - 0x1D01, 0x8DE8, 0xC602, 0xBE00, 0x0206, 0x1B76, 0xC202, 0xBA00, 0x058A, - 0x1B76, 0xC602, 0xBE00, 0x0648, 0x74E6, 0x1B78, 0x46DC, 0x1300, 0xF005, - 0x74F8, 0x48C3, 0x48C4, 0x8CF8, 0x64E7, 0xC302, 0xBB00, 0x068E, 0x74E4, - 0x49C5, 0xF106, 0x49C6, 0xF107, 0x48C8, 0x48C9, 0xE011, 0x48C9, 0x4848, - 0xE00E, 0x4848, 0x49C7, 0xF00A, 0x48C9, 0xC60D, 0x1D1F, 0x8DC2, 0x1D00, - 0x8DC3, 0x1D11, 0x8DC0, 0xE002, 0x4849, 0x94E5, 0xC602, 0xBE00, 0x0238, - 0xE434, 0x49D9, 0xF01B, 0xC31E, 0x7464, 0x49C4, 0xF114, 0xC31B, 0x6460, - 0x14FA, 0xFA02, 0xE00F, 0xC317, 0x7460, 0x49C0, 0xF10B, 0xC311, 0x7462, - 0x48C1, 0x9C62, 0x4841, 0x9C62, 0xC30A, 0x1C04, 0x8C60, 0xE004, 0x1C15, - 0xC305, 0x8C60, 0xC602, 0xBE00, 0x0374, 0xE434, 0xE030, 0xE61C, 0xE906, - 0xC602, 0xBE00, 0x0000 - }; - - DisableMcuBPs(sc); - - re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168gu_1, ARRAY_SIZE(mcu_patch_code_8168gu_1)); - - MP_WriteMcuAccessRegWord(sc, 0xFC26, 0x8000); - - MP_WriteMcuAccessRegWord(sc, 0xFC28, 0x0493); - MP_WriteMcuAccessRegWord(sc, 0xFC2A, 0x0205); - MP_WriteMcuAccessRegWord(sc, 0xFC2C, 0x0589); - MP_WriteMcuAccessRegWord(sc, 0xFC2E, 0x0647); - MP_WriteMcuAccessRegWord(sc, 0xFC30, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xFC32, 0x0215); - MP_WriteMcuAccessRegWord(sc, 0xFC34, 0x0285); -} - -static void re_set_mac_mcu_8168gu_2(struct re_softc* sc) -{ - static const uint16_t mcu_patch_code_8168gu_2[] = { - 0xE008, 0xE00A, 0xE00D, 0xE02F, 0xE031, 0xE038, 0xE03A, 0xE051, 0xC202, - 0xBA00, 0x0DFC, 0x7444, 0xC502, 0xBD00, 0x0A30, 0x49D9, 0xF019, 0xC520, - 0x64A5, 0x1400, 0xF007, 0x0C01, 0x8CA5, 0x1C15, 0xC515, 0x9CA0, 0xE00F, - 0xC513, 0x74A0, 0x48C8, 0x48CA, 0x9CA0, 0xC510, 0x1B00, 0x9BA0, 0x1B1C, - 0x483F, 0x9BA2, 0x1B04, 0xC506, 0x9BA0, 0xC603, 0xBE00, 0x0298, 0x03DE, - 0xE434, 0xE096, 0xE860, 0xDE20, 0xD3C0, 0xC602, 0xBE00, 0x0A64, 0xC707, - 0x1D00, 0x8DE2, 0x48C1, 0xC502, 0xBD00, 0x00AA, 0xE0C0, 0xC502, 0xBD00, - 0x0132, 0xC50C, 0x74A2, 0x49CE, 0xF1FE, 0x1C00, 0x9EA0, 0x1C1C, 0x484F, - 0x9CA2, 0xC402, 0xBC00, 0x0AFA, 0xDE20, 0xE000, 0xE092, 0xE430, 0xDE20, - 0xE0C0, 0xE860, 0xE84C, 0xB400, 0xB430, 0xE410, 0xC0AE, 0xB407, 0xB406, - 0xB405, 0xB404, 0xB403, 0xB402, 0xB401, 0xC7EE, 0x76F4, 0xC2ED, 0xC3ED, - 0xC1EF, 0xC5F3, 0x74A0, 0x49CD, 0xF001, 0xC5EE, 0x74A0, 0x49C1, 0xF105, - 0xC5E4, 0x74A2, 0x49CE, 0xF00B, 0x7444, 0x484B, 0x9C44, 0x1C10, 0x9C62, - 0x1C11, 0x8C60, 0x1C00, 0x9CF6, 0xE0EC, 0x49E7, 0xF016, 0x1D80, 0x8DF4, - 0x74F8, 0x4843, 0x8CF8, 0x74F8, 0x74F8, 0x7444, 0x48C8, 0x48C9, 0x48CA, - 0x9C44, 0x74F8, 0x4844, 0x8CF8, 0x1E01, 0xE8DB, 0x7420, 0x48C1, 0x9C20, - 0xE0D5, 0x49E6, 0xF02A, 0x1D40, 0x8DF4, 0x74FC, 0x49C0, 0xF124, 0x49C1, - 0xF122, 0x74F8, 0x49C0, 0xF01F, 0xE8D3, 0x48C4, 0x8CF8, 0x1E00, 0xE8C6, - 0xC5B1, 0x74A0, 0x49C3, 0xF016, 0xC5AF, 0x74A4, 0x49C2, 0xF005, 0xC5AA, - 0x74B2, 0x49C9, 0xF10E, 0xC5A6, 0x74A8, 0x4845, 0x4846, 0x4847, 0x4848, - 0x9CA8, 0x74B2, 0x4849, 0x9CB2, 0x74A0, 0x484F, 0x9CA0, 0xE0AA, 0x49E4, - 0xF018, 0x1D10, 0x8DF4, 0x74F8, 0x74F8, 0x74F8, 0x4843, 0x8CF8, 0x74F8, - 0x74F8, 0x74F8, 0x4844, 0x4842, 0x4841, 0x8CF8, 0x1E01, 0xE89A, 0x7420, - 0x4841, 0x9C20, 0x7444, 0x4848, 0x9C44, 0xE091, 0x49E5, 0xF03E, 0x1D20, - 0x8DF4, 0x74F8, 0x48C2, 0x4841, 0x8CF8, 0x1E01, 0x7444, 0x49CA, 0xF103, - 0x49C2, 0xF00C, 0x49C1, 0xF004, 0x6447, 0x2244, 0xE002, 0x1C01, 0x9C62, - 0x1C11, 0x8C60, 0x1C00, 0x9CF6, 0x7444, 0x49C8, 0xF01D, 0x74FC, 0x49C0, - 0xF11A, 0x49C1, 0xF118, 0x74F8, 0x49C0, 0xF015, 0x49C6, 0xF113, 0xE875, - 0x48C4, 0x8CF8, 0x7420, 0x48C1, 0x9C20, 0xC50A, 0x74A2, 0x8CA5, 0x74A0, - 0xC505, 0x9CA2, 0x1C11, 0x9CA0, 0xE00A, 0xE434, 0xD3C0, 0xDC00, 0x7444, - 0x49CA, 0xF004, 0x48CA, 0x9C44, 0xE855, 0xE052, 0x49E8, 0xF024, 0x1D01, - 0x8DF5, 0x7440, 0x49C0, 0xF11E, 0x7444, 0x49C8, 0xF01B, 0x49CA, 0xF119, - 0xC5EC, 0x76A4, 0x49E3, 0xF015, 0x49C0, 0xF103, 0x49C1, 0xF011, 0x4849, - 0x9C44, 0x1C00, 0x9CF6, 0x7444, 0x49C1, 0xF004, 0x6446, 0x1E07, 0xE003, - 0x1C01, 0x1E03, 0x9C62, 0x1C11, 0x8C60, 0xE830, 0xE02D, 0x49E9, 0xF004, - 0x1D02, 0x8DF5, 0xE79C, 0x49E3, 0xF006, 0x1D08, 0x8DF4, 0x74F8, 0x74F8, - 0xE73A, 0x49E1, 0xF007, 0x1D02, 0x8DF4, 0x1E01, 0xE7A7, 0xDE20, 0xE410, - 0x49E0, 0xF017, 0x1D01, 0x8DF4, 0xC5FA, 0x1C00, 0x8CA0, 0x1C1B, 0x9CA2, - 0x74A2, 0x49CF, 0xF0FE, 0xC5F3, 0x74A0, 0x4849, 0x9CA0, 0x74F8, 0x49C0, - 0xF006, 0x48C3, 0x8CF8, 0xE820, 0x74F8, 0x74F8, 0xC432, 0xBC00, 0xC5E4, - 0x74A2, 0x49CE, 0xF1FE, 0x9EA0, 0x1C1C, 0x484F, 0x9CA2, 0xFF80, 0xB404, - 0xB405, 0xC5D9, 0x74A2, 0x49CE, 0xF1FE, 0xC41F, 0x9CA0, 0xC41C, 0x1C13, - 0x484F, 0x9CA2, 0x74A2, 0x49CF, 0xF1FE, 0xB005, 0xB004, 0xFF80, 0xB404, - 0xB405, 0xC5C7, 0x74A2, 0x49CE, 0xF1FE, 0xC40E, 0x9CA0, 0xC40A, 0x1C13, - 0x484F, 0x9CA2, 0x74A2, 0x49CF, 0xF1FE, 0xB005, 0xB004, 0xFF80, 0x0000, - 0x0481, 0x0C81, 0x0AE0 - }; - - DisableMcuBPs(sc); - - re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168gu_2, ARRAY_SIZE(mcu_patch_code_8168gu_2)); - - MP_WriteMcuAccessRegWord(sc, 0xFC26, 0x8000); - - MP_WriteMcuAccessRegWord(sc, 0xFC28, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xFC2A, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xFC2C, 0x0297); - MP_WriteMcuAccessRegWord(sc, 0xFC2E, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xFC30, 0x00A9); - MP_WriteMcuAccessRegWord(sc, 0xFC32, 0x012D); - MP_WriteMcuAccessRegWord(sc, 0xFC34, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xFC36, 0x08DF); -} - -static void re_set_mac_mcu_8168ep_1(struct re_softc* sc) -{ - static const uint16_t mcu_patch_code_8168ep_1[] = { - 0xE008, 0xE0D3, 0xE0D6, 0xE0D9, 0xE0DB, 0xE0DD, 0xE0DF, 0xE0E1, 0xC251, - 0x7340, 0x49B1, 0xF010, 0x1D02, 0x8D40, 0xC202, 0xBA00, 0x2C3A, 0xC0F0, - 0xE8DE, 0x2000, 0x8000, 0xC0B6, 0x268C, 0x752C, 0x49D4, 0xF112, 0xE025, - 0xC2F6, 0x7146, 0xC2F5, 0x7340, 0x49BE, 0xF103, 0xC7F2, 0xE002, 0xC7F1, - 0x304F, 0x6226, 0x49A1, 0xF1F0, 0x7222, 0x49A0, 0xF1ED, 0x2525, 0x1F28, - 0x3097, 0x3091, 0x9A36, 0x752C, 0x21DC, 0x25BC, 0xC6E2, 0x77C0, 0x1304, - 0xF014, 0x1303, 0xF014, 0x1302, 0xF014, 0x1301, 0xF014, 0x49D4, 0xF103, - 0xC3D7, 0xBB00, 0xC618, 0x67C6, 0x752E, 0x22D7, 0x26DD, 0x1505, 0xF013, - 0xC60A, 0xBE00, 0xC309, 0xBB00, 0xC308, 0xBB00, 0xC307, 0xBB00, 0xC306, - 0xBB00, 0x25C8, 0x25A6, 0x25AC, 0x25B2, 0x25B8, 0xCD08, 0x0000, 0xC0BC, - 0xC2FF, 0x7340, 0x49B0, 0xF04E, 0x1F46, 0x308F, 0xC3F7, 0x1C04, 0xE84D, - 0x1401, 0xF147, 0x7226, 0x49A7, 0xF044, 0x7222, 0x2525, 0x1F30, 0x3097, - 0x3091, 0x7340, 0xC4EA, 0x401C, 0xF006, 0xC6E8, 0x75C0, 0x49D7, 0xF105, - 0xE036, 0x1D08, 0x8DC1, 0x0208, 0x6640, 0x2764, 0x1606, 0xF12F, 0x6346, - 0x133B, 0xF12C, 0x9B34, 0x1B18, 0x3093, 0xC32A, 0x1C10, 0xE82A, 0x1401, - 0xF124, 0x1A36, 0x308A, 0x7322, 0x25B5, 0x0B0E, 0x1C00, 0xE82C, 0xC71F, - 0x4027, 0xF11A, 0xE838, 0x1F42, 0x308F, 0x1B08, 0xE824, 0x7236, 0x7746, - 0x1700, 0xF00D, 0xC313, 0x401F, 0xF103, 0x1F00, 0x9F46, 0x7744, 0x449F, - 0x445F, 0xE817, 0xC70A, 0x4027, 0xF105, 0xC302, 0xBB00, 0x2E08, 0x2DC2, - 0xC7FF, 0xBF00, 0xCDB8, 0xFFFF, 0x0C02, 0xA554, 0xA5DC, 0x402F, 0xF105, - 0x1400, 0xF1FA, 0x1C01, 0xE002, 0x1C00, 0xFF80, 0x49B0, 0xF004, 0x0B01, - 0xA1D3, 0xE003, 0x0B02, 0xA5D3, 0x3127, 0x3720, 0x0B02, 0xA5D3, 0x3127, - 0x3720, 0x1300, 0xF1FB, 0xFF80, 0x7322, 0x25B5, 0x1E28, 0x30DE, 0x30D9, - 0x7264, 0x1E11, 0x2368, 0x3116, 0xFF80, 0x1B7E, 0xC602, 0xBE00, 0x06A6, - 0x1B7E, 0xC602, 0xBE00, 0x0764, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, - 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, - 0x0000 - }; - - DisableMcuBPs(sc); - - re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168ep_1, ARRAY_SIZE(mcu_patch_code_8168ep_1)); - - MP_WriteMcuAccessRegWord(sc, 0xFC26, 0x8000); - - MP_WriteMcuAccessRegWord(sc, 0xFC28, 0x2549); - MP_WriteMcuAccessRegWord(sc, 0xFC2A, 0x06A5); - MP_WriteMcuAccessRegWord(sc, 0xFC2C, 0x0763); -} - -static bool re_check_dash_other_fun_present(struct re_softc* sc) -{ - //check if func 2 exist - if (MP_ReadOtherFunPciEConfigSpace(sc, 2, 0xf000) != 0xffffffff) - return true; - - return false; -} - -static void re_set_mac_mcu_8168ep_2(struct re_softc* sc) -{ - static const uint16_t mcu_patch_code_8168ep_2[] = { - 0xE008, 0xE017, 0xE052, 0xE056, 0xE058, 0xE05A, 0xE05C, 0xE05E, 0xC50F, - 0x76A4, 0x49E3, 0xF007, 0x49C0, 0xF103, 0xC607, 0xBE00, 0xC606, 0xBE00, - 0xC602, 0xBE00, 0x0BDA, 0x0BB6, 0x0BBA, 0xDC00, 0xB400, 0xB401, 0xB402, - 0xB403, 0xB404, 0xC02E, 0x7206, 0x49AE, 0xF1FE, 0xC12B, 0x9904, 0xC12A, - 0x9906, 0x7206, 0x49AE, 0xF1FE, 0x7200, 0x49A0, 0xF117, 0xC123, 0xC223, - 0xC323, 0xE808, 0xC322, 0xE806, 0xC321, 0xE804, 0xC320, 0xE802, 0xE00C, - 0x740E, 0x49CE, 0xF1FE, 0x9908, 0x990A, 0x9A0C, 0x9B0E, 0x740E, 0x49CE, - 0xF1FE, 0xFF80, 0xB004, 0xB003, 0xB002, 0xB001, 0xB000, 0xC604, 0xC002, - 0xB800, 0x1FC8, 0xE000, 0xE8E0, 0xF128, 0x0002, 0xFFFF, 0xF000, 0x8001, - 0x8002, 0x8003, 0x8004, 0x48C1, 0x48C2, 0xC502, 0xBD00, 0x0490, 0xC602, - 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, - 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000 - }; - - DisableMcuBPs(sc); - - re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168ep_2, ARRAY_SIZE(mcu_patch_code_8168ep_2)); - - MP_WriteMcuAccessRegWord(sc, 0xFC26, 0x8000); - - MP_WriteMcuAccessRegWord(sc, 0xFC28, 0x0BB3); - if (false == re_check_dash_other_fun_present(sc)) - MP_WriteMcuAccessRegWord(sc, 0xFC2A, 0x1FC7); - //MP_WriteMcuAccessRegWord(sc, 0xFC2C, 0x0485); -} - -static void re_set_mac_mcu_8411b_1(struct re_softc* sc) -{ - static const uint16_t mcu_patch_code_8411b_1[] = { - 0xE008, 0xE00A, 0xE00C, 0xE00E, 0xE027, 0xE04F, 0xE05E, 0xE065, 0xC602, - 0xBE00, 0x0000, 0xC502, 0xBD00, 0x074C, 0xC302, 0xBB00, 0x080A, 0x6420, - 0x48C2, 0x8C20, 0xC516, 0x64A4, 0x49C0, 0xF009, 0x74A2, 0x8CA5, 0x74A0, - 0xC50E, 0x9CA2, 0x1C11, 0x9CA0, 0xE006, 0x74F8, 0x48C4, 0x8CF8, 0xC404, - 0xBC00, 0xC403, 0xBC00, 0x0BF2, 0x0C0A, 0xE434, 0xD3C0, 0x49D9, 0xF01F, - 0xC526, 0x64A5, 0x1400, 0xF007, 0x0C01, 0x8CA5, 0x1C15, 0xC51B, 0x9CA0, - 0xE013, 0xC519, 0x74A0, 0x48C4, 0x8CA0, 0xC516, 0x74A4, 0x48C8, 0x48CA, - 0x9CA4, 0xC512, 0x1B00, 0x9BA0, 0x1B1C, 0x483F, 0x9BA2, 0x1B04, 0xC508, - 0x9BA0, 0xC505, 0xBD00, 0xC502, 0xBD00, 0x0300, 0x051E, 0xE434, 0xE018, - 0xE092, 0xDE20, 0xD3C0, 0xC50F, 0x76A4, 0x49E3, 0xF007, 0x49C0, 0xF103, - 0xC607, 0xBE00, 0xC606, 0xBE00, 0xC602, 0xBE00, 0x0C4C, 0x0C28, 0x0C2C, - 0xDC00, 0xC707, 0x1D00, 0x8DE2, 0x48C1, 0xC502, 0xBD00, 0x00AA, 0xE0C0, - 0xC502, 0xBD00, 0x0132 - }; - - DisableMcuBPs(sc); - - re_write_mac_mcu_ram_code(sc, mcu_patch_code_8411b_1, ARRAY_SIZE(mcu_patch_code_8411b_1)); - - MP_WriteMcuAccessRegWord(sc, 0xFC26, 0x8000); - - MP_WriteMcuAccessRegWord(sc, 0xFC2A, 0x0743); - MP_WriteMcuAccessRegWord(sc, 0xFC2C, 0x0801); - MP_WriteMcuAccessRegWord(sc, 0xFC2E, 0x0BE9); - MP_WriteMcuAccessRegWord(sc, 0xFC30, 0x02FD); - MP_WriteMcuAccessRegWord(sc, 0xFC32, 0x0C25); - MP_WriteMcuAccessRegWord(sc, 0xFC34, 0x00A9); - MP_WriteMcuAccessRegWord(sc, 0xFC36, 0x012D); -} - -static void re_set_mac_mcu_8168h_1(struct re_softc* sc) -{ - DisableMcuBPs(sc); -} - -static void re_set_mac_mcu_8168h_2(struct re_softc* sc) -{ - static const uint16_t mcu_patch_code_8168h_2[] = { - 0xE008, 0xE00F, 0xE011, 0xE047, 0xE049, 0xE073, 0xE075, 0xE07A, 0xC707, - 0x1D00, 0x8DE2, 0x48C1, 0xC502, 0xBD00, 0x00E4, 0xE0C0, 0xC502, 0xBD00, - 0x0216, 0xC634, 0x75C0, 0x49D3, 0xF027, 0xC631, 0x75C0, 0x49D3, 0xF123, - 0xC627, 0x75C0, 0xB405, 0xC525, 0x9DC0, 0xC621, 0x75C8, 0x49D5, 0xF00A, - 0x49D6, 0xF008, 0x49D7, 0xF006, 0x49D8, 0xF004, 0x75D2, 0x49D9, 0xF111, - 0xC517, 0x9DC8, 0xC516, 0x9DD2, 0xC618, 0x75C0, 0x49D4, 0xF003, 0x49D0, - 0xF104, 0xC60A, 0xC50E, 0x9DC0, 0xB005, 0xC607, 0x9DC0, 0xB007, 0xC602, - 0xBE00, 0x1A06, 0xB400, 0xE86C, 0xA000, 0x01E1, 0x0200, 0x9200, 0xE84C, - 0xE004, 0xE908, 0xC502, 0xBD00, 0x0B58, 0xB407, 0xB404, 0x2195, 0x25BD, - 0x9BE0, 0x1C1C, 0x484F, 0x9CE2, 0x72E2, 0x49AE, 0xF1FE, 0x0B00, 0xF116, - 0xC71C, 0xC419, 0x9CE0, 0x1C13, 0x484F, 0x9CE2, 0x74E2, 0x49CE, 0xF1FE, - 0xC412, 0x9CE0, 0x1C13, 0x484F, 0x9CE2, 0x74E2, 0x49CE, 0xF1FE, 0xC70C, - 0x74F8, 0x48C3, 0x8CF8, 0xB004, 0xB007, 0xC502, 0xBD00, 0x0F24, 0x0481, - 0x0C81, 0xDE24, 0xE000, 0xC602, 0xBE00, 0x0CA4, 0x48C1, 0x48C2, 0x9C46, - 0xC402, 0xBC00, 0x0578, 0xC602, 0xBE00, 0x0000 - }; - - DisableMcuBPs(sc); - - re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168h_2, ARRAY_SIZE(mcu_patch_code_8168h_2)); - - MP_WriteMcuAccessRegWord(sc, 0xFC26, 0x8000); - - MP_WriteMcuAccessRegWord(sc, 0xFC28, 0x00E2); - MP_WriteMcuAccessRegWord(sc, 0xFC2A, 0x0210); - MP_WriteMcuAccessRegWord(sc, 0xFC2C, 0x1A04); - MP_WriteMcuAccessRegWord(sc, 0xFC2E, 0x0B26); - MP_WriteMcuAccessRegWord(sc, 0xFC30, 0x0F02); - MP_WriteMcuAccessRegWord(sc, 0xFC32, 0x0CA0); - //MP_WriteMcuAccessRegWord(sc, 0xFC34, 0x056C); - - if (sc->re_device_id == RT_DEVICEID_8136) - MP_WriteMcuAccessRegWord(sc, 0xFC38, 0x0033); - else - MP_WriteMcuAccessRegWord(sc, 0xFC38, 0x003F); -} - -static void re_set_mac_mcu_8168h_3(struct re_softc* sc) -{ - static const uint16_t mcu_patch_code_8168h_3[] = { - 0xE008, 0xE00A, 0xE00C, 0xE00E, 0xE010, 0xE03E, 0xE040, 0xE069, 0xC602, - 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC002, 0xB800, 0x0000, 0xC602, - 0xBE00, 0x0000, 0xC72B, 0x76E2, 0x49EE, 0xF1FD, 0x1E00, 0x9EE0, 0x1E1C, - 0x9EE2, 0x76E2, 0x49EE, 0xF1FE, 0xC621, 0x9EE0, 0x1E1D, 0x486F, 0x9EE2, - 0x76E2, 0x49EE, 0xF1FE, 0xC71A, 0x76E0, 0x48E8, 0x48E9, 0x48EA, 0x48EB, - 0x48EC, 0x9EE0, 0xC70D, 0xC60D, 0x9EF4, 0xC60C, 0x9EF6, 0xC70E, 0x76E0, - 0x4863, 0x9EE0, 0xB007, 0xC602, 0xBE00, 0x0ACC, 0xE000, 0x03BF, 0x07FF, - 0xDE24, 0x3200, 0xE096, 0xD438, 0xC602, 0xBE00, 0x0000, 0x8EE6, 0xC726, - 0x76E2, 0x49EE, 0xF1FD, 0x1E00, 0x8EE0, 0x1E1C, 0x8EE2, 0x76E2, 0x49EE, - 0xF1FE, 0xC61C, 0x8EE0, 0x1E1D, 0x486F, 0x8EE2, 0x76E2, 0x49EE, 0xF1FE, - 0xC715, 0x76E0, 0x48E8, 0x48E9, 0x48EA, 0x48EB, 0x48EC, 0x9EE0, 0xC708, - 0xC608, 0x9EF4, 0xC607, 0x9EF6, 0xC602, 0xBE00, 0x0ABE, 0xE000, 0x03BF, - 0x07FF, 0xDE24, 0x3200, 0xE096, 0xC602, 0xBE00, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x6838, 0x0A17, 0x0613, 0x0D26 - }; - - DisableMcuBPs(sc); - - re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168h_3, ARRAY_SIZE(mcu_patch_code_8168h_3)); - - MP_WriteMcuAccessRegWord(sc, 0xFC26, 0x8000); - - MP_WriteMcuAccessRegWord(sc, 0xFC30, 0x0ACA); - - MP_WriteMcuAccessRegWord(sc, 0xFC38, 0x0010); -} - -static void re_set_mac_mcu_8168h_4(struct re_softc* sc) -{ - DisableMcuBPs(sc); -} - -static void re_set_mac_mcu_8168fp_1(struct re_softc* sc) -{ - uint16_t breakPointEnabled = 0; - - DisableMcuBPs(sc); - - if (sc->HwPkgDet == 0x00 || sc->HwPkgDet == 0x0F) { - static const uint16_t mcu_patch_code_8168fp_1_1[] = { - 0xE00A, 0xE0C1, 0xE104, 0xE108, 0xE10D, 0xE112, 0xE11C, 0xE121, 0xE000, - 0xE0C8, 0xB400, 0xC1FE, 0x49E2, 0xF04C, 0x49EA, 0xF04A, 0x74E6, 0xC246, - 0x7542, 0x73EC, 0x1800, 0x49C0, 0xF10D, 0x49C1, 0xF10B, 0x49C2, 0xF109, - 0x49B0, 0xF107, 0x49B1, 0xF105, 0x7220, 0x49A2, 0xF102, 0xE002, 0x4800, - 0x49D0, 0xF10A, 0x49D1, 0xF108, 0x49D2, 0xF106, 0x49D3, 0xF104, 0x49DF, - 0xF102, 0xE00C, 0x4801, 0x72E4, 0x49AD, 0xF108, 0xC225, 0x6741, 0x48F0, - 0x8F41, 0x4870, 0x8F41, 0xC7CF, 0x49B5, 0xF01F, 0x49B2, 0xF00B, 0x4980, - 0xF003, 0x484E, 0x94E7, 0x4981, 0xF004, 0x485E, 0xC212, 0x9543, 0xE071, - 0x49B6, 0xF003, 0x49B3, 0xF10F, 0x4980, 0xF003, 0x484E, 0x94E7, 0x4981, - 0xF004, 0x485E, 0xC204, 0x9543, 0xE005, 0xE000, 0xE0FC, 0xE0FA, 0xE065, - 0x49B7, 0xF007, 0x4980, 0xF005, 0x1A38, 0x46D4, 0x1200, 0xF109, 0x4981, - 0xF055, 0x49C3, 0xF105, 0x1A30, 0x46D5, 0x1200, 0xF04F, 0x7220, 0x49A2, - 0xF130, 0x49C1, 0xF12E, 0x49B0, 0xF12C, 0xC2E6, 0x7240, 0x49A8, 0xF003, - 0x49D0, 0xF126, 0x49A9, 0xF003, 0x49D1, 0xF122, 0x49AA, 0xF003, 0x49D2, - 0xF11E, 0x49AB, 0xF003, 0x49DF, 0xF11A, 0x49AC, 0xF003, 0x49D3, 0xF116, - 0x4980, 0xF003, 0x49C7, 0xF105, 0x4981, 0xF02C, 0x49D7, 0xF02A, 0x49C0, - 0xF00C, 0xC721, 0x62F4, 0x49A0, 0xF008, 0x49A4, 0xF106, 0x4824, 0x8AF4, - 0xC71A, 0x1A40, 0x9AE0, 0x49B6, 0xF017, 0x200E, 0xC7B8, 0x72E0, 0x4710, - 0x92E1, 0xC70E, 0x77E0, 0x49F0, 0xF112, 0xC70B, 0x77E0, 0x27FE, 0x1AFA, - 0x4317, 0xC705, 0x9AE2, 0x1A11, 0x8AE0, 0xE008, 0xE41C, 0xC0AE, 0xD23A, - 0xC7A2, 0x74E6, 0x484F, 0x94E7, 0xC79E, 0x8CE6, 0x8BEC, 0xC29C, 0x8D42, - 0x7220, 0xB000, 0xC502, 0xBD00, 0x0932, 0xB400, 0xC240, 0xC340, 0x7060, - 0x498F, 0xF014, 0x488F, 0x9061, 0x744C, 0x49C3, 0xF004, 0x7562, 0x485E, - 0x9563, 0x7446, 0x49C3, 0xF106, 0x7562, 0x1C30, 0x46E5, 0x1200, 0xF004, - 0x7446, 0x484F, 0x9447, 0xC32A, 0x7466, 0x49C0, 0xF00F, 0x48C0, 0x9C66, - 0x7446, 0x4840, 0x4841, 0x4842, 0x9C46, 0x744C, 0x4840, 0x9C4C, 0x744A, - 0x484A, 0x9C4A, 0xE013, 0x498E, 0xF011, 0x488E, 0x9061, 0x744C, 0x49C3, - 0xF004, 0x7446, 0x484E, 0x9447, 0x7446, 0x1D38, 0x46EC, 0x1500, 0xF004, - 0x7446, 0x484F, 0x9447, 0xB000, 0xC502, 0xBD00, 0x074C, 0xE000, 0xE0FC, - 0xE0C0, 0x4830, 0x4837, 0xC502, 0xBD00, 0x0978, 0x63E2, 0x4830, 0x4837, - 0xC502, 0xBD00, 0x09FE, 0x73E2, 0x4830, 0x8BE2, 0xC302, 0xBB00, 0x0A12, - 0x73E2, 0x48B0, 0x48B3, 0x48B4, 0x48B5, 0x48B6, 0x48B7, 0x8BE2, 0xC302, - 0xBB00, 0x0A5A, 0x73E2, 0x4830, 0x8BE2, 0xC302, 0xBB00, 0x0A6C, 0x73E2, - 0x4830, 0x4837, 0xC502, 0xBD00, 0x0A86 - }; - - re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168fp_1_1, ARRAY_SIZE(mcu_patch_code_8168fp_1_1)); - - MP_WriteMcuAccessRegWord(sc, 0xFC26, 0x8000); - - MP_WriteMcuAccessRegWord(sc, 0xFC28, 0x0890); - MP_WriteMcuAccessRegWord(sc, 0xFC2A, 0x0712); - MP_WriteMcuAccessRegWord(sc, 0xFC2C, 0x0974); - MP_WriteMcuAccessRegWord(sc, 0xFC2E, 0x09FC); - MP_WriteMcuAccessRegWord(sc, 0xFC30, 0x0A0E); - MP_WriteMcuAccessRegWord(sc, 0xFC32, 0x0A56); - MP_WriteMcuAccessRegWord(sc, 0xFC34, 0x0A68); - MP_WriteMcuAccessRegWord(sc, 0xFC36, 0x0A84); - - } - else if (sc->HwPkgDet == 0x05 || sc->HwPkgDet == 0x06) { - static const uint16_t mcu_patch_code_8168fp_1_2[] = { - 0xE008, 0xE00A, 0xE031, 0xE033, 0xE035, 0xE144, 0xE166, 0xE168, 0xC502, - 0xBD00, 0x0000, 0xC725, 0x75E0, 0x48D0, 0x9DE0, 0xC722, 0x75E0, 0x1C78, - 0x416C, 0x1530, 0xF111, 0xC71D, 0x75F6, 0x49D1, 0xF00D, 0x75E0, 0x1C1F, - 0x416C, 0x1502, 0xF108, 0x75FA, 0x49D3, 0xF005, 0x75EC, 0x9DE4, 0x4853, - 0x9DFA, 0xC70B, 0x75E0, 0x4852, 0x4850, 0x9DE0, 0xC602, 0xBE00, 0x04B8, - 0xE420, 0xE000, 0xE0FC, 0xE43C, 0xDC00, 0xEB00, 0xC202, 0xBA00, 0x0000, - 0xC002, 0xB800, 0x0000, 0xB401, 0xB402, 0xB403, 0xB404, 0xB405, 0xB406, - 0xC44D, 0xC54D, 0x1867, 0xE8A2, 0x2318, 0x276E, 0x1601, 0xF106, 0x1A07, - 0xE861, 0xE86B, 0xE873, 0xE037, 0x231E, 0x276E, 0x1602, 0xF10B, 0x1A07, - 0xE858, 0xE862, 0xC247, 0xC344, 0xE8E3, 0xC73B, 0x66E0, 0xE8B5, 0xE029, - 0x231A, 0x276C, 0xC733, 0x9EE0, 0x1866, 0xE885, 0x251C, 0x120F, 0xF011, - 0x1209, 0xF011, 0x2014, 0x240E, 0x1000, 0xF007, 0x120C, 0xF00D, 0x1203, - 0xF00D, 0x1200, 0xF00D, 0x120C, 0xF00D, 0x1203, 0xF00D, 0x1A03, 0xE00C, - 0x1A07, 0xE00A, 0x1A00, 0xE008, 0x1A01, 0xE006, 0x1A02, 0xE004, 0x1A04, - 0xE002, 0x1A05, 0xE829, 0xE833, 0xB006, 0xB005, 0xB004, 0xB003, 0xB002, - 0xB001, 0x60C4, 0xC702, 0xBF00, 0x2786, 0xDD00, 0xD030, 0xE0C4, 0xE0F8, - 0xDC42, 0xD3F0, 0x0000, 0x0004, 0x0007, 0x0014, 0x0090, 0x1000, 0x0F00, - 0x1004, 0x1008, 0x3000, 0x3004, 0x3008, 0x4000, 0x7777, 0x8000, 0x8001, - 0x8008, 0x8003, 0x8004, 0xC000, 0xC004, 0xF004, 0xFFFF, 0xB406, 0xB407, - 0xC6E5, 0x77C0, 0x27F3, 0x23F3, 0x47FA, 0x9FC0, 0xB007, 0xB006, 0xFF80, - 0xB405, 0xB407, 0xC7D8, 0x75E0, 0x48D0, 0x9DE0, 0xB007, 0xB005, 0xFF80, - 0xB401, 0xC0EA, 0xC2DC, 0xC3D8, 0xE865, 0xC0D3, 0xC1E0, 0xC2E3, 0xE861, - 0xE817, 0xC0CD, 0xC2CF, 0xE85D, 0xC0C9, 0xC1D6, 0xC2DB, 0xE859, 0xE80F, - 0xC1C7, 0xC2CE, 0xE855, 0xC0C0, 0xC1D1, 0xC2D3, 0xE851, 0xE807, 0xC0BE, - 0xC2C2, 0xE84D, 0xE803, 0xB001, 0xFF80, 0xB402, 0xC2C6, 0xE859, 0x499F, - 0xF1FE, 0xB002, 0xFF80, 0xB402, 0xB403, 0xB407, 0xE821, 0x8882, 0x1980, - 0x8983, 0xE81D, 0x7180, 0x218B, 0x25BB, 0x1310, 0xF014, 0x1310, 0xFB03, - 0x1F20, 0x38FB, 0x3288, 0x434B, 0x2491, 0x430B, 0x1F0F, 0x38FB, 0x4313, - 0x2121, 0x4353, 0x2521, 0x418A, 0x6282, 0x2527, 0x212F, 0x418A, 0xB007, - 0xB003, 0xB002, 0xFF80, 0x6183, 0x2496, 0x1100, 0xF1FD, 0xFF80, 0x4800, - 0x4801, 0xC213, 0xC313, 0xE815, 0x4860, 0x8EE0, 0xC210, 0xC310, 0xE822, - 0x481E, 0xC20C, 0xC30C, 0xE80C, 0xC206, 0x7358, 0x483A, 0x9B58, 0xFF80, - 0xE8E0, 0xE000, 0x1008, 0x0F00, 0x800C, 0x0F00, 0xB407, 0xB406, 0xB403, - 0xC7F7, 0x98E0, 0x99E2, 0x9AE4, 0x21B2, 0x4831, 0x483F, 0x9BE6, 0x66E7, - 0x49E6, 0xF1FE, 0xB003, 0xB006, 0xB007, 0xFF80, 0xB407, 0xB406, 0xB403, - 0xC7E5, 0x9AE4, 0x21B2, 0x4831, 0x9BE6, 0x66E7, 0x49E6, 0xF1FE, 0x70E0, - 0x71E2, 0xB003, 0xB006, 0xB007, 0xFF80, 0x4882, 0xB406, 0xB405, 0xC71E, - 0x76E0, 0x1D78, 0x4175, 0x1630, 0xF10C, 0xC715, 0x76E0, 0x4861, 0x9EE0, - 0xC713, 0x1EFF, 0x9EE2, 0x75E0, 0x4850, 0x9DE0, 0xE005, 0xC70B, 0x76E0, - 0x4865, 0x9EE0, 0xB005, 0xB006, 0xC708, 0xC102, 0xB900, 0x279E, 0xEB16, - 0xEB00, 0xE43C, 0xDC00, 0xD3EC, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, - 0x0000 - }; - - re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168fp_1_2, ARRAY_SIZE(mcu_patch_code_8168fp_1_2)); - - MP_WriteMcuAccessRegWord(sc, 0xFC26, 0x8000); +static u_int32_t re_eri_read(struct re_softc *sc, int addr, int len, int type) +{ + return re_eri_read_with_oob_base_address(sc, addr, len, type, 0); +} - MP_WriteMcuAccessRegWord(sc, 0xFC28, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xFC2A, 0x04b4); - MP_WriteMcuAccessRegWord(sc, 0xFC2C, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xFC2E, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xFC30, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xFC32, 0x279C); - MP_WriteMcuAccessRegWord(sc, 0xFC34, 0x0000); - MP_WriteMcuAccessRegWord(sc, 0xFC36, 0x0000); - } +static int re_eri_write_with_oob_base_address(struct re_softc *sc, int addr, int len, u_int32_t value, int type, const u_int32_t base_address) +{ + int i, val_shift, shift = 0; + u_int32_t value1 = 0, mask; + const u_int32_t transformed_base_address = ((base_address & 0x00FFF000) << 6) | (base_address & 0x000FFF); + + if (len > 4 || len <= 0) + return -1; + + while (len > 0) { + val_shift = addr % ERIAR_Addr_Align; + addr = addr & ~0x3; + + if (len == 1) mask = (0xFF << (val_shift * 8)) & 0xFFFFFFFF; + else if (len == 2) mask = (0xFFFF << (val_shift * 8)) & 0xFFFFFFFF; + else if (len == 3) mask = (0xFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; + else mask = (0xFFFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; + + value1 = re_eri_read_with_oob_base_address(sc, addr, 4, type, base_address) & ~mask; + value1 |= ((value << val_shift * 8) >> shift * 8); + + CSR_WRITE_4(sc,RE_ERIDR, value1); + CSR_WRITE_4(sc,RE_ERIAR, + ERIAR_Write | + transformed_base_address | + type << ERIAR_Type_shift | + ERIAR_ByteEn << ERIAR_ByteEn_shift | + addr); + + for (i = 0; i < 10; i++) { + DELAY(100); + + /* Check if the RTL8168 has completed ERI write */ + if (!(CSR_READ_4(sc,RE_ERIAR) & ERIAR_Flag)) + break; + } - if (sc->HwPkgDet == 0x00) - breakPointEnabled = 0x00FC; - else if (sc->HwPkgDet == 0x0F) - breakPointEnabled = 0x00FF; - else if (sc->HwPkgDet == 0x05 || sc->HwPkgDet == 0x06) - breakPointEnabled = 0x0022; + if (len <= 4 - val_shift) + len = 0; + else { + len -= (4 - val_shift); + shift = 4 - val_shift; + addr += 4; + } + } - MP_WriteMcuAccessRegWord(sc, 0xFC38, breakPointEnabled); + return 0; } -static void re_set_mac_mcu_8168fp_8116as_2(struct re_softc* sc) +static int re_eri_write(struct re_softc *sc, int addr, int len, u_int32_t value, int type) { - static const uint16_t mcu_patch_code_8168fp_2[] = { - 0xE008, 0xE00A, 0xE00F, 0xE014, 0xE016, 0xE018, 0xE01A, 0xE01C, 0xC602, - 0xBE00, 0x2AB2, 0x1BC0, 0x46EB, 0x1BFE, 0xC102, 0xB900, 0x0B1A, 0x1BC0, - 0x46EB, 0x1B7E, 0xC102, 0xB900, 0x0BEA, 0xC602, 0xBE00, 0x0000, 0xC602, - 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, - 0xBE00, 0x0000 - }; - - DisableMcuBPs(sc); + return re_eri_write_with_oob_base_address(sc, addr, len, value, type, 0); +} - re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168fp_2, ARRAY_SIZE(mcu_patch_code_8168fp_2)); +#ifndef _WIN32 - MP_WriteMcuAccessRegWord(sc, 0xFC26, 0x8000); +static void +re_dma_map_addr(void *arg, bus_dma_segment_t *segs, int nseg, int error) +{ + bus_addr_t *addr; - MP_WriteMcuAccessRegWord(sc, 0xFC28, 0x2AAC); - MP_WriteMcuAccessRegWord(sc, 0xFC2A, 0x0B14); - MP_WriteMcuAccessRegWord(sc, 0xFC2C, 0x0BE4); + if (error) + return; - MP_WriteMcuAccessRegWord(sc, 0xFC38, 0x0007); + KASSERT(nseg == 1, ("too many DMA segments, %d should be 1", nseg)); + addr = arg; + *addr = segs->ds_addr; } -static void _re_set_mac_mcu_8168fp_2(struct re_softc* sc) +static int re_alloc_stats(device_t dev, struct re_softc *sc) { - static const uint16_t mcu_patch_code_8168fp_2[] = { - 0xE008, 0xE00A, 0xE00F, 0xE014, 0xE05F, 0xE064, 0xE066, 0xE068, 0xC602, - 0xBE00, 0x0000, 0x1BC0, 0x46EB, 0x1BFE, 0xC102, 0xB900, 0x0B1A, 0x1BC0, - 0x46EB, 0x1B7E, 0xC102, 0xB900, 0x0BEA, 0xB400, 0xB401, 0xB402, 0xB403, - 0xB404, 0xB405, 0xC03A, 0x7206, 0x49AE, 0xF1FE, 0xC137, 0x9904, 0xC136, - 0x9906, 0x7206, 0x49AE, 0xF1FE, 0x7200, 0x49A0, 0xF10B, 0xC52F, 0xC12E, - 0xC232, 0xC332, 0xE812, 0xC331, 0xE810, 0xC330, 0xE80E, 0xE018, 0xC126, - 0xC229, 0xC525, 0xC328, 0xE808, 0xC523, 0xC326, 0xE805, 0xC521, 0xC324, - 0xE802, 0xE00C, 0x740E, 0x49CE, 0xF1FE, 0x9908, 0x9D0A, 0x9A0C, 0x9B0E, - 0x740E, 0x49CE, 0xF1FE, 0xFF80, 0xB005, 0xB004, 0xB003, 0xB002, 0xB001, - 0xB000, 0xC604, 0xC002, 0xB800, 0x2A5E, 0xE000, 0xE8E0, 0xF128, 0x3DC2, - 0xFFFF, 0x10EC, 0x816A, 0x816D, 0x816C, 0xF000, 0x8002, 0x8004, 0x8007, - 0x48C1, 0x48C2, 0x9C46, 0xC402, 0xBC00, 0x07BC, 0xC602, 0xBE00, 0x0000, - 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000 - }; + int error; + + /* Create DMA map for statistics. */ + error = bus_dma_tag_create(sc->re_parent_tag, RE_DUMP_ALIGN, 0, + BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, NULL, + sizeof(struct re_stats), 1, sizeof(struct re_stats), 0, NULL, NULL, + &sc->re_tally.re_stag); + if (error) { + device_printf(dev, "could not create statistics DMA tag\n"); + return (error); + } + /* Allocate DMA'able memory for statistics. */ + error = bus_dmamem_alloc(sc->re_tally.re_stag, + (void **)&sc->re_tally.re_stats, + BUS_DMA_WAITOK | BUS_DMA_COHERENT | BUS_DMA_ZERO, + &sc->re_tally.re_smap); + if (error) { + device_printf(dev, + "could not allocate statistics DMA memory\n"); + return (error); + } + /* Load the map for statistics. */ + sc->re_tally.re_stats_addr = 0; + error = bus_dmamap_load(sc->re_tally.re_stag, sc->re_tally.re_smap, + sc->re_tally.re_stats, sizeof(struct re_stats), re_dma_map_addr, + &sc->re_tally.re_stats_addr, BUS_DMA_NOWAIT); + if (error != 0 || sc->re_tally.re_stats_addr == 0) { + device_printf(dev, "could not load statistics DMA memory\n"); + return (ENOMEM); + } - DisableMcuBPs(sc); - - re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168fp_2, ARRAY_SIZE(mcu_patch_code_8168fp_2)); - - MP_WriteMcuAccessRegWord(sc, 0xFC26, 0x8000); - - MP_WriteMcuAccessRegWord(sc, 0xFC28, 0x2AAC); - MP_WriteMcuAccessRegWord(sc, 0xFC2A, 0x0B14); - MP_WriteMcuAccessRegWord(sc, 0xFC2C, 0x0BE4); - MP_WriteMcuAccessRegWord(sc, 0xFC2E, 0x2A5C); - //MP_WriteMcuAccessRegWord(sc, 0xFC30, 0x07B0); - - if (true == re_check_dash_other_fun_present(sc)) - MP_WriteMcuAccessRegWord(sc, 0xFC38, 0x0006); - else - MP_WriteMcuAccessRegWord(sc, 0xFC38, 0x000E); -} - -static void re_set_mac_mcu_8168fp_2(struct re_softc* sc) -{ - if (sc->hw_hw_supp_serdes_phy_ver == 1) - re_set_mac_mcu_8168fp_8116as_2(sc); - else - _re_set_mac_mcu_8168fp_2(sc); -} - -static void re_set_mac_mcu_8168fp_3(struct re_softc* sc) -{ - static const uint16_t mcu_patch_code_8168fp_3[] = { - 0xE008, 0xE053, 0xE058, 0xE05A, 0xE05C, 0xE05E, 0xE060, 0xE062, 0xB400, - 0xB401, 0xB402, 0xB403, 0xB404, 0xB405, 0xC03A, 0x7206, 0x49AE, 0xF1FE, - 0xC137, 0x9904, 0xC136, 0x9906, 0x7206, 0x49AE, 0xF1FE, 0x7200, 0x49A0, - 0xF10B, 0xC52F, 0xC12E, 0xC232, 0xC332, 0xE812, 0xC331, 0xE810, 0xC330, - 0xE80E, 0xE018, 0xC126, 0xC229, 0xC525, 0xC328, 0xE808, 0xC523, 0xC326, - 0xE805, 0xC521, 0xC324, 0xE802, 0xE00C, 0x740E, 0x49CE, 0xF1FE, 0x9908, - 0x9D0A, 0x9A0C, 0x9B0E, 0x740E, 0x49CE, 0xF1FE, 0xFF80, 0xB005, 0xB004, - 0xB003, 0xB002, 0xB001, 0xB000, 0xC604, 0xC002, 0xB800, 0x2B16, 0xE000, - 0xE8E0, 0xF128, 0x3DC2, 0xFFFF, 0x10EC, 0x816A, 0x816D, 0x816C, 0xF000, - 0x8002, 0x8004, 0x8007, 0x48C1, 0x48C2, 0x9C46, 0xC402, 0xBC00, 0x07BC, - 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, - 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000 - }; - - DisableMcuBPs(sc); - - re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168fp_3, ARRAY_SIZE(mcu_patch_code_8168fp_3)); - - MP_WriteMcuAccessRegWord(sc, 0xFC26, 0x8000); - - MP_WriteMcuAccessRegWord(sc, 0xFC28, 0x2B14); - //MP_WriteMcuAccessRegWord(sc, 0xFC2A, 0x07B0); - - if (true == re_check_dash_other_fun_present(sc)) - MP_WriteMcuAccessRegWord(sc, 0xFC38, 0x0000); - else - MP_WriteMcuAccessRegWord(sc, 0xFC38, 0x0001); -} - -static void re_set_mac_mcu_8168fp_4(struct re_softc* sc) -{ - DisableMcuBPs(sc); -} - -static void re_set_mac_mcu_8125a_1(struct re_softc* sc) -{ - DisableMcuBPs(sc); -} - -static void re_set_mac_mcu_8125a_2(struct re_softc* sc) -{ - static const u_int16_t mcu_patch_code_8125a_2[] = { - 0xE010, 0xE012, 0xE022, 0xE024, 0xE029, 0xE02B, 0xE094, 0xE09D, 0xE09F, - 0xE0AA, 0xE0B5, 0xE0C6, 0xE0CC, 0xE0D1, 0xE0D6, 0xE0D8, 0xC602, 0xBE00, - 0x0000, 0xC60F, 0x73C4, 0x49B3, 0xF106, 0x73C2, 0xC608, 0xB406, 0xC609, - 0xFF80, 0xC605, 0xB406, 0xC605, 0xFF80, 0x0544, 0x0568, 0xE906, 0xCDE8, - 0xC602, 0xBE00, 0x0000, 0x48C1, 0x48C2, 0x9C46, 0xC402, 0xBC00, 0x0A12, - 0xC602, 0xBE00, 0x0EBA, 0x1501, 0xF02A, 0x1500, 0xF15D, 0xC661, 0x75C8, - 0x49D5, 0xF00A, 0x49D6, 0xF008, 0x49D7, 0xF006, 0x49D8, 0xF004, 0x75D2, - 0x49D9, 0xF150, 0xC553, 0x77A0, 0x75C8, 0x4855, 0x4856, 0x4857, 0x4858, - 0x48DA, 0x48DB, 0x49FE, 0xF002, 0x485A, 0x49FF, 0xF002, 0x485B, 0x9DC8, - 0x75D2, 0x4859, 0x9DD2, 0xC643, 0x75C0, 0x49D4, 0xF033, 0x49D0, 0xF137, - 0xE030, 0xC63A, 0x75C8, 0x49D5, 0xF00E, 0x49D6, 0xF00C, 0x49D7, 0xF00A, - 0x49D8, 0xF008, 0x75D2, 0x49D9, 0xF005, 0xC62E, 0x75C0, 0x49D7, 0xF125, - 0xC528, 0x77A0, 0xC627, 0x75C8, 0x4855, 0x4856, 0x4857, 0x4858, 0x48DA, - 0x48DB, 0x49FE, 0xF002, 0x485A, 0x49FF, 0xF002, 0x485B, 0x9DC8, 0x75D2, - 0x4859, 0x9DD2, 0xC616, 0x75C0, 0x4857, 0x9DC0, 0xC613, 0x75C0, 0x49DA, - 0xF003, 0x49D0, 0xF107, 0xC60B, 0xC50E, 0x48D9, 0x9DC0, 0x4859, 0x9DC0, - 0xC608, 0xC702, 0xBF00, 0x3AE0, 0xE860, 0xB400, 0xB5D4, 0xE908, 0xE86C, - 0x1200, 0xC409, 0x6780, 0x48F1, 0x8F80, 0xC404, 0xC602, 0xBE00, 0x10AA, - 0xC010, 0xEA7C, 0xC602, 0xBE00, 0x0000, 0x740A, 0x4846, 0x4847, 0x9C0A, - 0xC607, 0x74C0, 0x48C6, 0x9CC0, 0xC602, 0xBE00, 0x13FE, 0xE054, 0x72CA, - 0x4826, 0x4827, 0x9ACA, 0xC607, 0x72C0, 0x48A6, 0x9AC0, 0xC602, 0xBE00, - 0x07DC, 0xE054, 0xC60F, 0x74C4, 0x49CC, 0xF109, 0xC60C, 0x74CA, 0x48C7, - 0x9CCA, 0xC609, 0x74C0, 0x4846, 0x9CC0, 0xC602, 0xBE00, 0x2480, 0xE092, - 0xE0C0, 0xE054, 0x7420, 0x48C0, 0x9C20, 0x7444, 0xC602, 0xBE00, 0x12F8, - 0x1BFF, 0x46EB, 0x1BFF, 0xC102, 0xB900, 0x0D5A, 0x1BFF, 0x46EB, 0x1BFF, - 0xC102, 0xB900, 0x0E2A, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6486, - 0x0B15, 0x090E, 0x1139 - }; - - DisableMcuBPs(sc); - - re_write_mac_mcu_ram_code(sc, mcu_patch_code_8125a_2, ARRAY_SIZE(mcu_patch_code_8125a_2)); - - MP_WriteMcuAccessRegWord(sc, 0xFC26, 0x8000); - - MP_WriteMcuAccessRegWord(sc, 0xFC2A, 0x0540); - MP_WriteMcuAccessRegWord(sc, 0xFC2E, 0x0A06); - MP_WriteMcuAccessRegWord(sc, 0xFC30, 0x0EB8); - MP_WriteMcuAccessRegWord(sc, 0xFC32, 0x3A5C); - MP_WriteMcuAccessRegWord(sc, 0xFC34, 0x10A8); - MP_WriteMcuAccessRegWord(sc, 0xFC40, 0x0D54); - MP_WriteMcuAccessRegWord(sc, 0xFC42, 0x0E24); - - MP_WriteMcuAccessRegWord(sc, 0xFC48, 0x307A); -} - -static void re_set_mac_mcu_8125b_1(struct re_softc* sc) -{ - DisableMcuBPs(sc); -} - -static void re_set_mac_mcu_8125b_2(struct re_softc* sc) -{ - static const u_int16_t mcu_patch_code_8125b_2[] = { - 0xE010, 0xE01B, 0xE026, 0xE037, 0xE03D, 0xE057, 0xE05B, 0xE060, 0xE062, - 0xE064, 0xE066, 0xE068, 0xE06A, 0xE06C, 0xE06E, 0xE070, 0x740A, 0x4846, - 0x4847, 0x9C0A, 0xC607, 0x74C0, 0x48C6, 0x9CC0, 0xC602, 0xBE00, 0x13F0, - 0xE054, 0x72CA, 0x4826, 0x4827, 0x9ACA, 0xC607, 0x72C0, 0x48A6, 0x9AC0, - 0xC602, 0xBE00, 0x081C, 0xE054, 0xC60F, 0x74C4, 0x49CC, 0xF109, 0xC60C, - 0x74CA, 0x48C7, 0x9CCA, 0xC609, 0x74C0, 0x4846, 0x9CC0, 0xC602, 0xBE00, - 0x2494, 0xE092, 0xE0C0, 0xE054, 0x7420, 0x48C0, 0x9C20, 0x7444, 0xC602, - 0xBE00, 0x12DC, 0x733A, 0x21B5, 0x25BC, 0x1304, 0xF111, 0x1B12, 0x1D2A, - 0x3168, 0x3ADA, 0x31AB, 0x1A00, 0x9AC0, 0x1300, 0xF1FB, 0x7620, 0x236E, - 0x276F, 0x1A3C, 0x22A1, 0x41B5, 0x9EE2, 0x76E4, 0x486F, 0x9EE4, 0xC602, - 0xBE00, 0x4A26, 0x733A, 0x49BB, 0xC602, 0xBE00, 0x47A2, 0x48C1, 0x48C2, - 0x9C46, 0xC402, 0xBC00, 0x0A52, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, - 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, - 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, - 0x0000, 0xC602, 0xBE00, 0x0000 - }; - - DisableMcuBPs(sc); - - re_write_mac_mcu_ram_code(sc, mcu_patch_code_8125b_2, ARRAY_SIZE(mcu_patch_code_8125b_2)); - - MP_WriteMcuAccessRegWord(sc, 0xFC26, 0x8000); - - MP_WriteMcuAccessRegWord(sc, 0xFC28, 0x13E6); - MP_WriteMcuAccessRegWord(sc, 0xFC2A, 0x0812); - MP_WriteMcuAccessRegWord(sc, 0xFC2C, 0x248C); - MP_WriteMcuAccessRegWord(sc, 0xFC2E, 0x12DA); - MP_WriteMcuAccessRegWord(sc, 0xFC30, 0x4A20); - MP_WriteMcuAccessRegWord(sc, 0xFC32, 0x47A0); - //MP_WriteMcuAccessRegWord(sc, 0xFC34, 0x0A46); - - MP_WriteMcuAccessRegWord(sc, 0xFC48, 0x003F); -} - -static void re_set_mac_mcu_8126a_1(struct re_softc* sc) -{ - static const u_int16_t mcu_patch_code_8126a_1[] = { - 0xE010, 0xE019, 0xE01B, 0xE01D, 0xE01F, 0xE021, 0xE023, 0xE025, 0xE027, - 0xE029, 0xE02B, 0xE02D, 0xE02F, 0xE031, 0xE033, 0xE035, 0x48C0, 0x9C66, - 0x7446, 0x4840, 0x48C1, 0x48C2, 0x9C46, 0xC402, 0xBC00, 0x0AD6, 0xC602, - 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, - 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, - 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, - 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, - 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000 - }; + return (0); +} - DisableMcuBPs(sc); +static void re_release_rx_buf(struct re_softc *sc) +{ + int i; - re_write_mac_mcu_ram_code(sc, mcu_patch_code_8126a_1, ARRAY_SIZE(mcu_patch_code_8126a_1)); + if (sc->re_desc.re_rx_mtag) { + for (i = 0; i < RE_RX_BUF_NUM; i++) { + if (sc->re_desc.rx_buf[i]!=NULL) { + bus_dmamap_sync(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[i], + BUS_DMASYNC_POSTREAD); + bus_dmamap_unload(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[i]); + bus_dmamap_destroy(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[i]); + m_freem(sc->re_desc.rx_buf[i]); + sc->re_desc.rx_buf[i] =NULL; + } + } + bus_dma_tag_destroy(sc->re_desc.re_rx_mtag); + sc->re_desc.re_rx_mtag =0; + } - MP_WriteMcuAccessRegWord(sc, 0xFC26, 0x8000); +} - MP_WriteMcuAccessRegWord(sc, 0xFC28, 0x0AAA); +static void re_release_tx_buf(struct re_softc *sc) +{ + int i; - MP_WriteMcuAccessRegWord(sc, 0xFC48, 0x0001); + if (sc->re_desc.re_tx_mtag) { + for (i = 0; i < RE_TX_BUF_NUM; i++) { + bus_dmamap_destroy(sc->re_desc.re_tx_mtag, + sc->re_desc.re_tx_dmamap[i]); + m_freem(sc->re_desc.tx_buf[i]); + } + bus_dma_tag_destroy(sc->re_desc.re_tx_mtag); + sc->re_desc.re_tx_mtag = 0; + } } -static void re_set_mac_mcu_8126a_2(struct re_softc* sc) +static void +re_free_soft_lro(struct re_softc *sc) { - DisableMcuBPs(sc); +#if defined(INET) || defined(INET6) + if (sc->re_lro.ifp) { + tcp_lro_free(&sc->re_lro); + sc->re_lro.ifp = NULL; + } +#endif } -static void re_set_mac_mcu_8126a_3(struct re_softc* sc) +static int +re_config_soft_lro(struct re_softc *sc) { - DisableMcuBPs(sc); + struct lro_ctrl *lro; + + lro = &sc->re_lro; + bzero(lro, sizeof(struct lro_ctrl)); + +#if defined(INET) || defined(INET6) +#if OS_VER >= VERSION(11,0) + if (tcp_lro_init_args(lro, sc->re_ifp, + max(TCP_LRO_ENTRIES, re_lro_entry_count), + min(1024, re_lro_mbufq_depth)) != 0) { + device_printf(sc->dev, + "%s: tcp_lro_init_args failed\n", + __func__); + return (ENOMEM); + } +#else + if (tcp_lro_init(lro)) { + device_printf(sc->dev, + "%s: tcp_lro_init failed\n", + __func__); + return (-1); + } +#endif //OS_VER >= VERSION(11,0) +#endif + lro->ifp = sc->re_ifp; + + return (0); } -static void re_hw_mac_mcu_config(struct re_softc* sc) +static void re_release_buf(struct re_softc *sc) { - switch (sc->re_type) { - case MACFG_56: - re_set_mac_mcu_8168g_1(sc); - break; - case MACFG_58: - re_set_mac_mcu_8168gu_1(sc); - break; - case MACFG_59: - re_set_mac_mcu_8168gu_2(sc); - break; - case MACFG_60: - re_set_mac_mcu_8411b_1(sc); - break; - case MACFG_62: - re_set_mac_mcu_8168ep_1(sc); - break; - case MACFG_67: - re_set_mac_mcu_8168ep_2(sc); - break; - case MACFG_68: - re_set_mac_mcu_8168h_1(sc); - break; - case MACFG_69: - case MACFG_76: - re_set_mac_mcu_8168h_2(sc); - break; - case MACFG_70: - re_set_mac_mcu_8168fp_1(sc); - break; - case MACFG_71: - re_set_mac_mcu_8168fp_2(sc); - break; - case MACFG_72: - re_set_mac_mcu_8168fp_3(sc); - break; - case MACFG_73: - re_set_mac_mcu_8168fp_4(sc); - break; - case MACFG_74: - re_set_mac_mcu_8168h_3(sc); - break; - case MACFG_75: - re_set_mac_mcu_8168h_4(sc); - break; - case MACFG_80: - re_set_mac_mcu_8125a_1(sc); - break; - case MACFG_81: - re_set_mac_mcu_8125a_2(sc); - break; - case MACFG_82: - re_set_mac_mcu_8125b_1(sc); - break; - case MACFG_83: - re_set_mac_mcu_8125b_2(sc); - break; - case MACFG_90: - re_set_mac_mcu_8126a_1(sc); - break; - case MACFG_91: - re_set_mac_mcu_8126a_2(sc); - break; - case MACFG_92: - re_set_mac_mcu_8126a_3(sc); - break; - } + re_release_rx_buf(sc); + re_release_tx_buf(sc); } -#if DISABLED_CODE -#define ISRIMR_DASH_TYPE2_TX_DISABLE_IDLE BIT_5 -static void Dash2DisableTx(struct re_softc* sc) +static int re_alloc_buf(struct re_softc *sc) { - //if (!sc->re_dash) return; + int error =0; + int i,size; + + switch(sc->re_type) { + case MACFG_3: + case MACFG_4: + case MACFG_5: + case MACFG_6: + case MACFG_11: + case MACFG_12: + case MACFG_13: + case MACFG_21: + case MACFG_22: + case MACFG_23: + size = RE_TX_MAXSIZE_32K; + break; + default: + size = RE_TX_MAXSIZE_64K; + break; + } + RE_UNLOCK(sc); + error = bus_dma_tag_create(sc->re_parent_tag, 1, 0, + BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, + NULL, size, RE_NTXSEGS, size, 0, + NULL, NULL, &sc->re_desc.re_tx_mtag); + + if (error) { + //device_printf(dev,"re_tx_mtag fail\n"); + //goto fail; + RE_LOCK(sc); + return error; + } - if (HW_DASH_SUPPORT_TYPE_2(sc) || HW_DASH_SUPPORT_TYPE_3(sc)) { - u_int16_t WaitCnt; - u_int8_t TmpUchar; + error = bus_dma_tag_create( + sc->re_parent_tag, + RE_RX_BUFFER_ALIGN, 0, /* alignment, boundary */ + BUS_SPACE_MAXADDR, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + sc->re_rx_desc_buf_sz, 1, /* maxsize,nsegments */ + sc->re_rx_desc_buf_sz, /* maxsegsize */ + 0, /* flags */ + NULL, NULL, /* lockfunc, lockarg */ + &sc->re_desc.re_rx_mtag); + if (error) { + //device_printf(dev,"re_rx_mtag fail\n"); + //goto fail; + RE_LOCK(sc); + return error; + } - //Disable oob Tx - RE_CMAC_WRITE_1(sc, RE_CMAC_IBCR2, RE_CMAC_READ_1(sc, RE_CMAC_IBCR2) & ~(BIT_0)); - WaitCnt = 0; + RE_LOCK(sc); + if (sc->re_rx_mbuf_sz <= MCLBYTES) + size = MCLBYTES; + else if (sc->re_rx_mbuf_sz <= MJUMPAGESIZE) + size = MJUMPAGESIZE; + else + size =MJUM9BYTES; + for (i = 0; i < RE_RX_BUF_NUM; i++) { + sc->re_desc.rx_buf[i] = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, size); + if (!sc->re_desc.rx_buf[i]) { + //device_printf(dev, "m_getcl fail!!!\n"); + error = ENXIO; + //goto fail; + return error; + } - //wait oob tx disable - do { - TmpUchar = RE_CMAC_READ_1(sc, RE_CMAC_IBISR0); + sc->re_desc.rx_buf[i]->m_len = sc->re_desc.rx_buf[i]->m_pkthdr.len = size; +#ifdef RE_FIXUP_RX + /* + * This is part of an evil trick to deal with non-x86 platforms. + * The RealTek chip requires RX buffers to be aligned on 64-bit + * boundaries, but that will hose non-x86 machines. To get around + * this, we leave some empty space at the start of each buffer + * and for non-x86 hosts, we copy the buffer back six bytes + * to achieve word alignment. This is slightly more efficient + * than allocating a new buffer, copying the contents, and + * discarding the old buffer. + */ + m_adj(sc->re_desc.rx_buf[i], RE_ETHER_ALIGN); +#endif - if (TmpUchar & ISRIMR_DASH_TYPE2_TX_DISABLE_IDLE) { - break; - } + error = bus_dmamap_create(sc->re_desc.re_rx_mtag, BUS_DMA_NOWAIT, &sc->re_desc.re_rx_dmamap[i]); + if (error) { + //device_printf(dev, "bus_dmamap_create fail!!!\n"); + //goto fail; + return error; + } + } - DELAY(50); - WaitCnt++; - } while (WaitCnt < 2000); + for (i = 0; i < RE_TX_BUF_NUM; i++) { + error = bus_dmamap_create(sc->re_desc.re_tx_mtag, BUS_DMA_NOWAIT, &sc->re_desc.re_tx_dmamap[i]); + if (error) { + //device_printf(dev, "bus_dmamap_create fail!!!\n"); + //goto fail; + return error; + } + } - //Clear ISRIMR_DASH_TYPE2_TX_DISABLE_IDLE - RE_CMAC_WRITE_1(sc, RE_CMAC_IBISR0, RE_CMAC_READ_1(sc, RE_CMAC_IBISR0) | ISRIMR_DASH_TYPE2_TX_DISABLE_IDLE); - } + return 0; } -static void Dash2DisableRx(struct re_softc* sc) +static void set_rxbufsize(struct re_softc *sc) { - //if (!sc->re_dash) return; - - if (HW_DASH_SUPPORT_TYPE_2(sc) || HW_DASH_SUPPORT_TYPE_3(sc)) { - RE_CMAC_WRITE_1(sc, RE_CMAC_IBCR0, RE_CMAC_READ_1(sc, RE_CMAC_IBCR0) & ~(BIT_0)); - } + struct ifnet *ifp; + ifp = RE_GET_IFNET(sc); + sc->re_rx_desc_buf_sz = (ifp->if_mtu > ETHERMTU) ? ifp->if_mtu: ETHERMTU; + sc->re_rx_desc_buf_sz += (ETHER_VLAN_ENCAP_LEN + ETHER_HDR_LEN + ETHER_CRC_LEN); + if (!(sc->re_if_flags & RL_FLAG_8168G_PLUS) || + sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || + sc->re_type == MACFG_58 || sc->re_type == MACFG_59 || + sc->re_type == MACFG_60) + sc->re_rx_desc_buf_sz += 1; + CSR_WRITE_2(sc, RE_RxMaxSize, sc->re_rx_desc_buf_sz); } -static void Dash2DisableTxRx(struct re_softc* sc) -{ - if (HW_DASH_SUPPORT_TYPE_2(sc) || HW_DASH_SUPPORT_TYPE_3(sc)) { - Dash2DisableTx(sc); - Dash2DisableRx(sc); - } -} -#endif +#endif // !_WIN32 -static inline bool -is_zero_ether_addr(const u_int8_t* addr) +static void re_enable_cfg9346_write(struct re_softc *sc) { - return ((addr[0] + addr[1] + addr[2] + addr[3] + addr[4] + addr[5]) == 0x00); + EE_SET(RE_EEMODE_WRITECFG); } -static inline bool -is_multicast_ether_addr(const u_int8_t* addr) +static void re_disable_cfg9346_write(struct re_softc *sc) { - return (0x01 & addr[0]); + EE_CLR(RE_EEMODE_WRITECFG); } -/* -static inline bool -is_broadcast_ether_addr(const u_int8_t * addr) +static void re_enable_force_clkreq(struct re_softc *sc, bool enable) { - return ((addr[0] + addr[1] + addr[2] + addr[3] + addr[4] + addr[5]) == (6 * 0xff)); + if (enable) + CSR_WRITE_1(sc, 0xF1, CSR_READ_1(sc, 0xF1) | BIT_7); + else + CSR_WRITE_1(sc, 0xF1, CSR_READ_1(sc, 0xF1) & ~BIT_7); } -*/ -static inline bool -is_valid_ether_addr(const u_int8_t* addr) +static void _re_enable_aspm_clkreq_lock(struct re_softc *sc, bool enable) { - return !is_multicast_ether_addr(addr) && !is_zero_ether_addr(addr); + switch(sc->re_type) { + case MACFG_91: + case MACFG_92: + if (enable) { + CSR_WRITE_1(sc, RE_INT_CFG0_8125, CSR_READ_1(sc, RE_INT_CFG0_8125) | BIT_3); + CSR_WRITE_1(sc, RE_CFG5, CSR_READ_1(sc, RE_CFG5) | BIT_0); + } else { + CSR_WRITE_1(sc, RE_INT_CFG0_8125, CSR_READ_1(sc, RE_INT_CFG0_8125) & ~BIT_3); + CSR_WRITE_1(sc, RE_CFG5, CSR_READ_1(sc, RE_CFG5) & ~BIT_0); + } + break; + default: + if (enable) { + CSR_WRITE_1(sc, RE_CFG5, CSR_READ_1(sc, RE_CFG5) | BIT_0); + CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | BIT_7); + } else { + CSR_WRITE_1(sc, RE_CFG5, CSR_READ_1(sc, RE_CFG5) & ~BIT_0); + CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) & ~BIT_7); + } + break; + } } -static void re_disable_now_is_oob(struct re_softc* sc) +static void re_enable_aspm_clkreq_lock(struct re_softc *sc, bool enable) { - if (sc->re_hw_supp_now_is_oob_ver == 1) - CSR_WRITE_1(sc, RE_MCU_CMD, CSR_READ_1(sc, RE_MCU_CMD) & ~RE_NOW_IS_OOB); + re_enable_cfg9346_write(sc); + _re_enable_aspm_clkreq_lock(sc, enable); + re_disable_cfg9346_write(sc); } -static void re_switch_to_sgmii_mode(struct re_softc* sc) +static void re_disable_mcu_bps(struct re_softc *sc) { - if (FALSE == HW_SUPP_SERDES_PHY(sc)) return; + u_int16_t regAddr; - switch (sc->hw_hw_supp_serdes_phy_ver) { - case 1: - MP_WriteMcuAccessRegWord(sc, 0xEB00, 0x2); - SetMcuAccessRegBit(sc, 0xEB16, BIT_1); - break; - } + switch(sc->re_type) { + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_enable_aspm_clkreq_lock(sc, 0); + break; + } + + switch(sc->re_type) { + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + re_mac_ocp_write(sc, 0xFC38, 0x0000); + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_mac_ocp_write(sc, 0xFC48, 0x0000); + break; + } + + switch(sc->re_type) { + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + re_mac_ocp_write(sc, 0xFC28, 0x0000); + re_mac_ocp_write(sc, 0xFC2A, 0x0000); + re_mac_ocp_write(sc, 0xFC2C, 0x0000); + re_mac_ocp_write(sc, 0xFC2E, 0x0000); + re_mac_ocp_write(sc, 0xFC30, 0x0000); + re_mac_ocp_write(sc, 0xFC32, 0x0000); + re_mac_ocp_write(sc, 0xFC34, 0x0000); + re_mac_ocp_write(sc, 0xFC36, 0x0000); + + DELAY(3000); + + re_mac_ocp_write(sc, 0xFC26, 0x0000); + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + for (regAddr = 0xFC28; regAddr < 0xFC48; regAddr += 2) { + re_mac_ocp_write(sc, regAddr, 0x0000); + } + + DELAY(3000); + + re_mac_ocp_write(sc, 0xFC26, 0x0000); + break; + } } static void -re_enable_magic_packet(struct re_softc* sc) +re_switch_mac_mcu_ram_code_page(struct re_softc *sc, u_int16_t page) { - if (sc->re_if_flags & RL_FLAG_MAGIC_PACKET_V3) - SetMcuAccessRegBit(sc, 0xC0B6, BIT_0); - else if (sc->re_if_flags & RL_FLAG_MAGIC_PACKET_V2) - re_eri_write(sc, 0xDC, 4, - re_eri_read(sc, 0xDC, 4, ERIAR_ExGMAC) | BIT_16, - ERIAR_ExGMAC); - else - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | RL_CFG3_WOL_MAGIC); + u_int16_t tmpUshort; + + page &= (BIT_1 | BIT_0); + tmpUshort = re_mac_ocp_read(sc, 0xE446); + tmpUshort &= ~(BIT_1 | BIT_0); + tmpUshort |= page; + re_mac_ocp_write(sc, 0xE446, tmpUshort); } static void -re_disable_magic_packet(struct re_softc* sc) -{ - if (sc->re_if_flags & RL_FLAG_MAGIC_PACKET_V3) - ClearMcuAccessRegBit(sc, 0xC0B6, BIT_0); - else if (sc->re_if_flags & RL_FLAG_MAGIC_PACKET_V2) - re_eri_write(sc, 0xDC, 4, - re_eri_read(sc, 0xDC, 4, ERIAR_ExGMAC) & ~BIT_16, - ERIAR_ExGMAC); - else - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~RL_CFG3_WOL_MAGIC); -} - -void re_exit_oob(struct re_softc* sc) -{ - u_int16_t data16; - int i; - - re_disable_cfg9346_write(sc); - - if (HW_SUPP_SERDES_PHY(sc)) { - if (sc->hw_hw_supp_serdes_phy_ver == 1) { - re_switch_to_sgmii_mode(sc); - } - } - - switch (sc->re_type) { - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_80: - case MACFG_81: -#if DISABLED_CODE - Dash2DisableTxRx(sc); -#endif - break; - } - -#if DISABLED_CODE - if (sc->re_dash) - re_driver_start(sc); -#endif - - switch (sc->re_type) { - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_3); - DELAY(2000); +_re_write_mac_mcu_ram_code(struct re_softc *sc, const u_int16_t *entry, u_int16_t entry_cnt) +{ + u_int16_t i; - for (i = 0; i < 3000; i++) { - DELAY(50); - if (CSR_READ_4(sc, RE_TXCFG) & BIT_11) - break; + for (i = 0; i < entry_cnt; i++) { + re_mac_ocp_write(sc, 0xF800 + i * 2, entry[i]); } +} - if (CSR_READ_1(sc, RE_COMMAND) & (RE_CMD_TX_ENB | RE_CMD_RX_ENB)) { - DELAY(100); - CSR_WRITE_1(sc, RE_COMMAND, CSR_READ_1(sc, RE_COMMAND) & ~(RE_CMD_TX_ENB | RE_CMD_RX_ENB)); - } +static void +_re_write_mac_mcu_ram_code_with_page(struct re_softc *sc, const u_int16_t *entry, u_int16_t entry_cnt, u_int16_t page_size) +{ + u_int16_t i; + u_int16_t offset; - for (i = 0; i < 3000; i++) { - DELAY(50); - if ((CSR_READ_1(sc, RE_MCU_CMD) & (RE_TXFIFO_EMPTY | RE_RXFIFO_EMPTY)) == (RE_TXFIFO_EMPTY | RE_RXFIFO_EMPTY)) - break; - } - break; - case MACFG_80: - case MACFG_81: - CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_3); - DELAY(2000); + if (page_size == 0) return; - if (CSR_READ_1(sc, RE_COMMAND) & (RE_CMD_TX_ENB | RE_CMD_RX_ENB)) { - DELAY(100); - CSR_WRITE_1(sc, RE_COMMAND, CSR_READ_1(sc, RE_COMMAND) & ~(RE_CMD_TX_ENB | RE_CMD_RX_ENB)); + for (i = 0; i < entry_cnt; i++) { + offset = i % page_size; + if (offset == 0) { + u_int16_t page = (i / page_size); + re_switch_mac_mcu_ram_code_page(sc, page); + } + re_mac_ocp_write(sc, 0xF800 + offset * 2, entry[i]); } +} - for (i = 0; i < 3000; i++) { - DELAY(50); - if ((CSR_READ_1(sc, RE_MCU_CMD) & (RE_TXFIFO_EMPTY | RE_RXFIFO_EMPTY)) == (RE_TXFIFO_EMPTY | RE_RXFIFO_EMPTY)) - break; - } - break; - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_3); - DELAY(2000); +static void +re_write_mac_mcu_ram_code(struct re_softc *sc, const u_int16_t *entry, u_int16_t entry_cnt) +{ + if (FALSE == HW_SUPPORT_MAC_MCU(sc)) return; + if (entry == NULL || entry_cnt == 0) return; - if (CSR_READ_1(sc, RE_COMMAND) & (RE_CMD_TX_ENB | RE_CMD_RX_ENB)) { - DELAY(100); - CSR_WRITE_1(sc, RE_COMMAND, CSR_READ_1(sc, RE_COMMAND) & ~(RE_CMD_TX_ENB | RE_CMD_RX_ENB)); - } + if (sc->MacMcuPageSize > 0) + _re_write_mac_mcu_ram_code_with_page(sc, entry, entry_cnt, sc->MacMcuPageSize); + else + _re_write_mac_mcu_ram_code(sc, entry, entry_cnt); +} - CSR_WRITE_1(sc, RE_COMMAND, CSR_READ_1(sc, RE_COMMAND) | RE_CMD_STOP_REQ); +static void re_set_mac_mcu_8168g_1(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8168g_1[] = { + 0xE008, 0xE01B, 0xE022, 0xE094, 0xE097, 0xE09A, 0xE0B3, 0xE0BA, 0x49D2, + 0xF10D, 0x766C, 0x49E2, 0xF00A, 0x1EC0, 0x8EE1, 0xC60A, 0x77C0, 0x4870, + 0x9FC0, 0x1EA0, 0xC707, 0x8EE1, 0x9D6C, 0xC603, 0xBE00, 0xB416, 0x0076, + 0xE86C, 0xC406, 0x7580, 0x4852, 0x8D80, 0xC403, 0xBC00, 0xD3E0, 0x02C8, + 0x8918, 0xE815, 0x1100, 0xF011, 0xE812, 0x4990, 0xF002, 0xE817, 0xE80E, + 0x4992, 0xF002, 0xE80E, 0xE80A, 0x4993, 0xF002, 0xE818, 0xE806, 0x4991, + 0xF002, 0xE838, 0xC25E, 0xBA00, 0xC056, 0x7100, 0xFF80, 0x7100, 0x4892, + 0x4813, 0x8900, 0xE00A, 0x7100, 0x4890, 0x4813, 0x8900, 0xC74B, 0x74F8, + 0x48C2, 0x4841, 0x8CF8, 0xC746, 0x74FC, 0x49C0, 0xF120, 0x49C1, 0xF11E, + 0x74F8, 0x49C0, 0xF01B, 0x49C6, 0xF119, 0x74F8, 0x49C4, 0xF013, 0xC536, + 0x74B0, 0x49C1, 0xF1FD, 0xC537, 0xC434, 0x9CA0, 0xC435, 0x1C13, 0x484F, + 0x9CA2, 0xC52B, 0x74B0, 0x49C1, 0xF1FD, 0x74F8, 0x48C4, 0x8CF8, 0x7100, + 0x4893, 0x8900, 0xFF80, 0xC520, 0x74B0, 0x49C1, 0xF11C, 0xC71E, 0x74FC, + 0x49C1, 0xF118, 0x49C0, 0xF116, 0x74F8, 0x49C0, 0xF013, 0x48C3, 0x8CF8, + 0xC516, 0x74A2, 0x49CE, 0xF1FE, 0xC411, 0x9CA0, 0xC411, 0x1C13, 0x484F, + 0x9CA2, 0x74A2, 0x49CF, 0xF1FE, 0x7100, 0x4891, 0x8900, 0xFF80, 0xE400, + 0xD3E0, 0xE000, 0x0481, 0x0C81, 0xDE20, 0x0000, 0x0992, 0x1B76, 0xC602, + 0xBE00, 0x059C, 0x1B76, 0xC602, 0xBE00, 0x065A, 0xB400, 0x18DE, 0x2008, + 0x4001, 0xF10F, 0x7342, 0x1880, 0x2008, 0x0009, 0x4018, 0xF109, 0x7340, + 0x25BC, 0x130F, 0xF105, 0xC00A, 0x7300, 0x4831, 0x9B00, 0xB000, 0x7340, + 0x8320, 0xC302, 0xBB00, 0x0C12, 0xE860, 0xC406, 0x7580, 0x4851, 0x8D80, + 0xC403, 0xBC00, 0xD3E0, 0x02C8, 0xC406, 0x7580, 0x4850, 0x8D80, 0xC403, + 0xBC00, 0xD3E0, 0x0298 + }; - for (i = 0; i < 3000; i++) { - DELAY(50); - if ((CSR_READ_1(sc, RE_MCU_CMD) & (RE_TXFIFO_EMPTY | RE_RXFIFO_EMPTY)) == (RE_TXFIFO_EMPTY | RE_RXFIFO_EMPTY)) - break; - } + re_mac_ocp_write(sc, 0xE43C, 0x0000); + re_mac_ocp_write(sc, 0xE43E, 0x0000); - for (i = 0; i < 3000; i++) { - DELAY(50); - if ((CSR_READ_2(sc, RE_IntrMitigate) & (BIT_0 | BIT_1 | BIT_8)) == (BIT_0 | BIT_1 | BIT_8)) - break; - } - break; - } - - //Disable realwow function - switch (sc->re_type) { - case MACFG_50: - case MACFG_51: - CSR_WRITE_4(sc, RE_MCUACCESS, 0xE5A90000); - CSR_WRITE_4(sc, RE_MCUACCESS, 0xF2100010); - break; - case MACFG_52: - CSR_WRITE_4(sc, RE_MCUACCESS, 0xE5A90000); - CSR_WRITE_4(sc, RE_MCUACCESS, 0xE4640000); - CSR_WRITE_4(sc, RE_MCUACCESS, 0xF2100010); - break; - case MACFG_56: - case MACFG_57: - CSR_WRITE_4(sc, RE_MCUACCESS, 0x605E0000); - CSR_WRITE_4(sc, RE_MCUACCESS, (0xE05E << 16) | (CSR_READ_4(sc, RE_MCUACCESS) & 0xFFFE)); - CSR_WRITE_4(sc, RE_MCUACCESS, 0xE9720000); - CSR_WRITE_4(sc, RE_MCUACCESS, 0xF2140010); - break; - case MACFG_60: - CSR_WRITE_4(sc, RE_MCUACCESS, 0xE05E00FF); - CSR_WRITE_4(sc, RE_MCUACCESS, 0xE9720000); - MP_WriteMcuAccessRegWord(sc, 0xE428, 0x0010); - break; - } + re_mac_ocp_write(sc, 0xE434, 0x0004); + re_mac_ocp_write(sc, 0xE43C, 0x0004); - if (sc->re_hw_supp_now_is_oob_ver > 0) - re_disable_now_is_oob(sc); + re_disable_mcu_bps(sc); - switch (sc->re_type) { - case MACFG_52: - for (i = 0; i < 10; i++) { - DELAY(100); - if (CSR_READ_2(sc, 0xD2) & BIT_9) - break; - } + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168g_1, ARRAY_SIZE(mcu_patch_code_8168g_1)); - data16 = MP_ReadMcuAccessRegWord(sc, 0xD4DE) | BIT_15; - MP_WriteMcuAccessRegWord(sc, 0xD4DE, data16); + re_mac_ocp_write(sc, 0xDE30, 0x0080); - for (i = 0; i < 10; i++) { - DELAY(100); - if (CSR_READ_2(sc, 0xD2) & BIT_9) - break; - } - break; - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - data16 = MP_ReadMcuAccessRegWord(sc, 0xE8DE) & ~BIT_14; - MP_WriteMcuAccessRegWord(sc, 0xE8DE, data16); - for (i = 0; i < 10; i++) { - DELAY(100); - if (CSR_READ_2(sc, 0xD2) & BIT_9) - break; - } - - data16 = MP_ReadMcuAccessRegWord(sc, 0xE8DE) | BIT_15; - MP_WriteMcuAccessRegWord(sc, 0xE8DE, data16); - - for (i = 0; i < 10; i++) { - DELAY(100); - if (CSR_READ_2(sc, 0xD2) & BIT_9) - break; - } - break; - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - data16 = MP_ReadMcuAccessRegWord(sc, 0xE8DE) & ~BIT_14; - MP_WriteMcuAccessRegWord(sc, 0xE8DE, data16); - for (i = 0; i < 10; i++) { - DELAY(100); - if (CSR_READ_2(sc, 0xD2) & BIT_9) - break; - } + re_mac_ocp_write(sc, 0xFC26, 0x8000); - MP_WriteMcuAccessRegWord(sc, 0xC0AA, 0x07D0); - MP_WriteMcuAccessRegWord(sc, 0xC0A6, 0x01B5); - MP_WriteMcuAccessRegWord(sc, 0xC01E, 0x5555); + re_mac_ocp_write(sc, 0xFC28, 0x0075); + re_mac_ocp_write(sc, 0xFC2A, 0x02B1); + re_mac_ocp_write(sc, 0xFC2C, 0x0991); + re_mac_ocp_write(sc, 0xFC2E, 0x059B); + re_mac_ocp_write(sc, 0xFC30, 0x0659); + re_mac_ocp_write(sc, 0xFC32, 0x0000); + re_mac_ocp_write(sc, 0xFC34, 0x02C7); + re_mac_ocp_write(sc, 0xFC36, 0x0279); +} - for (i = 0; i < 10; i++) { - DELAY(100); - if (CSR_READ_2(sc, 0xD2) & BIT_9) - break; - } - break; - } - - //wait ups resume (phy state 2) - switch (sc->re_type) { - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - if (re_is_ups_resume(sc)) { - re_wait_phy_ups_resume(sc, 2); - re_clear_ups_resume_bit(sc); - re_clear_phy_ups_reg(sc); - } - break; - }; - - /* - * Config MAC MCU - */ - re_hw_mac_mcu_config(sc); -} - -void re_hw_init(struct re_softc* sc) -{ - /* - * disable EDT. - */ - switch (sc->re_type) { - case MACFG_16: - case MACFG_17: - case MACFG_18: - case MACFG_19: - case MACFG_41: - CSR_WRITE_1(sc, 0xF4, CSR_READ_1(sc, 0xF4) & ~(BIT_0 | BIT_1)); - break; - case MACFG_36: - case MACFG_37: - case MACFG_38: - case MACFG_39: - case MACFG_42: - case MACFG_43: - case MACFG_50: - case MACFG_51: - case MACFG_54: - case MACFG_55: - CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~(BIT_0 | BIT_1 | BIT_2)); - break; - } +static void re_set_mac_mcu_8168gu_1(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8168gu_1[] = { + 0xE008, 0xE011, 0xE015, 0xE018, 0xE01B, 0xE027, 0xE043, 0xE065, 0x49E2, + 0xF005, 0x49EA, 0xF003, 0xC404, 0xBC00, 0xC403, 0xBC00, 0x0496, 0x051A, + 0x1D01, 0x8DE8, 0xC602, 0xBE00, 0x0206, 0x1B76, 0xC202, 0xBA00, 0x058A, + 0x1B76, 0xC602, 0xBE00, 0x0648, 0x74E6, 0x1B78, 0x46DC, 0x1300, 0xF005, + 0x74F8, 0x48C3, 0x48C4, 0x8CF8, 0x64E7, 0xC302, 0xBB00, 0x068E, 0x74E4, + 0x49C5, 0xF106, 0x49C6, 0xF107, 0x48C8, 0x48C9, 0xE011, 0x48C9, 0x4848, + 0xE00E, 0x4848, 0x49C7, 0xF00A, 0x48C9, 0xC60D, 0x1D1F, 0x8DC2, 0x1D00, + 0x8DC3, 0x1D11, 0x8DC0, 0xE002, 0x4849, 0x94E5, 0xC602, 0xBE00, 0x0238, + 0xE434, 0x49D9, 0xF01B, 0xC31E, 0x7464, 0x49C4, 0xF114, 0xC31B, 0x6460, + 0x14FA, 0xFA02, 0xE00F, 0xC317, 0x7460, 0x49C0, 0xF10B, 0xC311, 0x7462, + 0x48C1, 0x9C62, 0x4841, 0x9C62, 0xC30A, 0x1C04, 0x8C60, 0xE004, 0x1C15, + 0xC305, 0x8C60, 0xC602, 0xBE00, 0x0374, 0xE434, 0xE030, 0xE61C, 0xE906, + 0xC602, 0xBE00, 0x0000 + }; - re_enable_cfg9346_write(sc); + re_disable_mcu_bps(sc); - if (s0_magic_packet == 0) - re_disable_magic_packet(sc); - else - re_enable_magic_packet(sc); + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168gu_1, ARRAY_SIZE(mcu_patch_code_8168gu_1)); - re_disable_cfg9346_write(sc); + re_mac_ocp_write(sc, 0xFC26, 0x8000); - switch (sc->re_type) { - case MACFG_5: - if (CSR_READ_1(sc, RE_CFG2) & 1) { - CSR_WRITE_4(sc, 0x7C, 0x000FFFFF); - } - else { - CSR_WRITE_4(sc, 0x7C, 0x000FFF00); - } - break; - case MACFG_6: - if (CSR_READ_1(sc, RE_CFG2) & 1) { - CSR_WRITE_4(sc, 0x7C, 0x003FFFFF); - } - else { - CSR_WRITE_4(sc, 0x7C, 0x003FFF00); - } - break; - } + re_mac_ocp_write(sc, 0xFC28, 0x0493); + re_mac_ocp_write(sc, 0xFC2A, 0x0205); + re_mac_ocp_write(sc, 0xFC2C, 0x0589); + re_mac_ocp_write(sc, 0xFC2E, 0x0647); + re_mac_ocp_write(sc, 0xFC30, 0x0000); + re_mac_ocp_write(sc, 0xFC32, 0x0215); + re_mac_ocp_write(sc, 0xFC34, 0x0285); +} - switch (sc->re_type) { - case MACFG_33: - case MACFG_36: - case MACFG_37: - CSR_WRITE_1(sc, 0xF3, CSR_READ_1(sc, 0xF3) | BIT_2); - break; - } - - switch (sc->re_type) { - case MACFG_36: - case MACFG_37: - case MACFG_38: - case MACFG_39: - case MACFG_42: - case MACFG_43: - case MACFG_50: - case MACFG_51: - case MACFG_52: - case MACFG_53: - case MACFG_54: - case MACFG_55: - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - re_enable_force_clkreq(sc, 0); - re_enable_aspm_clkreq_lock(sc, 0); - re_enable_cfg9346_write(sc); - CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | BIT_5); - re_disable_cfg9346_write(sc); - break; - } - - if (sc->re_if_flags & RL_FLAG_PCIE) { - uint32_t Data32; - //Set PCIE uncorrectable error status mask pcie 0x108 - Data32 = MP_ReadPciEConfigSpace(sc, 0xF108); - Data32 |= BIT_20; - MP_WritePciEConfigSpace(sc, 0xF108, Data32); - } -} - -void re_rar_set(struct re_softc* sc, u_int8_t* eaddr) -{ - re_enable_cfg9346_write(sc); - - CSR_WRITE_4(sc, RE_IDR0, - htole32(*(u_int32_t*)(&eaddr[0]))); - CSR_WRITE_2(sc, RE_IDR4, - htole16(*(u_int32_t*)(&eaddr[4]))); - - switch (sc->re_type) { - case MACFG_36: - case MACFG_37: - case MACFG_42: - case MACFG_43: - case MACFG_54: - case MACFG_55: - CSR_WRITE_4(sc, RE_SecMAC0, - htole32(*(u_int32_t*)(&eaddr[0]))); - CSR_WRITE_2(sc, RE_SecMAC4, - htole16(*(u_int16_t*)(&eaddr[4]))); - break; - } +static void re_set_mac_mcu_8168gu_2(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8168gu_2[] = { + 0xE008, 0xE00A, 0xE00D, 0xE02F, 0xE031, 0xE038, 0xE03A, 0xE051, 0xC202, + 0xBA00, 0x0DFC, 0x7444, 0xC502, 0xBD00, 0x0A30, 0x49D9, 0xF019, 0xC520, + 0x64A5, 0x1400, 0xF007, 0x0C01, 0x8CA5, 0x1C15, 0xC515, 0x9CA0, 0xE00F, + 0xC513, 0x74A0, 0x48C8, 0x48CA, 0x9CA0, 0xC510, 0x1B00, 0x9BA0, 0x1B1C, + 0x483F, 0x9BA2, 0x1B04, 0xC506, 0x9BA0, 0xC603, 0xBE00, 0x0298, 0x03DE, + 0xE434, 0xE096, 0xE860, 0xDE20, 0xD3C0, 0xC602, 0xBE00, 0x0A64, 0xC707, + 0x1D00, 0x8DE2, 0x48C1, 0xC502, 0xBD00, 0x00AA, 0xE0C0, 0xC502, 0xBD00, + 0x0132, 0xC50C, 0x74A2, 0x49CE, 0xF1FE, 0x1C00, 0x9EA0, 0x1C1C, 0x484F, + 0x9CA2, 0xC402, 0xBC00, 0x0AFA, 0xDE20, 0xE000, 0xE092, 0xE430, 0xDE20, + 0xE0C0, 0xE860, 0xE84C, 0xB400, 0xB430, 0xE410, 0xC0AE, 0xB407, 0xB406, + 0xB405, 0xB404, 0xB403, 0xB402, 0xB401, 0xC7EE, 0x76F4, 0xC2ED, 0xC3ED, + 0xC1EF, 0xC5F3, 0x74A0, 0x49CD, 0xF001, 0xC5EE, 0x74A0, 0x49C1, 0xF105, + 0xC5E4, 0x74A2, 0x49CE, 0xF00B, 0x7444, 0x484B, 0x9C44, 0x1C10, 0x9C62, + 0x1C11, 0x8C60, 0x1C00, 0x9CF6, 0xE0EC, 0x49E7, 0xF016, 0x1D80, 0x8DF4, + 0x74F8, 0x4843, 0x8CF8, 0x74F8, 0x74F8, 0x7444, 0x48C8, 0x48C9, 0x48CA, + 0x9C44, 0x74F8, 0x4844, 0x8CF8, 0x1E01, 0xE8DB, 0x7420, 0x48C1, 0x9C20, + 0xE0D5, 0x49E6, 0xF02A, 0x1D40, 0x8DF4, 0x74FC, 0x49C0, 0xF124, 0x49C1, + 0xF122, 0x74F8, 0x49C0, 0xF01F, 0xE8D3, 0x48C4, 0x8CF8, 0x1E00, 0xE8C6, + 0xC5B1, 0x74A0, 0x49C3, 0xF016, 0xC5AF, 0x74A4, 0x49C2, 0xF005, 0xC5AA, + 0x74B2, 0x49C9, 0xF10E, 0xC5A6, 0x74A8, 0x4845, 0x4846, 0x4847, 0x4848, + 0x9CA8, 0x74B2, 0x4849, 0x9CB2, 0x74A0, 0x484F, 0x9CA0, 0xE0AA, 0x49E4, + 0xF018, 0x1D10, 0x8DF4, 0x74F8, 0x74F8, 0x74F8, 0x4843, 0x8CF8, 0x74F8, + 0x74F8, 0x74F8, 0x4844, 0x4842, 0x4841, 0x8CF8, 0x1E01, 0xE89A, 0x7420, + 0x4841, 0x9C20, 0x7444, 0x4848, 0x9C44, 0xE091, 0x49E5, 0xF03E, 0x1D20, + 0x8DF4, 0x74F8, 0x48C2, 0x4841, 0x8CF8, 0x1E01, 0x7444, 0x49CA, 0xF103, + 0x49C2, 0xF00C, 0x49C1, 0xF004, 0x6447, 0x2244, 0xE002, 0x1C01, 0x9C62, + 0x1C11, 0x8C60, 0x1C00, 0x9CF6, 0x7444, 0x49C8, 0xF01D, 0x74FC, 0x49C0, + 0xF11A, 0x49C1, 0xF118, 0x74F8, 0x49C0, 0xF015, 0x49C6, 0xF113, 0xE875, + 0x48C4, 0x8CF8, 0x7420, 0x48C1, 0x9C20, 0xC50A, 0x74A2, 0x8CA5, 0x74A0, + 0xC505, 0x9CA2, 0x1C11, 0x9CA0, 0xE00A, 0xE434, 0xD3C0, 0xDC00, 0x7444, + 0x49CA, 0xF004, 0x48CA, 0x9C44, 0xE855, 0xE052, 0x49E8, 0xF024, 0x1D01, + 0x8DF5, 0x7440, 0x49C0, 0xF11E, 0x7444, 0x49C8, 0xF01B, 0x49CA, 0xF119, + 0xC5EC, 0x76A4, 0x49E3, 0xF015, 0x49C0, 0xF103, 0x49C1, 0xF011, 0x4849, + 0x9C44, 0x1C00, 0x9CF6, 0x7444, 0x49C1, 0xF004, 0x6446, 0x1E07, 0xE003, + 0x1C01, 0x1E03, 0x9C62, 0x1C11, 0x8C60, 0xE830, 0xE02D, 0x49E9, 0xF004, + 0x1D02, 0x8DF5, 0xE79C, 0x49E3, 0xF006, 0x1D08, 0x8DF4, 0x74F8, 0x74F8, + 0xE73A, 0x49E1, 0xF007, 0x1D02, 0x8DF4, 0x1E01, 0xE7A7, 0xDE20, 0xE410, + 0x49E0, 0xF017, 0x1D01, 0x8DF4, 0xC5FA, 0x1C00, 0x8CA0, 0x1C1B, 0x9CA2, + 0x74A2, 0x49CF, 0xF0FE, 0xC5F3, 0x74A0, 0x4849, 0x9CA0, 0x74F8, 0x49C0, + 0xF006, 0x48C3, 0x8CF8, 0xE820, 0x74F8, 0x74F8, 0xC432, 0xBC00, 0xC5E4, + 0x74A2, 0x49CE, 0xF1FE, 0x9EA0, 0x1C1C, 0x484F, 0x9CA2, 0xFF80, 0xB404, + 0xB405, 0xC5D9, 0x74A2, 0x49CE, 0xF1FE, 0xC41F, 0x9CA0, 0xC41C, 0x1C13, + 0x484F, 0x9CA2, 0x74A2, 0x49CF, 0xF1FE, 0xB005, 0xB004, 0xFF80, 0xB404, + 0xB405, 0xC5C7, 0x74A2, 0x49CE, 0xF1FE, 0xC40E, 0x9CA0, 0xC40A, 0x1C13, + 0x484F, 0x9CA2, 0x74A2, 0x49CF, 0xF1FE, 0xB005, 0xB004, 0xFF80, 0x0000, + 0x0481, 0x0C81, 0x0AE0 + }; - switch (sc->re_type) { - case MACFG_38: - case MACFG_39: - re_eri_write(sc, 0xF0, 4, *(u_int16_t*)(&eaddr[0]) << 16, ERIAR_ExGMAC); - re_eri_write(sc, 0xF4, 4, *(u_int32_t*)(&eaddr[2]), ERIAR_ExGMAC); - break; - } - - re_disable_cfg9346_write(sc); -} - -void re_get_hw_mac_address(struct re_softc* sc, u_int8_t* eaddr) -{ - u_int16_t re_eeid = 0; - int i; - - for (i = 0; i < ETHER_ADDR_LEN; i++) - eaddr[i] = CSR_READ_1(sc, RE_IDR0 + i); - - switch (sc->re_type) { - case MACFG_50: - case MACFG_51: - case MACFG_52: - case MACFG_53: - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - *(u_int32_t*)&eaddr[0] = re_eri_read(sc, 0xE0, 4, ERIAR_ExGMAC); - *(u_int16_t*)&eaddr[4] = (u_int16_t)re_eri_read(sc, 0xE4, 4, ERIAR_ExGMAC); - break; - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - *(u_int32_t*)&eaddr[0] = CSR_READ_4(sc, RE_BACKUP_ADDR0_8125); - *(u_int16_t*)&eaddr[4] = CSR_READ_2(sc, RE_BACKUP_ADDR4_8125); - break; - case MACFG_63: - case MACFG_64: - case MACFG_65: - case MACFG_66: - break; - default: - re_read_eeprom(sc, (caddr_t)&re_eeid, RE_EE_ID, 1, 0); - if (re_eeid == 0x8129) - re_read_eeprom(sc, (caddr_t)&eaddr[0], RE_EE_EADDR, 3, 0); - break; - } + re_disable_mcu_bps(sc); - if (!is_valid_ether_addr(eaddr)) { - for (i = 0; i < ETHER_ADDR_LEN; i++) - eaddr[i] = CSR_READ_1(sc, RE_IDR0 + i); + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168gu_2, ARRAY_SIZE(mcu_patch_code_8168gu_2)); - if (!is_valid_ether_addr(eaddr)) { - device_printf(dev, "Invalid ether addr: %6D\n", eaddr, ":"); - random_ether_addr(eaddr); - device_printf(dev, "Random ether addr: %6D\n", eaddr, ":"); - sc->random_mac = 1; - } - } + re_mac_ocp_write(sc, 0xFC26, 0x8000); - re_rar_set(sc, eaddr); + re_mac_ocp_write(sc, 0xFC28, 0x0000); + re_mac_ocp_write(sc, 0xFC2A, 0x0000); + re_mac_ocp_write(sc, 0xFC2C, 0x0297); + re_mac_ocp_write(sc, 0xFC2E, 0x0000); + re_mac_ocp_write(sc, 0xFC30, 0x00A9); + re_mac_ocp_write(sc, 0xFC32, 0x012D); + re_mac_ocp_write(sc, 0xFC34, 0x0000); + re_mac_ocp_write(sc, 0xFC36, 0x08DF); } -int re_check_mac_version(struct re_softc* sc) +static void re_set_mac_mcu_8168ep_1(struct re_softc *sc) { - int error = 0; + static const uint16_t mcu_patch_code_8168ep_1[] = { + 0xE008, 0xE0D3, 0xE0D6, 0xE0D9, 0xE0DB, 0xE0DD, 0xE0DF, 0xE0E1, 0xC251, + 0x7340, 0x49B1, 0xF010, 0x1D02, 0x8D40, 0xC202, 0xBA00, 0x2C3A, 0xC0F0, + 0xE8DE, 0x2000, 0x8000, 0xC0B6, 0x268C, 0x752C, 0x49D4, 0xF112, 0xE025, + 0xC2F6, 0x7146, 0xC2F5, 0x7340, 0x49BE, 0xF103, 0xC7F2, 0xE002, 0xC7F1, + 0x304F, 0x6226, 0x49A1, 0xF1F0, 0x7222, 0x49A0, 0xF1ED, 0x2525, 0x1F28, + 0x3097, 0x3091, 0x9A36, 0x752C, 0x21DC, 0x25BC, 0xC6E2, 0x77C0, 0x1304, + 0xF014, 0x1303, 0xF014, 0x1302, 0xF014, 0x1301, 0xF014, 0x49D4, 0xF103, + 0xC3D7, 0xBB00, 0xC618, 0x67C6, 0x752E, 0x22D7, 0x26DD, 0x1505, 0xF013, + 0xC60A, 0xBE00, 0xC309, 0xBB00, 0xC308, 0xBB00, 0xC307, 0xBB00, 0xC306, + 0xBB00, 0x25C8, 0x25A6, 0x25AC, 0x25B2, 0x25B8, 0xCD08, 0x0000, 0xC0BC, + 0xC2FF, 0x7340, 0x49B0, 0xF04E, 0x1F46, 0x308F, 0xC3F7, 0x1C04, 0xE84D, + 0x1401, 0xF147, 0x7226, 0x49A7, 0xF044, 0x7222, 0x2525, 0x1F30, 0x3097, + 0x3091, 0x7340, 0xC4EA, 0x401C, 0xF006, 0xC6E8, 0x75C0, 0x49D7, 0xF105, + 0xE036, 0x1D08, 0x8DC1, 0x0208, 0x6640, 0x2764, 0x1606, 0xF12F, 0x6346, + 0x133B, 0xF12C, 0x9B34, 0x1B18, 0x3093, 0xC32A, 0x1C10, 0xE82A, 0x1401, + 0xF124, 0x1A36, 0x308A, 0x7322, 0x25B5, 0x0B0E, 0x1C00, 0xE82C, 0xC71F, + 0x4027, 0xF11A, 0xE838, 0x1F42, 0x308F, 0x1B08, 0xE824, 0x7236, 0x7746, + 0x1700, 0xF00D, 0xC313, 0x401F, 0xF103, 0x1F00, 0x9F46, 0x7744, 0x449F, + 0x445F, 0xE817, 0xC70A, 0x4027, 0xF105, 0xC302, 0xBB00, 0x2E08, 0x2DC2, + 0xC7FF, 0xBF00, 0xCDB8, 0xFFFF, 0x0C02, 0xA554, 0xA5DC, 0x402F, 0xF105, + 0x1400, 0xF1FA, 0x1C01, 0xE002, 0x1C00, 0xFF80, 0x49B0, 0xF004, 0x0B01, + 0xA1D3, 0xE003, 0x0B02, 0xA5D3, 0x3127, 0x3720, 0x0B02, 0xA5D3, 0x3127, + 0x3720, 0x1300, 0xF1FB, 0xFF80, 0x7322, 0x25B5, 0x1E28, 0x30DE, 0x30D9, + 0x7264, 0x1E11, 0x2368, 0x3116, 0xFF80, 0x1B7E, 0xC602, 0xBE00, 0x06A6, + 0x1B7E, 0xC602, 0xBE00, 0x0764, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, + 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, + 0x0000 + }; - switch (CSR_READ_4(sc, RE_TXCFG) & 0xFCF00000) { - case 0x00800000: - case 0x04000000: - sc->re_type = MACFG_3; - sc->max_jumbo_frame_size = Jumbo_Frame_7k; - CSR_WRITE_4(sc, RE_RXCFG, 0xFF00); - break; - case 0x10000000: - sc->re_type = MACFG_4; - sc->max_jumbo_frame_size = Jumbo_Frame_7k; - CSR_WRITE_4(sc, RE_RXCFG, 0xFF00); - break; - case 0x18000000: - sc->re_type = MACFG_5; - sc->max_jumbo_frame_size = Jumbo_Frame_7k; - CSR_WRITE_4(sc, RE_RXCFG, 0xFF00); - break; - case 0x98000000: - sc->re_type = MACFG_6; - sc->max_jumbo_frame_size = Jumbo_Frame_7k; - CSR_WRITE_4(sc, RE_RXCFG, 0xFF00); - break; - case 0x34000000: - case 0xB4000000: - sc->re_type = MACFG_11; - sc->max_jumbo_frame_size = ETHERMTU; - CSR_WRITE_4(sc, RE_RXCFG, 0xE700); - break; - case 0x34200000: - case 0xB4200000: - sc->re_type = MACFG_12; - sc->max_jumbo_frame_size = ETHERMTU; - CSR_WRITE_4(sc, RE_RXCFG, 0xE700); - break; - case 0x34300000: - case 0xB4300000: - sc->re_type = MACFG_13; - sc->max_jumbo_frame_size = ETHERMTU; - CSR_WRITE_4(sc, RE_RXCFG, 0xE700); - break; - case 0x34900000: - case 0x24900000: - sc->re_type = MACFG_14; - sc->max_jumbo_frame_size = ETHERMTU; - sc->re_if_flags |= RL_FLAG_DESCV2; - CSR_WRITE_4(sc, RE_RXCFG, 0xE700); - break; - case 0x34A00000: - case 0x24A00000: - sc->re_type = MACFG_15; - sc->max_jumbo_frame_size = ETHERMTU; - sc->re_if_flags |= RL_FLAG_DESCV2; - CSR_WRITE_4(sc, RE_RXCFG, 0xE700); - break; - case 0x34B00000: - case 0x24B00000: - sc->re_type = MACFG_16; - sc->max_jumbo_frame_size = ETHERMTU; - sc->re_if_flags |= RL_FLAG_DESCV2; - CSR_WRITE_4(sc, RE_RXCFG, 0xE700); - break; - case 0x34C00000: - case 0x24C00000: - sc->re_type = MACFG_17; - sc->max_jumbo_frame_size = ETHERMTU; - sc->re_if_flags |= RL_FLAG_DESCV2; - CSR_WRITE_4(sc, RE_RXCFG, 0xE700); - break; - case 0x34D00000: - case 0x24D00000: - sc->re_type = MACFG_18; - sc->max_jumbo_frame_size = ETHERMTU; - sc->re_if_flags |= RL_FLAG_DESCV2; - CSR_WRITE_4(sc, RE_RXCFG, 0xE700); - break; - case 0x34E00000: - case 0x24E00000: - sc->re_type = MACFG_19; - sc->max_jumbo_frame_size = ETHERMTU; - sc->re_if_flags |= RL_FLAG_DESCV2; - CSR_WRITE_4(sc, RE_RXCFG, 0xE700); - break; - case 0x30000000: - sc->re_type = MACFG_21; - sc->max_jumbo_frame_size = Jumbo_Frame_4k; - CSR_WRITE_4(sc, RE_RXCFG, 0xE700); - break; - case 0x38000000: - sc->re_type = MACFG_22; - sc->max_jumbo_frame_size = Jumbo_Frame_4k; - CSR_WRITE_4(sc, RE_RXCFG, 0xE700); - break; - case 0x38500000: - case 0xB8500000: - case 0x38700000: - case 0xB8700000: - sc->re_type = MACFG_23; - sc->max_jumbo_frame_size = Jumbo_Frame_4k; - CSR_WRITE_4(sc, RE_RXCFG, 0xE700); - break; - case 0x3C000000: - sc->re_type = MACFG_24; - sc->max_jumbo_frame_size = Jumbo_Frame_6k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0xC700); - break; - case 0x3C200000: - sc->re_type = MACFG_25; - sc->max_jumbo_frame_size = Jumbo_Frame_6k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0xC700); - break; - case 0x3C400000: - sc->re_type = MACFG_26; - sc->max_jumbo_frame_size = Jumbo_Frame_6k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0xC700); - break; - case 0x3C900000: - sc->re_type = MACFG_27; - sc->max_jumbo_frame_size = Jumbo_Frame_6k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0xC700); - break; - case 0x3CB00000: - sc->re_type = MACFG_28; - sc->max_jumbo_frame_size = Jumbo_Frame_6k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0xC700); - break; - case 0x28100000: - sc->re_type = MACFG_31; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0x8700); - break; - case 0x28200000: - sc->re_type = MACFG_32; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0x8700); - break; - case 0x28300000: - sc->re_type = MACFG_33; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0x8700); - break; - case 0x2C100000: - sc->re_type = MACFG_36; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0x8700); - break; - case 0x2C200000: - sc->re_type = MACFG_37; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0x8700); - break; - case 0x2C800000: - sc->re_type = MACFG_38; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0xBF00); - break; - case 0x2C900000: - sc->re_type = MACFG_39; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0xBF00); - break; - case 0x24000000: - sc->re_type = MACFG_41; - sc->max_jumbo_frame_size = ETHERMTU; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0xE700); - break; - case 0x40900000: - sc->re_type = MACFG_42; - sc->max_jumbo_frame_size = ETHERMTU; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0xE700); - break; - case 0x40A00000: - case 0x40B00000: - case 0x40C00000: - sc->re_type = MACFG_43; - sc->max_jumbo_frame_size = ETHERMTU; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0xE700); - break; - case 0x48000000: - sc->re_type = MACFG_50; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0xBF00); - break; - case 0x48100000: - sc->re_type = MACFG_51; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0xBF00); - break; - case 0x48800000: - sc->re_type = MACFG_52; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0xBF00); - break; - case 0x44000000: - sc->re_type = MACFG_53; - sc->max_jumbo_frame_size = ETHERMTU; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0xE700); - break; - case 0x44800000: - sc->re_type = MACFG_54; - sc->max_jumbo_frame_size = ETHERMTU; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0xE700); - break; - case 0x44900000: - sc->re_type = MACFG_55; - sc->max_jumbo_frame_size = ETHERMTU; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0xE700); - break; - case 0x4C000000: - sc->re_type = MACFG_56; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); - break; - case 0x4C100000: - sc->re_type = MACFG_57; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); - break; - case 0x50800000: - sc->re_type = MACFG_58; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); - break; - case 0x50900000: - sc->re_type = MACFG_59; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); - break; - case 0x5C800000: - sc->re_type = MACFG_60; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); - break; - case 0x50000000: - sc->re_type = MACFG_61; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); - break; - case 0x50100000: - sc->re_type = MACFG_62; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); - break; - case 0x50200000: - sc->re_type = MACFG_67; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); - break; - case 0x28800000: - sc->re_type = MACFG_63; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0x8700); - break; - case 0x28900000: - sc->re_type = MACFG_64; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0x8700); - break; - case 0x28A00000: - sc->re_type = MACFG_65; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0x8700); - break; - case 0x28B00000: - sc->re_type = MACFG_66; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; - CSR_WRITE_4(sc, RE_RXCFG, 0x8700); - break; - case 0x54000000: - sc->re_type = MACFG_68; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); - break; - case 0x54100000: - sc->re_type = MACFG_69; - if ((MP_ReadMcuAccessRegWord(sc, 0xD006) & 0xFF00) == 0x0100) - sc->re_type = MACFG_74; - else if ((MP_ReadMcuAccessRegWord(sc, 0xD006) & 0xFF00) == 0x0300) - sc->re_type = MACFG_75; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); - break; - case 0x6C000000: - sc->re_type = MACFG_76; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_8168G_PLUS | - RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); - break; - case 0x54900000: - sc->re_type = MACFG_70; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); - break; - case 0x54A00000: - sc->re_type = MACFG_71; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); - break; - case 0x54B00000: - sc->re_type = MACFG_72; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); - break; - case 0x54C00000: - sc->re_type = MACFG_73; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; - CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); - break; - case 0x60800000: - sc->re_type = MACFG_80; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; - CSR_WRITE_4(sc, RE_RXCFG, 0x40C00700); - break; - case 0x60900000: - sc->re_type = MACFG_81; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; - CSR_WRITE_4(sc, RE_RXCFG, 0x40C00700); - break; - case 0x64000000: - sc->re_type = MACFG_82; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; - CSR_WRITE_4(sc, RE_RXCFG, 0x40C00F00); - break; - case 0x64100000: - sc->re_type = MACFG_83; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; - CSR_WRITE_4(sc, RE_RXCFG, 0x40C00F00); - break; - case 0x64800000: - sc->re_type = MACFG_90; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; - CSR_WRITE_4(sc, RE_RXCFG, 0x40C00F00); - break; - case 0x64900000: - sc->re_type = MACFG_91; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; - CSR_WRITE_4(sc, RE_RXCFG, 0x40C00D00); - break; - case 0x64A00000: - sc->re_type = MACFG_92; - sc->max_jumbo_frame_size = Jumbo_Frame_9k; - sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | - RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; - CSR_WRITE_4(sc, RE_RXCFG, 0x40C00D00); - break; - default: - device_printf(dev, "unknown device\n"); - sc->re_type = MACFG_FF; - error = ENXIO; - break; - } - - switch (sc->re_device_id) { - case RT_DEVICEID_8169: - case RT_DEVICEID_8169SC: - case RT_DEVICEID_8168: - case RT_DEVICEID_8161: - case RT_DEVICEID_8162: - case RT_DEVICEID_8125: - case RT_DEVICEID_3000: - case RT_DEVICEID_8126: - //do nothing - break; - default: - sc->max_jumbo_frame_size = ETHERMTU; - break; - } + re_disable_mcu_bps(sc); - return error; -} + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168ep_1, ARRAY_SIZE(mcu_patch_code_8168ep_1)); -void re_init_software_variable(struct re_softc* sc) -{ - switch (sc->re_device_id) { - case RT_DEVICEID_8168: - case RT_DEVICEID_8161: - case RT_DEVICEID_8162: - case RT_DEVICEID_8136: - case RT_DEVICEID_8125: - case RT_DEVICEID_3000: - case RT_DEVICEID_8126: - sc->re_if_flags |= RL_FLAG_PCIE; - break; - } + re_mac_ocp_write(sc, 0xFC26, 0x8000); - sc->re_rx_mbuf_sz = sc->max_jumbo_frame_size + ETHER_VLAN_ENCAP_LEN + ETHER_HDR_LEN + ETHER_CRC_LEN + RE_ETHER_ALIGN + 1; + re_mac_ocp_write(sc, 0xFC28, 0x2549); + re_mac_ocp_write(sc, 0xFC2A, 0x06A5); + re_mac_ocp_write(sc, 0xFC2C, 0x0763); +} - if (sc->re_rx_mbuf_sz > max_rx_mbuf_sz) { - sc->max_jumbo_frame_size -= (sc->re_rx_mbuf_sz - max_rx_mbuf_sz); - sc->re_rx_mbuf_sz = max_rx_mbuf_sz; - } +static bool re_check_dash_other_fun_present(struct re_softc *sc) +{ + //check if func 2 exist + if (re_csi_other_fun_read(sc, 2, 0xf000) != 0xffffffff) + return true; - switch (sc->re_type) { - case MACFG_63: - case MACFG_64: - case MACFG_65: - case MACFG_66: - sc->HwSuppDashVer = 1; - break; - case MACFG_61: - case MACFG_62: - case MACFG_67: - sc->HwSuppDashVer = 2; - break; - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - sc->HwSuppDashVer = 3; - break; - case MACFG_80: - case MACFG_81: { - u_int8_t tmpUchar; - tmpUchar = (u_int8_t)MP_ReadMcuAccessRegWord(sc, 0xD006); - if (tmpUchar == 0x02 || tmpUchar == 0x04) - sc->HwSuppDashVer = 2; - } - break; - default: - sc->HwSuppDashVer = 0; - break; - } - - switch (sc->re_type) { - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - sc->HwPkgDet = MP_ReadMcuAccessRegWord(sc, 0xDC00); - sc->HwPkgDet = (sc->HwPkgDet >> 3) & 0x0F; - break; - } - - switch (sc->re_type) { - case MACFG_71: - case MACFG_72: - case MACFG_73: - if (sc->HwPkgDet == 0x06) { - u_int8_t tmpUchar = re_eri_read(sc, 0xE6, 1, ERIAR_ExGMAC); - if (tmpUchar == 0x02) - sc->hw_hw_supp_serdes_phy_ver = 1; - else if (tmpUchar == 0x00) - sc->hw_hw_supp_serdes_phy_ver = 2; - } - break; - } - - if (HW_SUPP_SERDES_PHY(sc)) - sc->eee_enable = 0; - - if (HW_DASH_SUPPORT_DASH(sc)) - sc->re_dash = re_check_dash(sc); - - if (sc->re_dash) { -#if DISABLED_CODE - if (HW_DASH_SUPPORT_TYPE_3(sc)) { - u_int64_t CmacMemPhysAddress; - bus_space_handle_t cmac_ioaddr; - - CmacMemPhysAddress = MP_ReadOtherFunPciEConfigSpace(sc, 0, 0xf018); - if (!(CmacMemPhysAddress & BIT_0)) { - if (CmacMemPhysAddress & BIT_2) - CmacMemPhysAddress |= MP_ReadOtherFunPciEConfigSpace(sc, 0, 0xf01c) << 16; - - CmacMemPhysAddress &= 0xFFFFFFF0; - /* ioremap MMIO region */ - sc->re_mapped_cmac_tag = X86_BUS_SPACE_MEM; - if (bus_space_map(sc->re_mapped_cmac_tag, CmacMemPhysAddress, RE_REGS_SIZE, 0, - &cmac_ioaddr)) - sc->re_dash = 0; - else - sc->re_mapped_cmac_handle = cmac_ioaddr; - } - } -#else - sc->re_dash = 0; -#endif - } - - switch (sc->re_type) { - case MACFG_61: - case MACFG_62: - case MACFG_67: -#if DISABLED_CODE - sc->re_cmac_handle = sc->re_bhandle; - sc->re_cmac_tag = sc->re_btag; -#endif - break; - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: -#if DISABLED_CODE - sc->re_cmac_handle = sc->re_mapped_cmac_handle; - sc->re_cmac_tag = sc->re_mapped_cmac_tag; -#endif - break; - } - - switch (sc->re_type) { - case MACFG_14: - case MACFG_15: - case MACFG_16: - case MACFG_17: - case MACFG_18: - case MACFG_19: - case MACFG_31: - case MACFG_32: - case MACFG_33: - case MACFG_41: - case MACFG_63: - case MACFG_64: - case MACFG_65: - case MACFG_66: - sc->re_efuse_ver = EFUSE_SUPPORT_V1; - break; - case MACFG_36: - case MACFG_37: - case MACFG_42: - case MACFG_43: - case MACFG_54: - case MACFG_55: - sc->re_efuse_ver = EFUSE_SUPPORT_V2; - break; - case MACFG_38: - case MACFG_39: - case MACFG_50: - case MACFG_51: - case MACFG_52: - case MACFG_53: - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - sc->re_efuse_ver = EFUSE_SUPPORT_V3; - break; - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - sc->re_efuse_ver = EFUSE_SUPPORT_V4; - break; - default: - sc->re_efuse_ver = EFUSE_NOT_SUPPORT; - break; - } + return false; +} - switch (sc->re_type) { - case MACFG_69: - case MACFG_76: { - u_int16_t ioffset_p3, ioffset_p2, ioffset_p1, ioffset_p0; - u_int16_t TmpUshort; +static void re_set_mac_mcu_8168ep_2(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8168ep_2[] = { + 0xE008, 0xE017, 0xE052, 0xE056, 0xE058, 0xE05A, 0xE05C, 0xE05E, 0xC50F, + 0x76A4, 0x49E3, 0xF007, 0x49C0, 0xF103, 0xC607, 0xBE00, 0xC606, 0xBE00, + 0xC602, 0xBE00, 0x0BDA, 0x0BB6, 0x0BBA, 0xDC00, 0xB400, 0xB401, 0xB402, + 0xB403, 0xB404, 0xC02E, 0x7206, 0x49AE, 0xF1FE, 0xC12B, 0x9904, 0xC12A, + 0x9906, 0x7206, 0x49AE, 0xF1FE, 0x7200, 0x49A0, 0xF117, 0xC123, 0xC223, + 0xC323, 0xE808, 0xC322, 0xE806, 0xC321, 0xE804, 0xC320, 0xE802, 0xE00C, + 0x740E, 0x49CE, 0xF1FE, 0x9908, 0x990A, 0x9A0C, 0x9B0E, 0x740E, 0x49CE, + 0xF1FE, 0xFF80, 0xB004, 0xB003, 0xB002, 0xB001, 0xB000, 0xC604, 0xC002, + 0xB800, 0x1FC8, 0xE000, 0xE8E0, 0xF128, 0x0002, 0xFFFF, 0xF000, 0x8001, + 0x8002, 0x8003, 0x8004, 0x48C1, 0x48C2, 0xC502, 0xBD00, 0x0490, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000 + }; - MP_WriteMcuAccessRegWord(sc, 0xDD02, 0x807D); + re_disable_mcu_bps(sc); - TmpUshort = MP_ReadMcuAccessRegWord(sc, 0xDD02); - ioffset_p3 = ((TmpUshort & BIT_7) >> 7); - ioffset_p3 <<= 3; - TmpUshort = MP_ReadMcuAccessRegWord(sc, 0xDD00); + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168ep_2, ARRAY_SIZE(mcu_patch_code_8168ep_2)); - ioffset_p3 |= ((TmpUshort & (BIT_15 | BIT_14 | BIT_13)) >> 13); + re_mac_ocp_write(sc, 0xFC26, 0x8000); - ioffset_p2 = ((TmpUshort & (BIT_12 | BIT_11 | BIT_10 | BIT_9)) >> 9); - ioffset_p1 = ((TmpUshort & (BIT_8 | BIT_7 | BIT_6 | BIT_5)) >> 5); + re_mac_ocp_write(sc, 0xFC28, 0x0BB3); + if (false == re_check_dash_other_fun_present(sc)) + re_mac_ocp_write(sc, 0xFC2A, 0x1FC7); + //re_mac_ocp_write(sc, 0xFC2C, 0x0485); +} - ioffset_p0 = ((TmpUshort & BIT_4) >> 4); - ioffset_p0 <<= 3; - ioffset_p0 |= (TmpUshort & (BIT_2 | BIT_1 | BIT_0)); +static void re_set_mac_mcu_8411b_1(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8411b_1[] = { + 0xE008, 0xE00A, 0xE00C, 0xE00E, 0xE027, 0xE04F, 0xE05E, 0xE065, 0xC602, + 0xBE00, 0x0000, 0xC502, 0xBD00, 0x074C, 0xC302, 0xBB00, 0x080A, 0x6420, + 0x48C2, 0x8C20, 0xC516, 0x64A4, 0x49C0, 0xF009, 0x74A2, 0x8CA5, 0x74A0, + 0xC50E, 0x9CA2, 0x1C11, 0x9CA0, 0xE006, 0x74F8, 0x48C4, 0x8CF8, 0xC404, + 0xBC00, 0xC403, 0xBC00, 0x0BF2, 0x0C0A, 0xE434, 0xD3C0, 0x49D9, 0xF01F, + 0xC526, 0x64A5, 0x1400, 0xF007, 0x0C01, 0x8CA5, 0x1C15, 0xC51B, 0x9CA0, + 0xE013, 0xC519, 0x74A0, 0x48C4, 0x8CA0, 0xC516, 0x74A4, 0x48C8, 0x48CA, + 0x9CA4, 0xC512, 0x1B00, 0x9BA0, 0x1B1C, 0x483F, 0x9BA2, 0x1B04, 0xC508, + 0x9BA0, 0xC505, 0xBD00, 0xC502, 0xBD00, 0x0300, 0x051E, 0xE434, 0xE018, + 0xE092, 0xDE20, 0xD3C0, 0xC50F, 0x76A4, 0x49E3, 0xF007, 0x49C0, 0xF103, + 0xC607, 0xBE00, 0xC606, 0xBE00, 0xC602, 0xBE00, 0x0C4C, 0x0C28, 0x0C2C, + 0xDC00, 0xC707, 0x1D00, 0x8DE2, 0x48C1, 0xC502, 0xBD00, 0x00AA, 0xE0C0, + 0xC502, 0xBD00, 0x0132 + }; - if ((ioffset_p3 == 0x0F) && (ioffset_p2 == 0x0F) && (ioffset_p1 == 0x0F) && (ioffset_p0 == 0x0F)) { - sc->RequireAdcBiasPatch = FALSE; - } - else { - sc->RequireAdcBiasPatch = TRUE; - sc->AdcBiasPatchIoffset = (ioffset_p3 << 12) | (ioffset_p2 << 8) | (ioffset_p1 << 4) | (ioffset_p0); - } - } - break; - } - - switch (sc->re_type) { - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_75: - case MACFG_76: { - u_int16_t rg_saw_cnt; - - MP_WritePhyUshort(sc, 0x1F, 0x0C42); - rg_saw_cnt = MP_ReadPhyUshort(sc, 0x13); - rg_saw_cnt &= ~(BIT_15 | BIT_14); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - if (rg_saw_cnt > 0) { - sc->SwrCnt1msIni = 16000000 / rg_saw_cnt; - sc->SwrCnt1msIni &= 0x0FFF; - - sc->RequireAdjustUpsTxLinkPulseTiming = TRUE; - } - } - break; - } + re_disable_mcu_bps(sc); -#ifdef ENABLE_FIBER_SUPPORT - re_check_hw_fiber_mode_support(sc); -#endif //ENABLE_FIBER_SUPPORT + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8411b_1, ARRAY_SIZE(mcu_patch_code_8411b_1)); - switch (sc->re_type) { - case MACFG_74: - case MACFG_75: - sc->RequiredSecLanDonglePatch = FALSE; - break; - } - - switch (sc->re_type) { - case MACFG_31: - case MACFG_32: - case MACFG_33: - case MACFG_36: - case MACFG_37: - case MACFG_38: - case MACFG_39: - case MACFG_42: - case MACFG_43: - case MACFG_50: - case MACFG_51: - case MACFG_52: - case MACFG_53: - case MACFG_54: - case MACFG_55: - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_63: - case MACFG_64: - case MACFG_65: - case MACFG_66: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: -#if DISABLED_CODE - sc->re_hw_enable_msi_msix = TRUE; -#endif - break; - } - - switch (sc->re_type) { - case MACFG_3: - case MACFG_4: - case MACFG_5: - case MACFG_6: - case MACFG_11: - case MACFG_12: - case MACFG_13: - case MACFG_21: - case MACFG_22: - case MACFG_23: - case MACFG_24: - case MACFG_25: - case MACFG_26: - case MACFG_27: - case MACFG_28: - case MACFG_41: - case MACFG_42: - case MACFG_43: - case MACFG_54: - case MACFG_55: -#if DISABLED_CODE - sc->re_coalesce_tx_pkt = TRUE; -#endif - break; - } - - switch (sc->re_type) { - case MACFG_36: - case MACFG_37: - case MACFG_38: - case MACFG_39: - case MACFG_42: - case MACFG_43: - case MACFG_50: - case MACFG_51: - case MACFG_52: - case MACFG_53: - case MACFG_54: - case MACFG_55: - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - sc->re_hw_supp_now_is_oob_ver = 1; - break; - } + re_mac_ocp_write(sc, 0xFC26, 0x8000); - switch (sc->re_type) { - case MACFG_36: - case MACFG_37: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168E; - break; - case MACFG_38: - case MACFG_39: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168EVL; - break; - case MACFG_50: - case MACFG_51: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168F; - break; - case MACFG_52: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8411; - break; - case MACFG_56: - case MACFG_57: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168G; - break; - case MACFG_58: - case MACFG_59: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168GU; - break; - case MACFG_60: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8411B; - break; - case MACFG_61: - case MACFG_62: - case MACFG_67: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168EP; - break; - case MACFG_68: - case MACFG_69: - case MACFG_76: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168H; - break; - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168FP; - break; - case MACFG_74: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168H_6838; - break; - case MACFG_75: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168H_6878B; - break; - case MACFG_80: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125A_REV_A; - break; - case MACFG_81: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125A_REV_B; - break; - case MACFG_82: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125B_REV_A; - break; - case MACFG_83: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125B_REV_B; - break; - case MACFG_90: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8126A_REV_A; - break; - case MACFG_91: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8126A_REV_B; - break; - case MACFG_92: - sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8126A_REV_C; - break; + re_mac_ocp_write(sc, 0xFC2A, 0x0743); + re_mac_ocp_write(sc, 0xFC2C, 0x0801); + re_mac_ocp_write(sc, 0xFC2E, 0x0BE9); + re_mac_ocp_write(sc, 0xFC30, 0x02FD); + re_mac_ocp_write(sc, 0xFC32, 0x0C25); + re_mac_ocp_write(sc, 0xFC34, 0x00A9); + re_mac_ocp_write(sc, 0xFC36, 0x012D); +} - } +static void re_set_mac_mcu_8168h_1(struct re_softc *sc) +{ + re_disable_mcu_bps(sc); +} - switch (sc->re_type) { - case MACFG_81: - if ((MP_ReadMcuAccessRegWord(sc, 0xD442) & BIT_5) && - (MP_RealReadPhyOcpRegWord(sc, 0xD068) & BIT_1) - ) { - sc->RequirePhyMdiSwapPatch = TRUE; - } - break; - } - - switch (sc->re_type) { - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - sc->HwSuppExtendTallyCounterVer = 1; - break; - } - - switch (sc->re_type) { - case MACFG_38: - case MACFG_39: - case MACFG_50: - case MACFG_51: - case MACFG_52: - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - sc->HwSuppMacMcuVer = 1; - break; - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - sc->HwSuppMacMcuVer = 2; - break; - } - - switch (sc->re_type) { - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - sc->MacMcuPageSize = RTL8125_MAC_MCU_PAGE_SIZE; - break; - } +static void re_set_mac_mcu_8168h_2(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8168h_2[] = { + 0xE008, 0xE00F, 0xE011, 0xE047, 0xE049, 0xE073, 0xE075, 0xE07A, 0xC707, + 0x1D00, 0x8DE2, 0x48C1, 0xC502, 0xBD00, 0x00E4, 0xE0C0, 0xC502, 0xBD00, + 0x0216, 0xC634, 0x75C0, 0x49D3, 0xF027, 0xC631, 0x75C0, 0x49D3, 0xF123, + 0xC627, 0x75C0, 0xB405, 0xC525, 0x9DC0, 0xC621, 0x75C8, 0x49D5, 0xF00A, + 0x49D6, 0xF008, 0x49D7, 0xF006, 0x49D8, 0xF004, 0x75D2, 0x49D9, 0xF111, + 0xC517, 0x9DC8, 0xC516, 0x9DD2, 0xC618, 0x75C0, 0x49D4, 0xF003, 0x49D0, + 0xF104, 0xC60A, 0xC50E, 0x9DC0, 0xB005, 0xC607, 0x9DC0, 0xB007, 0xC602, + 0xBE00, 0x1A06, 0xB400, 0xE86C, 0xA000, 0x01E1, 0x0200, 0x9200, 0xE84C, + 0xE004, 0xE908, 0xC502, 0xBD00, 0x0B58, 0xB407, 0xB404, 0x2195, 0x25BD, + 0x9BE0, 0x1C1C, 0x484F, 0x9CE2, 0x72E2, 0x49AE, 0xF1FE, 0x0B00, 0xF116, + 0xC71C, 0xC419, 0x9CE0, 0x1C13, 0x484F, 0x9CE2, 0x74E2, 0x49CE, 0xF1FE, + 0xC412, 0x9CE0, 0x1C13, 0x484F, 0x9CE2, 0x74E2, 0x49CE, 0xF1FE, 0xC70C, + 0x74F8, 0x48C3, 0x8CF8, 0xB004, 0xB007, 0xC502, 0xBD00, 0x0F24, 0x0481, + 0x0C81, 0xDE24, 0xE000, 0xC602, 0xBE00, 0x0CA4, 0x48C1, 0x48C2, 0x9C46, + 0xC402, 0xBC00, 0x0578, 0xC602, 0xBE00, 0x0000 + }; - sc->re_8169_MacVersion = (CSR_READ_4(sc, RE_TXCFG) & 0x7c800000) >> 25; /* Get bit 26~30 */ - sc->re_8169_MacVersion |= ((CSR_READ_4(sc, RE_TXCFG) & 0x00800000) != 0 ? 1 : 0); /* Get bit 23 */ - DBGPRINT1(sc->re_unit, "8169 Mac Version %d\n", sc->re_8169_MacVersion); + re_disable_mcu_bps(sc); - /* Rtl8169s single chip detected */ - if (sc->re_type == MACFG_3) { - RE_LOCK(sc); - sc->re_8169_PhyVersion = (MP_ReadPhyUshort(sc, 0x03) & 0x000f); - DBGPRINT1(sc->re_unit, "8169 Phy Version %d\n", sc->re_8169_PhyVersion); - RE_UNLOCK(sc); - } + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168h_2, ARRAY_SIZE(mcu_patch_code_8168h_2)); - //TODO: Update Link State - //sc->link_state = LINK_STATE_UNKNOWN; + re_mac_ocp_write(sc, 0xFC26, 0x8000); -#ifdef ENABLE_FIBER_SUPPORT - if (HW_FIBER_MODE_ENABLED(sc)) - re_set_fiber_mode_software_variable(sc); -#endif //ENABLE_FIBER_SUPPORT -} + re_mac_ocp_write(sc, 0xFC28, 0x00E2); + re_mac_ocp_write(sc, 0xFC2A, 0x0210); + re_mac_ocp_write(sc, 0xFC2C, 0x1A04); + re_mac_ocp_write(sc, 0xFC2E, 0x0B26); + re_mac_ocp_write(sc, 0xFC30, 0x0F02); + re_mac_ocp_write(sc, 0xFC32, 0x0CA0); + //re_mac_ocp_write(sc, 0xFC34, 0x056C); -static void re_enable_ocp_phy_power_saving(struct re_softc* sc) -{ - u_int16_t val; - - if (sc->re_type == MACFG_59 || sc->re_type == MACFG_60 || - sc->re_type == MACFG_62 || sc->re_type == MACFG_67 || - sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || - sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || - sc->re_type == MACFG_72 || sc->re_type == MACFG_73 || - sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || - sc->re_type == MACFG_76) { - val = MP_ReadPhyOcpRegWord(sc, 0x0C41, 0x13); - if (val != 0x0050) { - re_set_phy_mcu_patch_request(sc); - MP_WritePhyOcpRegWord(sc, 0x0C41, 0x13, 0x0000); - MP_WritePhyOcpRegWord(sc, 0x0C41, 0x13, 0x0050); - re_clear_phy_mcu_patch_request(sc); - } - } - else if (sc->re_type == MACFG_80 || sc->re_type == MACFG_81 || - sc->re_type == MACFG_82 || sc->re_type == MACFG_83) { - val = MP_RealReadPhyOcpRegWord(sc, 0xC416); - if (val != 0x0050) { - re_set_phy_mcu_patch_request(sc); - MP_RealWritePhyOcpRegWord(sc, 0xC416, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xC416, 0x0050); - re_clear_phy_mcu_patch_request(sc); - } - } -} - -static void re_disable_ocp_phy_power_saving(struct re_softc* sc) -{ - u_int16_t val; - - if (sc->re_type == MACFG_59 || sc->re_type == MACFG_60 || - sc->re_type == MACFG_62 || sc->re_type == MACFG_67 || - sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || - sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || - sc->re_type == MACFG_72 || sc->re_type == MACFG_73 || - sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || - sc->re_type == MACFG_76) { - val = MP_ReadPhyOcpRegWord(sc, 0x0C41, 0x13); - if (val != 0x0500) { - re_set_phy_mcu_patch_request(sc); - MP_WritePhyOcpRegWord(sc, 0x0C41, 0x13, 0x0000); - MP_WritePhyOcpRegWord(sc, 0x0C41, 0x13, 0x0500); - re_clear_phy_mcu_patch_request(sc); - } - } - else if (sc->re_type == MACFG_80 || sc->re_type == MACFG_81 || - sc->re_type == MACFG_82 || sc->re_type == MACFG_83) { - val = MP_RealReadPhyOcpRegWord(sc, 0xC416); - if (val != 0x0500) { - re_set_phy_mcu_patch_request(sc); - MP_RealWritePhyOcpRegWord(sc, 0xC416, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xC416, 0x0500); - re_clear_phy_mcu_patch_request(sc); - } - } -} - -void re_hw_d3_para(struct re_softc* sc) -{ - switch (sc->re_type) { - case MACFG_59: - case MACFG_60: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - re_disable_ocp_phy_power_saving(sc); - break; - } + if (sc->re_device_id == RT_DEVICEID_8136) + re_mac_ocp_write(sc, 0xFC38, 0x0033); + else + re_mac_ocp_write(sc, 0xFC38, 0x003F); } -static void -ClearAndSetPCIePhyBit( - struct re_softc* sc, - u_int8_t addr, - u_int16_t clearmask, - u_int16_t setmask -) +static void re_set_mac_mcu_8168h_3(struct re_softc *sc) { - u_int16_t EphyValue; + static const uint16_t mcu_patch_code_8168h_3[] = { + 0xE008, 0xE00A, 0xE00C, 0xE00E, 0xE010, 0xE03E, 0xE040, 0xE069, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC002, 0xB800, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC72B, 0x76E2, 0x49EE, 0xF1FD, 0x1E00, 0x9EE0, 0x1E1C, + 0x9EE2, 0x76E2, 0x49EE, 0xF1FE, 0xC621, 0x9EE0, 0x1E1D, 0x486F, 0x9EE2, + 0x76E2, 0x49EE, 0xF1FE, 0xC71A, 0x76E0, 0x48E8, 0x48E9, 0x48EA, 0x48EB, + 0x48EC, 0x9EE0, 0xC70D, 0xC60D, 0x9EF4, 0xC60C, 0x9EF6, 0xC70E, 0x76E0, + 0x4863, 0x9EE0, 0xB007, 0xC602, 0xBE00, 0x0ACC, 0xE000, 0x03BF, 0x07FF, + 0xDE24, 0x3200, 0xE096, 0xD438, 0xC602, 0xBE00, 0x0000, 0x8EE6, 0xC726, + 0x76E2, 0x49EE, 0xF1FD, 0x1E00, 0x8EE0, 0x1E1C, 0x8EE2, 0x76E2, 0x49EE, + 0xF1FE, 0xC61C, 0x8EE0, 0x1E1D, 0x486F, 0x8EE2, 0x76E2, 0x49EE, 0xF1FE, + 0xC715, 0x76E0, 0x48E8, 0x48E9, 0x48EA, 0x48EB, 0x48EC, 0x9EE0, 0xC708, + 0xC608, 0x9EF4, 0xC607, 0x9EF6, 0xC602, 0xBE00, 0x0ABE, 0xE000, 0x03BF, + 0x07FF, 0xDE24, 0x3200, 0xE096, 0xC602, 0xBE00, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6838, 0x0A17, 0x0613, 0x0D26 + }; - EphyValue = MP_ReadEPhyUshort(sc, addr); - EphyValue &= ~clearmask; - EphyValue |= setmask; - MP_WriteEPhyUshort(sc, addr, EphyValue); -} + re_disable_mcu_bps(sc); -static void -ClearPCIePhyBit( - struct re_softc* sc, - u_int8_t addr, - u_int16_t mask -) -{ - ClearAndSetPCIePhyBit(sc, - addr, - mask, - 0 - ); + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168h_3, ARRAY_SIZE(mcu_patch_code_8168h_3)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC30, 0x0ACA); + + re_mac_ocp_write(sc, 0xFC38, 0x0010); } -static void -SetPCIePhyBit( - struct re_softc* sc, - u_int8_t addr, - u_int16_t mask -) +static void re_set_mac_mcu_8168h_4(struct re_softc *sc) { - ClearAndSetPCIePhyBit(sc, - addr, - 0, - mask - ); + re_disable_mcu_bps(sc); } -static void -re_set_offset70f(struct re_softc* sc, u_int8_t setting) +static void re_set_mac_mcu_8168fp_1(struct re_softc *sc) { - //Set PCI configuration space offset 0x79 to setting - u_int32_t data32; + uint16_t breakPointEnabled = 0; + + re_disable_mcu_bps(sc); + + if(sc->HwPkgDet == 0x00 || sc->HwPkgDet == 0x0F) { + static const uint16_t mcu_patch_code_8168fp_1_1[] = { + 0xE00A, 0xE0C1, 0xE104, 0xE108, 0xE10D, 0xE112, 0xE11C, 0xE121, 0xE000, + 0xE0C8, 0xB400, 0xC1FE, 0x49E2, 0xF04C, 0x49EA, 0xF04A, 0x74E6, 0xC246, + 0x7542, 0x73EC, 0x1800, 0x49C0, 0xF10D, 0x49C1, 0xF10B, 0x49C2, 0xF109, + 0x49B0, 0xF107, 0x49B1, 0xF105, 0x7220, 0x49A2, 0xF102, 0xE002, 0x4800, + 0x49D0, 0xF10A, 0x49D1, 0xF108, 0x49D2, 0xF106, 0x49D3, 0xF104, 0x49DF, + 0xF102, 0xE00C, 0x4801, 0x72E4, 0x49AD, 0xF108, 0xC225, 0x6741, 0x48F0, + 0x8F41, 0x4870, 0x8F41, 0xC7CF, 0x49B5, 0xF01F, 0x49B2, 0xF00B, 0x4980, + 0xF003, 0x484E, 0x94E7, 0x4981, 0xF004, 0x485E, 0xC212, 0x9543, 0xE071, + 0x49B6, 0xF003, 0x49B3, 0xF10F, 0x4980, 0xF003, 0x484E, 0x94E7, 0x4981, + 0xF004, 0x485E, 0xC204, 0x9543, 0xE005, 0xE000, 0xE0FC, 0xE0FA, 0xE065, + 0x49B7, 0xF007, 0x4980, 0xF005, 0x1A38, 0x46D4, 0x1200, 0xF109, 0x4981, + 0xF055, 0x49C3, 0xF105, 0x1A30, 0x46D5, 0x1200, 0xF04F, 0x7220, 0x49A2, + 0xF130, 0x49C1, 0xF12E, 0x49B0, 0xF12C, 0xC2E6, 0x7240, 0x49A8, 0xF003, + 0x49D0, 0xF126, 0x49A9, 0xF003, 0x49D1, 0xF122, 0x49AA, 0xF003, 0x49D2, + 0xF11E, 0x49AB, 0xF003, 0x49DF, 0xF11A, 0x49AC, 0xF003, 0x49D3, 0xF116, + 0x4980, 0xF003, 0x49C7, 0xF105, 0x4981, 0xF02C, 0x49D7, 0xF02A, 0x49C0, + 0xF00C, 0xC721, 0x62F4, 0x49A0, 0xF008, 0x49A4, 0xF106, 0x4824, 0x8AF4, + 0xC71A, 0x1A40, 0x9AE0, 0x49B6, 0xF017, 0x200E, 0xC7B8, 0x72E0, 0x4710, + 0x92E1, 0xC70E, 0x77E0, 0x49F0, 0xF112, 0xC70B, 0x77E0, 0x27FE, 0x1AFA, + 0x4317, 0xC705, 0x9AE2, 0x1A11, 0x8AE0, 0xE008, 0xE41C, 0xC0AE, 0xD23A, + 0xC7A2, 0x74E6, 0x484F, 0x94E7, 0xC79E, 0x8CE6, 0x8BEC, 0xC29C, 0x8D42, + 0x7220, 0xB000, 0xC502, 0xBD00, 0x0932, 0xB400, 0xC240, 0xC340, 0x7060, + 0x498F, 0xF014, 0x488F, 0x9061, 0x744C, 0x49C3, 0xF004, 0x7562, 0x485E, + 0x9563, 0x7446, 0x49C3, 0xF106, 0x7562, 0x1C30, 0x46E5, 0x1200, 0xF004, + 0x7446, 0x484F, 0x9447, 0xC32A, 0x7466, 0x49C0, 0xF00F, 0x48C0, 0x9C66, + 0x7446, 0x4840, 0x4841, 0x4842, 0x9C46, 0x744C, 0x4840, 0x9C4C, 0x744A, + 0x484A, 0x9C4A, 0xE013, 0x498E, 0xF011, 0x488E, 0x9061, 0x744C, 0x49C3, + 0xF004, 0x7446, 0x484E, 0x9447, 0x7446, 0x1D38, 0x46EC, 0x1500, 0xF004, + 0x7446, 0x484F, 0x9447, 0xB000, 0xC502, 0xBD00, 0x074C, 0xE000, 0xE0FC, + 0xE0C0, 0x4830, 0x4837, 0xC502, 0xBD00, 0x0978, 0x63E2, 0x4830, 0x4837, + 0xC502, 0xBD00, 0x09FE, 0x73E2, 0x4830, 0x8BE2, 0xC302, 0xBB00, 0x0A12, + 0x73E2, 0x48B0, 0x48B3, 0x48B4, 0x48B5, 0x48B6, 0x48B7, 0x8BE2, 0xC302, + 0xBB00, 0x0A5A, 0x73E2, 0x4830, 0x8BE2, 0xC302, 0xBB00, 0x0A6C, 0x73E2, + 0x4830, 0x4837, 0xC502, 0xBD00, 0x0A86 + }; + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168fp_1_1, ARRAY_SIZE(mcu_patch_code_8168fp_1_1)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC28, 0x0890); + re_mac_ocp_write(sc, 0xFC2A, 0x0712); + re_mac_ocp_write(sc, 0xFC2C, 0x0974); + re_mac_ocp_write(sc, 0xFC2E, 0x09FC); + re_mac_ocp_write(sc, 0xFC30, 0x0A0E); + re_mac_ocp_write(sc, 0xFC32, 0x0A56); + re_mac_ocp_write(sc, 0xFC34, 0x0A68); + re_mac_ocp_write(sc, 0xFC36, 0x0A84); + + } else if (sc->HwPkgDet == 0x05 || sc->HwPkgDet == 0x06) { + static const uint16_t mcu_patch_code_8168fp_1_2[] = { + 0xE008, 0xE00A, 0xE031, 0xE033, 0xE035, 0xE144, 0xE166, 0xE168, 0xC502, + 0xBD00, 0x0000, 0xC725, 0x75E0, 0x48D0, 0x9DE0, 0xC722, 0x75E0, 0x1C78, + 0x416C, 0x1530, 0xF111, 0xC71D, 0x75F6, 0x49D1, 0xF00D, 0x75E0, 0x1C1F, + 0x416C, 0x1502, 0xF108, 0x75FA, 0x49D3, 0xF005, 0x75EC, 0x9DE4, 0x4853, + 0x9DFA, 0xC70B, 0x75E0, 0x4852, 0x4850, 0x9DE0, 0xC602, 0xBE00, 0x04B8, + 0xE420, 0xE000, 0xE0FC, 0xE43C, 0xDC00, 0xEB00, 0xC202, 0xBA00, 0x0000, + 0xC002, 0xB800, 0x0000, 0xB401, 0xB402, 0xB403, 0xB404, 0xB405, 0xB406, + 0xC44D, 0xC54D, 0x1867, 0xE8A2, 0x2318, 0x276E, 0x1601, 0xF106, 0x1A07, + 0xE861, 0xE86B, 0xE873, 0xE037, 0x231E, 0x276E, 0x1602, 0xF10B, 0x1A07, + 0xE858, 0xE862, 0xC247, 0xC344, 0xE8E3, 0xC73B, 0x66E0, 0xE8B5, 0xE029, + 0x231A, 0x276C, 0xC733, 0x9EE0, 0x1866, 0xE885, 0x251C, 0x120F, 0xF011, + 0x1209, 0xF011, 0x2014, 0x240E, 0x1000, 0xF007, 0x120C, 0xF00D, 0x1203, + 0xF00D, 0x1200, 0xF00D, 0x120C, 0xF00D, 0x1203, 0xF00D, 0x1A03, 0xE00C, + 0x1A07, 0xE00A, 0x1A00, 0xE008, 0x1A01, 0xE006, 0x1A02, 0xE004, 0x1A04, + 0xE002, 0x1A05, 0xE829, 0xE833, 0xB006, 0xB005, 0xB004, 0xB003, 0xB002, + 0xB001, 0x60C4, 0xC702, 0xBF00, 0x2786, 0xDD00, 0xD030, 0xE0C4, 0xE0F8, + 0xDC42, 0xD3F0, 0x0000, 0x0004, 0x0007, 0x0014, 0x0090, 0x1000, 0x0F00, + 0x1004, 0x1008, 0x3000, 0x3004, 0x3008, 0x4000, 0x7777, 0x8000, 0x8001, + 0x8008, 0x8003, 0x8004, 0xC000, 0xC004, 0xF004, 0xFFFF, 0xB406, 0xB407, + 0xC6E5, 0x77C0, 0x27F3, 0x23F3, 0x47FA, 0x9FC0, 0xB007, 0xB006, 0xFF80, + 0xB405, 0xB407, 0xC7D8, 0x75E0, 0x48D0, 0x9DE0, 0xB007, 0xB005, 0xFF80, + 0xB401, 0xC0EA, 0xC2DC, 0xC3D8, 0xE865, 0xC0D3, 0xC1E0, 0xC2E3, 0xE861, + 0xE817, 0xC0CD, 0xC2CF, 0xE85D, 0xC0C9, 0xC1D6, 0xC2DB, 0xE859, 0xE80F, + 0xC1C7, 0xC2CE, 0xE855, 0xC0C0, 0xC1D1, 0xC2D3, 0xE851, 0xE807, 0xC0BE, + 0xC2C2, 0xE84D, 0xE803, 0xB001, 0xFF80, 0xB402, 0xC2C6, 0xE859, 0x499F, + 0xF1FE, 0xB002, 0xFF80, 0xB402, 0xB403, 0xB407, 0xE821, 0x8882, 0x1980, + 0x8983, 0xE81D, 0x7180, 0x218B, 0x25BB, 0x1310, 0xF014, 0x1310, 0xFB03, + 0x1F20, 0x38FB, 0x3288, 0x434B, 0x2491, 0x430B, 0x1F0F, 0x38FB, 0x4313, + 0x2121, 0x4353, 0x2521, 0x418A, 0x6282, 0x2527, 0x212F, 0x418A, 0xB007, + 0xB003, 0xB002, 0xFF80, 0x6183, 0x2496, 0x1100, 0xF1FD, 0xFF80, 0x4800, + 0x4801, 0xC213, 0xC313, 0xE815, 0x4860, 0x8EE0, 0xC210, 0xC310, 0xE822, + 0x481E, 0xC20C, 0xC30C, 0xE80C, 0xC206, 0x7358, 0x483A, 0x9B58, 0xFF80, + 0xE8E0, 0xE000, 0x1008, 0x0F00, 0x800C, 0x0F00, 0xB407, 0xB406, 0xB403, + 0xC7F7, 0x98E0, 0x99E2, 0x9AE4, 0x21B2, 0x4831, 0x483F, 0x9BE6, 0x66E7, + 0x49E6, 0xF1FE, 0xB003, 0xB006, 0xB007, 0xFF80, 0xB407, 0xB406, 0xB403, + 0xC7E5, 0x9AE4, 0x21B2, 0x4831, 0x9BE6, 0x66E7, 0x49E6, 0xF1FE, 0x70E0, + 0x71E2, 0xB003, 0xB006, 0xB007, 0xFF80, 0x4882, 0xB406, 0xB405, 0xC71E, + 0x76E0, 0x1D78, 0x4175, 0x1630, 0xF10C, 0xC715, 0x76E0, 0x4861, 0x9EE0, + 0xC713, 0x1EFF, 0x9EE2, 0x75E0, 0x4850, 0x9DE0, 0xE005, 0xC70B, 0x76E0, + 0x4865, 0x9EE0, 0xB005, 0xB006, 0xC708, 0xC102, 0xB900, 0x279E, 0xEB16, + 0xEB00, 0xE43C, 0xDC00, 0xD3EC, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, + 0x0000 + }; + + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168fp_1_2, ARRAY_SIZE(mcu_patch_code_8168fp_1_2)); + + re_mac_ocp_write(sc, 0xFC26, 0x8000); + + re_mac_ocp_write(sc, 0xFC28, 0x0000); + re_mac_ocp_write(sc, 0xFC2A, 0x04b4); + re_mac_ocp_write(sc, 0xFC2C, 0x0000); + re_mac_ocp_write(sc, 0xFC2E, 0x0000); + re_mac_ocp_write(sc, 0xFC30, 0x0000); + re_mac_ocp_write(sc, 0xFC32, 0x279C); + re_mac_ocp_write(sc, 0xFC34, 0x0000); + re_mac_ocp_write(sc, 0xFC36, 0x0000); + } - data32 = MP_ReadPciEConfigSpace(sc, 0x870c); - data32 &= 0x00FFFFFF; - data32 |= (setting << 24); - MP_WritePciEConfigSpace(sc, 0x870c, data32); + if (sc->HwPkgDet == 0x00) + breakPointEnabled = 0x00FC; + else if (sc->HwPkgDet == 0x0F) + breakPointEnabled = 0x00FF; + else if (sc->HwPkgDet == 0x05 || sc->HwPkgDet == 0x06) + breakPointEnabled = 0x0022; + + re_mac_ocp_write(sc, 0xFC38, breakPointEnabled); } -static void -re_set_offset79(struct re_softc* sc, u_int8_t setting) +static void re_set_mac_mcu_8168fp_8116as_2(struct re_softc *sc) { - //Set PCI configuration space offset 0x79 to setting - u_int8_t data8; + static const uint16_t mcu_patch_code_8168fp_2[] = { + 0xE008, 0xE00A, 0xE00F, 0xE014, 0xE016, 0xE018, 0xE01A, 0xE01C, 0xC602, + 0xBE00, 0x2AB2, 0x1BC0, 0x46EB, 0x1BFE, 0xC102, 0xB900, 0x0B1A, 0x1BC0, + 0x46EB, 0x1B7E, 0xC102, 0xB900, 0x0BEA, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000 + }; - if (config_soc_lan) - return; + re_disable_mcu_bps(sc); - setting &= 0x70; - data8 = pci_read_config(sc->dev, 0x79, 1); - data8 &= ~0x70; - data8 |= setting; - pci_write_config(sc->dev, 0x79, data8, 1); -} + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168fp_2, ARRAY_SIZE(mcu_patch_code_8168fp_2)); -static void re_set_eee_lpi_timer(struct re_softc* sc) -{ - switch (sc->re_type) { - case MACFG_68: - case MACFG_69: - case MACFG_74: - case MACFG_75: - case MACFG_76: - MP_WriteMcuAccessRegWord(sc, RE_EEE_TXIDLE_TIMER_8168, sc->mtu + ETHER_HDR_LEN + 0x20); - break; - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - CSR_WRITE_2(sc, RE_EEE_TXIDLE_TIMER_8125, sc->mtu + ETHER_HDR_LEN + 0x20); - break; - default: - break; - } -} - -void re_hw_start_unlock(struct re_softc* sc) -{ - u_int32_t macver; - u_int8_t data8; - u_int16_t data16 = 0; - u_int32_t Data32; - - struct re_softc* ifp = sc; - - re_enable_cfg9346_write(sc); - - switch (sc->re_type) { - case MACFG_36: - case MACFG_37: - case MACFG_38: - case MACFG_39: - case MACFG_42: - case MACFG_43: - case MACFG_50: - case MACFG_51: - case MACFG_52: - case MACFG_53: - case MACFG_54: - case MACFG_55: - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - _re_enable_aspm_clkreq_lock(sc, 0); - re_enable_force_clkreq(sc, 0);; - break; - } + re_mac_ocp_write(sc, 0xFC26, 0x8000); - /*disable Link Down Power Saving(non-LDPS)*/ - /*CSR_WRITE_1(sc, RE_LDPS, 0x05);*/ - /*ldps= CSR_READ_1(sc, RE_LDPS);*/ + re_mac_ocp_write(sc, 0xFC28, 0x2AAC); + re_mac_ocp_write(sc, 0xFC2A, 0x0B14); + re_mac_ocp_write(sc, 0xFC2C, 0x0BE4); - re_set_eee_lpi_timer(sc); + re_mac_ocp_write(sc, 0xFC38, 0x0007); +} - CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); - if (interrupt_mitigation) - CSR_WRITE_2(sc, RE_IntrMitigate, 0x5f51); - else - CSR_WRITE_2(sc, RE_IntrMitigate, 0x0000); +static void _re_set_mac_mcu_8168fp_2(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8168fp_2[] = { + 0xE008, 0xE00A, 0xE00F, 0xE014, 0xE05F, 0xE064, 0xE066, 0xE068, 0xC602, + 0xBE00, 0x0000, 0x1BC0, 0x46EB, 0x1BFE, 0xC102, 0xB900, 0x0B1A, 0x1BC0, + 0x46EB, 0x1B7E, 0xC102, 0xB900, 0x0BEA, 0xB400, 0xB401, 0xB402, 0xB403, + 0xB404, 0xB405, 0xC03A, 0x7206, 0x49AE, 0xF1FE, 0xC137, 0x9904, 0xC136, + 0x9906, 0x7206, 0x49AE, 0xF1FE, 0x7200, 0x49A0, 0xF10B, 0xC52F, 0xC12E, + 0xC232, 0xC332, 0xE812, 0xC331, 0xE810, 0xC330, 0xE80E, 0xE018, 0xC126, + 0xC229, 0xC525, 0xC328, 0xE808, 0xC523, 0xC326, 0xE805, 0xC521, 0xC324, + 0xE802, 0xE00C, 0x740E, 0x49CE, 0xF1FE, 0x9908, 0x9D0A, 0x9A0C, 0x9B0E, + 0x740E, 0x49CE, 0xF1FE, 0xFF80, 0xB005, 0xB004, 0xB003, 0xB002, 0xB001, + 0xB000, 0xC604, 0xC002, 0xB800, 0x2A5E, 0xE000, 0xE8E0, 0xF128, 0x3DC2, + 0xFFFF, 0x10EC, 0x816A, 0x816D, 0x816C, 0xF000, 0x8002, 0x8004, 0x8007, + 0x48C1, 0x48C2, 0x9C46, 0xC402, 0xBC00, 0x07BC, 0xC602, 0xBE00, 0x0000, + 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000 + }; - CSR_WRITE_1(sc, RE_MTPS, 0x3f); + re_disable_mcu_bps(sc); - if (sc->re_device_id == RT_DEVICEID_8169 || sc->re_device_id == RT_DEVICEID_8169SC) { - //do nothing - } - else { - /* Set the initial TX configuration.*/ - CSR_WRITE_4(sc, RE_TXCFG, RE_TXCFG_CONFIG); - } - - macver = CSR_READ_4(sc, RE_TXCFG) & 0xFC800000; - if (macver == 0x00800000 || macver == 0x04000000 || macver == 0x10000000) { - CSR_WRITE_2(sc, RE_CPlusCmd, 0x0063 | ((sc->re_type == MACFG_3 && sc->re_8169_MacVersion == 1) ? 0x4008 : 0)); - } - else if (macver == 0x18000000 || macver == 0x98000000) { - CSR_WRITE_2(sc, RE_CPlusCmd, 0x0068); - CSR_WRITE_2(sc, RE_IntrMitigate, 0x0000); - } - else if (macver == 0x30000000) { - CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168fp_2, ARRAY_SIZE(mcu_patch_code_8168fp_2)); - if (sc->mtu > ETHERMTU) { - data8 = pci_read_config(sc->dev, 0x69, 1); - data8 &= ~0x70; - data8 |= 0x28; - pci_write_config(sc->dev, 0x69, data8, 1); - } - else { - data8 = pci_read_config(sc->dev, 0x69, 1); - data8 &= ~0x70; - data8 |= 0x58; - pci_write_config(sc->dev, 0x69, data8, 1); - } - } - else if (macver == 0x38000000) { - CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + re_mac_ocp_write(sc, 0xFC26, 0x8000); - if (sc->mtu > ETHERMTU) { - data8 = pci_read_config(sc->dev, 0x69, 1); - data8 &= ~0x70; - data8 |= 0x28; - pci_write_config(sc->dev, 0x69, data8, 1); - CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | BIT_0); - } - else { - data8 = pci_read_config(sc->dev, 0x69, 1); - data8 &= ~0x70; - data8 |= 0x58; - pci_write_config(sc->dev, 0x69, data8, 1); - CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~BIT_0); - } - } - else if (macver == 0x34000000 || macver == 0xB4000000) { - CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); - } - else if (macver == 0x34800000 || macver == 0x24800000) { - if (pci_read_config(sc->dev, 0x81, 1) == 1) { - CSR_WRITE_1(sc, RE_DBG_reg, 0x98); - CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | 0x80); - CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | 0x04); - pci_write_config(sc->dev, 0x81, 1, 1); - } + re_mac_ocp_write(sc, 0xFC28, 0x2AAC); + re_mac_ocp_write(sc, 0xFC2A, 0x0B14); + re_mac_ocp_write(sc, 0xFC2C, 0x0BE4); + re_mac_ocp_write(sc, 0xFC2E, 0x2A5C); + //re_mac_ocp_write(sc, 0xFC30, 0x07B0); - re_set_offset79(sc, 0x40); + if (true == re_check_dash_other_fun_present(sc)) + re_mac_ocp_write(sc, 0xFC38, 0x0006); + else + re_mac_ocp_write(sc, 0xFC38, 0x000E); +} - /*set configuration space offset 0x70f to 0x3f*/ - re_set_offset70f(sc, 0x3F); +static void re_set_mac_mcu_8168fp_2(struct re_softc *sc) +{ + if (sc->hw_hw_supp_serdes_phy_ver == 1) + re_set_mac_mcu_8168fp_8116as_2(sc); + else + _re_set_mac_mcu_8168fp_2(sc); +} - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); +static void re_set_mac_mcu_8168fp_3(struct re_softc *sc) +{ + static const uint16_t mcu_patch_code_8168fp_3[] = { + 0xE008, 0xE053, 0xE058, 0xE05A, 0xE05C, 0xE05E, 0xE060, 0xE062, 0xB400, + 0xB401, 0xB402, 0xB403, 0xB404, 0xB405, 0xC03A, 0x7206, 0x49AE, 0xF1FE, + 0xC137, 0x9904, 0xC136, 0x9906, 0x7206, 0x49AE, 0xF1FE, 0x7200, 0x49A0, + 0xF10B, 0xC52F, 0xC12E, 0xC232, 0xC332, 0xE812, 0xC331, 0xE810, 0xC330, + 0xE80E, 0xE018, 0xC126, 0xC229, 0xC525, 0xC328, 0xE808, 0xC523, 0xC326, + 0xE805, 0xC521, 0xC324, 0xE802, 0xE00C, 0x740E, 0x49CE, 0xF1FE, 0x9908, + 0x9D0A, 0x9A0C, 0x9B0E, 0x740E, 0x49CE, 0xF1FE, 0xFF80, 0xB005, 0xB004, + 0xB003, 0xB002, 0xB001, 0xB000, 0xC604, 0xC002, 0xB800, 0x2B16, 0xE000, + 0xE8E0, 0xF128, 0x3DC2, 0xFFFF, 0x10EC, 0x816A, 0x816D, 0x816C, 0xF000, + 0x8002, 0x8004, 0x8007, 0x48C1, 0x48C2, 0x9C46, 0xC402, 0xBC00, 0x07BC, + 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, + 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000 + }; - CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); - if (sc->re_type == MACFG_14) { - CSR_WRITE_1(sc, RE_CFG1, 0x0f); + re_disable_mcu_bps(sc); - MP_WriteEPhyUshort(sc, 0x03, 0xC2F9); - } - else if (sc->re_type == MACFG_15) { - CSR_WRITE_1(sc, RE_CFG1, 0x0f); + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8168fp_3, ARRAY_SIZE(mcu_patch_code_8168fp_3)); - MP_WriteEPhyUshort(sc, 0x01, 0x6FE5); - MP_WriteEPhyUshort(sc, 0x03, 0x07D9); - } - else if (sc->re_type == MACFG_17) { - MP_WriteEPhyUshort(sc, 0x06, 0xAF35); - } - else if (sc->re_type == MACFG_18) { - CSR_WRITE_1(sc, 0xF5, CSR_READ_1(sc, 0xF5) | 0x04); - MP_WriteEPhyUshort(sc, 0x19, 0xEC90); - MP_WriteEPhyUshort(sc, 0x01, 0x6FE5); - MP_WriteEPhyUshort(sc, 0x03, 0x05D9); - MP_WriteEPhyUshort(sc, 0x06, 0xAF35); - } - else if (sc->re_type == MACFG_19) { - if (pci_read_config(sc->dev, 0x80, 1) & 3) { - MP_WriteEPhyUshort(sc, 0x02, 0x011F); - } - CSR_WRITE_1(sc, 0xF4, CSR_READ_1(sc, 0xF4) | 0x08); - CSR_WRITE_1(sc, 0xF5, CSR_READ_1(sc, 0xF5) | 0x04); - MP_WriteEPhyUshort(sc, 0x19, 0xEC90); - MP_WriteEPhyUshort(sc, 0x01, 0x6FE5); - MP_WriteEPhyUshort(sc, 0x03, 0x05D9); - MP_WriteEPhyUshort(sc, 0x06, 0xAF35); - } - } - else if (macver == 0x3C000000) { - //disable clock request. - pci_write_config(sc->dev, 0x81, 0, 1); + re_mac_ocp_write(sc, 0xFC26, 0x8000); - /*set configuration space offset 0x70f to 0x27*/ - re_set_offset70f(sc, 0x27); + re_mac_ocp_write(sc, 0xFC28, 0x2B14); + //re_mac_ocp_write(sc, 0xFC2A, 0x07B0); - CSR_WRITE_1(sc, RE_CFG1, CSR_READ_1(sc, RE_CFG1) | 0x10); - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + if (true == re_check_dash_other_fun_present(sc)) + re_mac_ocp_write(sc, 0xFC38, 0x0000); + else + re_mac_ocp_write(sc, 0xFC38, 0x0001); +} - CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); - if (sc->re_type == MACFG_24) { - /*set mac register offset 0xd1 to 0xf8*/ - CSR_WRITE_1(sc, RE_DBG_reg, 0xF8); +static void re_set_mac_mcu_8168fp_4(struct re_softc *sc) +{ + re_disable_mcu_bps(sc); +} - data16 = MP_ReadEPhyUshort(sc, 0x02) & ~0x1800; - data16 |= 0x1000; - MP_WriteEPhyUshort(sc, 0x02, data16); +static void re_set_mac_mcu_8125a_1(struct re_softc *sc) +{ + re_disable_mcu_bps(sc); +} - data16 = MP_ReadEPhyUshort(sc, 0x03) | 0x0002; - MP_WriteEPhyUshort(sc, 0x03, data16); +static void re_set_mac_mcu_8125a_2(struct re_softc *sc) +{ + static const u_int16_t mcu_patch_code_8125a_2[] = { + 0xE010, 0xE012, 0xE022, 0xE024, 0xE029, 0xE02B, 0xE094, 0xE09D, 0xE09F, + 0xE0AA, 0xE0B5, 0xE0C6, 0xE0CC, 0xE0D1, 0xE0D6, 0xE0D8, 0xC602, 0xBE00, + 0x0000, 0xC60F, 0x73C4, 0x49B3, 0xF106, 0x73C2, 0xC608, 0xB406, 0xC609, + 0xFF80, 0xC605, 0xB406, 0xC605, 0xFF80, 0x0544, 0x0568, 0xE906, 0xCDE8, + 0xC602, 0xBE00, 0x0000, 0x48C1, 0x48C2, 0x9C46, 0xC402, 0xBC00, 0x0A12, + 0xC602, 0xBE00, 0x0EBA, 0x1501, 0xF02A, 0x1500, 0xF15D, 0xC661, 0x75C8, + 0x49D5, 0xF00A, 0x49D6, 0xF008, 0x49D7, 0xF006, 0x49D8, 0xF004, 0x75D2, + 0x49D9, 0xF150, 0xC553, 0x77A0, 0x75C8, 0x4855, 0x4856, 0x4857, 0x4858, + 0x48DA, 0x48DB, 0x49FE, 0xF002, 0x485A, 0x49FF, 0xF002, 0x485B, 0x9DC8, + 0x75D2, 0x4859, 0x9DD2, 0xC643, 0x75C0, 0x49D4, 0xF033, 0x49D0, 0xF137, + 0xE030, 0xC63A, 0x75C8, 0x49D5, 0xF00E, 0x49D6, 0xF00C, 0x49D7, 0xF00A, + 0x49D8, 0xF008, 0x75D2, 0x49D9, 0xF005, 0xC62E, 0x75C0, 0x49D7, 0xF125, + 0xC528, 0x77A0, 0xC627, 0x75C8, 0x4855, 0x4856, 0x4857, 0x4858, 0x48DA, + 0x48DB, 0x49FE, 0xF002, 0x485A, 0x49FF, 0xF002, 0x485B, 0x9DC8, 0x75D2, + 0x4859, 0x9DD2, 0xC616, 0x75C0, 0x4857, 0x9DC0, 0xC613, 0x75C0, 0x49DA, + 0xF003, 0x49D0, 0xF107, 0xC60B, 0xC50E, 0x48D9, 0x9DC0, 0x4859, 0x9DC0, + 0xC608, 0xC702, 0xBF00, 0x3AE0, 0xE860, 0xB400, 0xB5D4, 0xE908, 0xE86C, + 0x1200, 0xC409, 0x6780, 0x48F1, 0x8F80, 0xC404, 0xC602, 0xBE00, 0x10AA, + 0xC010, 0xEA7C, 0xC602, 0xBE00, 0x0000, 0x740A, 0x4846, 0x4847, 0x9C0A, + 0xC607, 0x74C0, 0x48C6, 0x9CC0, 0xC602, 0xBE00, 0x13FE, 0xE054, 0x72CA, + 0x4826, 0x4827, 0x9ACA, 0xC607, 0x72C0, 0x48A6, 0x9AC0, 0xC602, 0xBE00, + 0x07DC, 0xE054, 0xC60F, 0x74C4, 0x49CC, 0xF109, 0xC60C, 0x74CA, 0x48C7, + 0x9CCA, 0xC609, 0x74C0, 0x4846, 0x9CC0, 0xC602, 0xBE00, 0x2480, 0xE092, + 0xE0C0, 0xE054, 0x7420, 0x48C0, 0x9C20, 0x7444, 0xC602, 0xBE00, 0x12F8, + 0x1BFF, 0x46EB, 0x1BFF, 0xC102, 0xB900, 0x0D5A, 0x1BFF, 0x46EB, 0x1BFF, + 0xC102, 0xB900, 0x0E2A, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6486, + 0x0B15, 0x090E, 0x1139 + }; - data16 = MP_ReadEPhyUshort(sc, 0x06) & ~0x0080; - MP_WriteEPhyUshort(sc, 0x06, data16); + re_disable_mcu_bps(sc); - if (sc->mtu > ETHERMTU) { - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); //Jumbo_en0 - CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | (1 << 1)); //Jumbo_en1 + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8125a_2, ARRAY_SIZE(mcu_patch_code_8125a_2)); - re_set_offset79(sc, 0x20); - ifp->if_capenable &= ~IFCAP_HWCSUM; - CSR_WRITE_2(sc, RE_CPlusCmd, CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); - ifp->if_hwassist &= ~RE_CSUM_FEATURES; - } - else { - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); //Jumbo_en0 - CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~(1 << 1)); //Jumbo_en1 - re_set_offset79(sc, 0x40); - if (sc->re_tx_cstag) { - ifp->if_capenable |= IFCAP_TXCSUM; - if ((sc->re_type == MACFG_24) || (sc->re_type == MACFG_25) || (sc->re_type == MACFG_26)) - ifp->if_hwassist |= CSUM_TCP | CSUM_UDP; - else - ifp->if_hwassist |= RE_CSUM_FEATURES; - } - if (sc->re_rx_cstag) { - ifp->if_capenable |= IFCAP_RXCSUM; - CSR_WRITE_2(sc, RE_CPlusCmd, CSR_READ_2(sc, RE_CPlusCmd) | RL_RxChkSum); - } - } - } - else if (sc->re_type == MACFG_25) { - data16 = MP_ReadEPhyUshort(sc, 0x01) | 0x0001; - MP_WriteEPhyUshort(sc, 0x01, data16); + re_mac_ocp_write(sc, 0xFC26, 0x8000); - data16 = MP_ReadEPhyUshort(sc, 0x03) & ~0x0620; - data16 |= 0x0220; - MP_WriteEPhyUshort(sc, 0x03, data16); + re_mac_ocp_write(sc, 0xFC2A, 0x0540); + re_mac_ocp_write(sc, 0xFC2E, 0x0A06); + re_mac_ocp_write(sc, 0xFC30, 0x0EB8); + re_mac_ocp_write(sc, 0xFC32, 0x3A5C); + re_mac_ocp_write(sc, 0xFC34, 0x10A8); + re_mac_ocp_write(sc, 0xFC40, 0x0D54); + re_mac_ocp_write(sc, 0xFC42, 0x0E24); - if (sc->mtu > ETHERMTU) { - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); //Jumbo_en0 - CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | (1 << 1)); //Jumbo_en1 + re_mac_ocp_write(sc, 0xFC48, 0x307A); +} - re_set_offset79(sc, 0x20); - ifp->if_capenable &= ~IFCAP_HWCSUM; - CSR_WRITE_2(sc, RE_CPlusCmd, CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); - ifp->if_hwassist &= ~RE_CSUM_FEATURES; - } - else { - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); //Jumbo_en0 - CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~(1 << 1)); //Jumbo_en1 - re_set_offset79(sc, 0x40); - if (sc->re_tx_cstag) { - ifp->if_capenable |= IFCAP_TXCSUM; - if ((sc->re_type == MACFG_24) || (sc->re_type == MACFG_25) || (sc->re_type == MACFG_26)) - ifp->if_hwassist |= CSUM_TCP | CSUM_UDP; - else - ifp->if_hwassist |= RE_CSUM_FEATURES; - } - if (sc->re_rx_cstag) { - ifp->if_capenable |= IFCAP_RXCSUM; - CSR_WRITE_2(sc, RE_CPlusCmd, CSR_READ_2(sc, RE_CPlusCmd) | RL_RxChkSum); - } - } - } - else if (sc->re_type == MACFG_26) { - if (sc->mtu > ETHERMTU) { - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); //Jumbo_en0 - CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | (1 << 1)); //Jumbo_en1 +static void re_set_mac_mcu_8125b_1(struct re_softc *sc) +{ + re_disable_mcu_bps(sc); +} - re_set_offset79(sc, 0x20); - ifp->if_capenable &= ~IFCAP_HWCSUM; - CSR_WRITE_2(sc, RE_CPlusCmd, CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); - ifp->if_hwassist &= ~RE_CSUM_FEATURES; - } - else { - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); //Jumbo_en0 - CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~(1 << 1)); //Jumbo_en1 - re_set_offset79(sc, 0x40); - if (sc->re_tx_cstag) { - ifp->if_capenable |= IFCAP_TXCSUM; - if ((sc->re_type == MACFG_24) || (sc->re_type == MACFG_25) || (sc->re_type == MACFG_26)) - ifp->if_hwassist |= CSUM_TCP | CSUM_UDP; - else - ifp->if_hwassist |= RE_CSUM_FEATURES; - } - if (sc->re_rx_cstag) { - ifp->if_capenable |= IFCAP_RXCSUM; - CSR_WRITE_2(sc, RE_CPlusCmd, CSR_READ_2(sc, RE_CPlusCmd) | RL_RxChkSum); - } - } - } - } - else if (macver == 0x3C800000) { - //disable clock request. - pci_write_config(sc->dev, 0x81, 0x00, 1); +static void re_set_mac_mcu_8125b_2(struct re_softc *sc) +{ + static const u_int16_t mcu_patch_code_8125b_2[] = { + 0xE010, 0xE01B, 0xE026, 0xE037, 0xE03D, 0xE057, 0xE05B, 0xE060, 0xE062, + 0xE064, 0xE066, 0xE068, 0xE06A, 0xE06C, 0xE06E, 0xE070, 0x740A, 0x4846, + 0x4847, 0x9C0A, 0xC607, 0x74C0, 0x48C6, 0x9CC0, 0xC602, 0xBE00, 0x13F0, + 0xE054, 0x72CA, 0x4826, 0x4827, 0x9ACA, 0xC607, 0x72C0, 0x48A6, 0x9AC0, + 0xC602, 0xBE00, 0x081C, 0xE054, 0xC60F, 0x74C4, 0x49CC, 0xF109, 0xC60C, + 0x74CA, 0x48C7, 0x9CCA, 0xC609, 0x74C0, 0x4846, 0x9CC0, 0xC602, 0xBE00, + 0x2494, 0xE092, 0xE0C0, 0xE054, 0x7420, 0x48C0, 0x9C20, 0x7444, 0xC602, + 0xBE00, 0x12DC, 0x733A, 0x21B5, 0x25BC, 0x1304, 0xF111, 0x1B12, 0x1D2A, + 0x3168, 0x3ADA, 0x31AB, 0x1A00, 0x9AC0, 0x1300, 0xF1FB, 0x7620, 0x236E, + 0x276F, 0x1A3C, 0x22A1, 0x41B5, 0x9EE2, 0x76E4, 0x486F, 0x9EE4, 0xC602, + 0xBE00, 0x4A26, 0x733A, 0x49BB, 0xC602, 0xBE00, 0x47A2, 0x48C1, 0x48C2, + 0x9C46, 0xC402, 0xBC00, 0x0A52, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, + 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, + 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, + 0x0000, 0xC602, 0xBE00, 0x0000 + }; - /*set configuration space offset 0x70f to 0x27*/ - re_set_offset70f(sc, 0x27); + re_disable_mcu_bps(sc); - re_eri_write(sc, 0x1EC, 1, 0x07, ERIAR_ASF); + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8125b_2, ARRAY_SIZE(mcu_patch_code_8125b_2)); - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); - CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); - if (sc->re_type == MACFG_28) - CSR_WRITE_1(sc, 0xD1, 0x20); + re_mac_ocp_write(sc, 0xFC26, 0x8000); - if (sc->mtu > ETHERMTU) { - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); //Jumbo_en0 - CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | (1 << 1)); //Jumbo_en1 + re_mac_ocp_write(sc, 0xFC28, 0x13E6); + re_mac_ocp_write(sc, 0xFC2A, 0x0812); + re_mac_ocp_write(sc, 0xFC2C, 0x248C); + re_mac_ocp_write(sc, 0xFC2E, 0x12DA); + re_mac_ocp_write(sc, 0xFC30, 0x4A20); + re_mac_ocp_write(sc, 0xFC32, 0x47A0); + //re_mac_ocp_write(sc, 0xFC34, 0x0A46); - re_set_offset79(sc, 0x20); - ifp->if_capenable &= ~IFCAP_HWCSUM; - CSR_WRITE_2(sc, RE_CPlusCmd, CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); - ifp->if_hwassist &= ~RE_CSUM_FEATURES; - } - else { - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); //Jumbo_en0 - CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~(1 << 1)); //Jumbo_en1 - re_set_offset79(sc, 0x40); - if (sc->re_tx_cstag) { - ifp->if_capenable |= IFCAP_TXCSUM; - ifp->if_hwassist |= RE_CSUM_FEATURES; - } - if (sc->re_rx_cstag) { - ifp->if_capenable |= IFCAP_RXCSUM; - CSR_WRITE_2(sc, RE_CPlusCmd, CSR_READ_2(sc, RE_CPlusCmd) | RL_RxChkSum); - } - } - } - else if (macver == 0x28000000) { - //disable clock request. - pci_write_config(sc->dev, 0x81, 0x00, 1); + re_mac_ocp_write(sc, 0xFC48, 0x003F); +} - /*set configuration space offset 0x70f to 0x13*/ - re_set_offset70f(sc, 0x27); +static void re_set_mac_mcu_8125bp_1(struct re_softc *sc) +{ + static const u_int16_t mcu_patch_code_8125bp_1[] = { + 0xE003, 0xE007, 0xE01A, 0x1BC8, 0x46EB, 0xC302, 0xBB00, 0x0F14, 0xC211, + 0x400A, 0xF00A, 0xC20F, 0x400A, 0xF007, 0x73A4, 0xC20C, 0x400A, 0xF102, + 0x48B0, 0x9B20, 0x1B00, 0x9BA0, 0xC602, 0xBE00, 0x4364, 0xE6E0, 0xE6E2, + 0xC01C, 0xB406, 0x1000, 0xF016, 0xC61F, 0x400E, 0xF012, 0x218E, 0x25BE, + 0x1300, 0xF007, 0x7340, 0xC618, 0x400E, 0xF102, 0x48B0, 0x8320, 0xB400, + 0x2402, 0x1000, 0xF003, 0x7342, 0x8322, 0xB000, 0xE007, 0x7322, 0x9B42, + 0x7320, 0x9B40, 0x0300, 0x0300, 0xB006, 0xC302, 0xBB00, 0x413E, 0xE6E0, + 0xC01C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x1171, 0x0B17, 0x0816, 0x1108 + }; - CSR_WRITE_1(sc, RE_TDFNR, 0x8); + re_disable_mcu_bps(sc); - CSR_WRITE_1(sc, 0xD1, CSR_READ_1(sc, 0xD1) | 0x02); + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8125bp_1, ARRAY_SIZE(mcu_patch_code_8125bp_1)); - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); - CSR_WRITE_1(sc, RE_DBG_reg, CSR_READ_1(sc, RE_DBG_reg) | 0x82); + re_mac_ocp_write(sc, 0xFC26, 0x8000); - CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); + re_mac_ocp_write(sc, 0xFC28, 0x0f10); + re_mac_ocp_write(sc, 0xFC2A, 0x435c); + re_mac_ocp_write(sc, 0xFC2C, 0x4112); - if (sc->mtu > ETHERMTU) { - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); //Jumbo_en0 - CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | (1 << 1)); //Jumbo_en1 + re_mac_ocp_write(sc, 0xFC48, 0x0007); +} - re_set_offset79(sc, 0x20); - ifp->if_capenable &= ~IFCAP_HWCSUM; - CSR_WRITE_2(sc, RE_CPlusCmd, CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); - ifp->if_hwassist &= ~RE_CSUM_FEATURES; - } - else { - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); //Jumbo_en0 - CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~(1 << 1)); //Jumbo_en1 - re_set_offset79(sc, 0x40); - if (sc->re_tx_cstag) { - ifp->if_capenable |= IFCAP_TXCSUM; - ifp->if_hwassist |= RE_CSUM_FEATURES; - } - if (sc->re_rx_cstag) { - ifp->if_capenable |= IFCAP_RXCSUM; - CSR_WRITE_2(sc, RE_CPlusCmd, CSR_READ_2(sc, RE_CPlusCmd) | RL_RxChkSum); - } - } - - if (sc->re_type == MACFG_31) { - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~(1 << 4)); - - MP_WriteEPhyUshort(sc, 0x01, 0x7C7F); - MP_WriteEPhyUshort(sc, 0x02, 0x011F); - MP_WriteEPhyUshort(sc, 0x06, 0xB271); - MP_WriteEPhyUshort(sc, 0x07, 0xCE00); - } - else if (sc->re_type == MACFG_32) { - MP_WriteEPhyUshort(sc, 0x01, 0x7C7D); - MP_WriteEPhyUshort(sc, 0x02, 0x091F); - MP_WriteEPhyUshort(sc, 0x03, 0xC5BA); - MP_WriteEPhyUshort(sc, 0x06, 0xB279); - MP_WriteEPhyUshort(sc, 0x07, 0xAF00); - MP_WriteEPhyUshort(sc, 0x1E, 0xB8EB); - } - else if (sc->re_type == MACFG_33) { - CSR_WRITE_1(sc, RE_CFG1, CSR_READ_1(sc, RE_CFG1) | 0x10); - - MP_WriteEPhyUshort(sc, 0x01, 0x6C7F); - MP_WriteEPhyUshort(sc, 0x02, 0x011F); - ClearAndSetPCIePhyBit(sc, - 0x03, - 0xFFF0, - 0x01B0 - ); - MP_WriteEPhyUshort(sc, 0x1A, 0x0546); - MP_WriteEPhyUshort(sc, 0x1C, 0x80C4); - MP_WriteEPhyUshort(sc, 0x1D, 0x78E5); - MP_WriteEPhyUshort(sc, 0x0A, 0x8100); - } - } - else if (macver == 0x28800000) { - /* disable clock request. */ - pci_write_config(sc->dev, 0x81, 0x00, 1); - - /*set configuration space offset 0x70f to 0x17*/ - re_set_offset70f(sc, 0x27); - - CSR_WRITE_1(sc, RE_TDFNR, 0x8); - if (sc->re_dash && - (sc->re_type == MACFG_63 || sc->re_type == MACFG_64)) - CSR_WRITE_1(sc, RE_TDFNR, 0x1); - - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); - CSR_WRITE_1(sc, RE_DBG_reg, CSR_READ_1(sc, RE_DBG_reg) | 0x82); - - CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); - - if (sc->mtu > ETHERMTU) { - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); //Jumbo_en0 - CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | (1 << 1)); //Jumbo_en1 - - re_set_offset79(sc, 0x20); - ifp->if_capenable &= ~IFCAP_HWCSUM; - CSR_WRITE_2(sc, RE_CPlusCmd, CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); - ifp->if_hwassist &= ~RE_CSUM_FEATURES; - } - else { - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); //Jumbo_en0 - CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~(1 << 1)); //Jumbo_en1 - re_set_offset79(sc, 0x40); - if (sc->re_tx_cstag) { - ifp->if_capenable |= IFCAP_TXCSUM; - ifp->if_hwassist |= RE_CSUM_FEATURES; - } - if (sc->re_rx_cstag) { - ifp->if_capenable |= IFCAP_RXCSUM; - CSR_WRITE_2(sc, RE_CPlusCmd, CSR_READ_2(sc, RE_CPlusCmd) | RL_RxChkSum); - } - } - - if (sc->re_type == MACFG_65 || sc->re_type == MACFG_66) { - SetPCIePhyBit(sc, 0x0B, (BIT_3 | BIT_6)); - - ClearAndSetPCIePhyBit(sc, - 0x19, - BIT_5, - (BIT_4 | BIT_6) - ); +static void re_set_mac_mcu_8125bp_2(struct re_softc *sc) +{ + static const u_int16_t mcu_patch_code_8125bp_2[] = { + 0xE010, 0xE033, 0xE046, 0xE04A, 0xE04C, 0xE04E, 0xE050, 0xE052, 0xE054, + 0xE056, 0xE058, 0xE05A, 0xE05C, 0xE05E, 0xE060, 0xE062, 0xB406, 0x1000, + 0xF016, 0xC61F, 0x400E, 0xF012, 0x218E, 0x25BE, 0x1300, 0xF007, 0x7340, + 0xC618, 0x400E, 0xF102, 0x48B0, 0x8320, 0xB400, 0x2402, 0x1000, 0xF003, + 0x7342, 0x8322, 0xB000, 0xE007, 0x7322, 0x9B42, 0x7320, 0x9B40, 0x0300, + 0x0300, 0xB006, 0xC302, 0xBB00, 0x4168, 0xE6E0, 0xC01C, 0xC211, 0x400A, + 0xF00A, 0xC20F, 0x400A, 0xF007, 0x73A4, 0xC20C, 0x400A, 0xF102, 0x48B0, + 0x9B20, 0x1B00, 0x9BA0, 0xC602, 0xBE00, 0x4392, 0xE6E0, 0xE6E2, 0xC01C, + 0x4166, 0x9CF6, 0xC002, 0xB800, 0x143C, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC102, + 0xB900, 0x0000, 0xC002, 0xB800, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1171, + 0x0B18, 0x030D, 0x0A2A + }; - ClearAndSetPCIePhyBit(sc, - 0x0C, - BIT_8, - BIT_5 - ); + re_disable_mcu_bps(sc); - ClearPCIePhyBit(sc, 0x10, (BIT_2)); - } - } - else if (macver == 0x2C000000) { - /* disable clock request. */ - pci_write_config(sc->dev, 0x81, 0x00, 1); + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8125bp_2, ARRAY_SIZE(mcu_patch_code_8125bp_2)); - /*set configuration space offset 0x70f to 0x20*/ - re_set_offset70f(sc, 0x27); + re_mac_ocp_write(sc, 0xFC26, 0x8000); - CSR_WRITE_1(sc, 0xF3, CSR_READ_1(sc, 0xF3) | 0x20); - CSR_WRITE_1(sc, 0xF3, CSR_READ_1(sc, 0xF3) & ~0x20); + re_mac_ocp_write(sc, 0xFC28, 0x413C); + re_mac_ocp_write(sc, 0xFC2A, 0x438A); + re_mac_ocp_write(sc, 0xFC2C, 0x143A); - CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | 0xC0); - CSR_WRITE_1(sc, 0xF1, CSR_READ_1(sc, 0xF1) | 0x73); - CSR_WRITE_1(sc, RE_CFG5, (CSR_READ_1(sc, RE_CFG5) & ~0x08)); - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + re_mac_ocp_write(sc, 0xFC48, 0x0007); +} - CSR_WRITE_1(sc, RE_TDFNR, 0x8); +static void re_set_mac_mcu_8125d_1(struct re_softc *sc) +{ + static const u_int16_t mcu_patch_code_8125d_1[] = { + 0xE002, 0xE006, 0x4166, 0x9CF6, 0xC002, 0xB800, 0x14A4, 0xC102, 0xB900, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6938, + 0x0A18, 0x0217, 0x0D2A + }; - if (sc->re_type == MACFG_36 || sc->re_type == MACFG_37) { - /* set EPHY registers */ - data16 = MP_ReadEPhyUshort(sc, 0x00) & ~0x0200; - data16 |= 0x0100; - MP_WriteEPhyUshort(sc, 0x00, data16); + re_disable_mcu_bps(sc); - data16 = MP_ReadEPhyUshort(sc, 0x00); - data16 |= 0x0004; - MP_WriteEPhyUshort(sc, 0x00, data16); + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8125d_1, ARRAY_SIZE(mcu_patch_code_8125d_1)); - data16 = MP_ReadEPhyUshort(sc, 0x06) & ~0x0002; - data16 |= 0x0001; - MP_WriteEPhyUshort(sc, 0x06, data16); + re_mac_ocp_write(sc, 0xFC26, 0x8000); - data16 = MP_ReadEPhyUshort(sc, 0x06); - data16 |= 0x0030; - MP_WriteEPhyUshort(sc, 0x06, data16); + re_mac_ocp_write(sc, 0xFC28, 0x14A2); - data16 = MP_ReadEPhyUshort(sc, 0x07); - data16 |= 0x2000; - MP_WriteEPhyUshort(sc, 0x07, data16); + re_mac_ocp_write(sc, 0xFC48, 0x0001); +} - data16 = MP_ReadEPhyUshort(sc, 0x00); - data16 |= 0x0020; - MP_WriteEPhyUshort(sc, 0x00, data16); +static void re_set_mac_mcu_8125d_2(struct re_softc *sc) +{ + re_disable_mcu_bps(sc); +} - data16 = MP_ReadEPhyUshort(sc, 0x03) & ~0x5800; - data16 |= 0x2000; - MP_WriteEPhyUshort(sc, 0x03, data16); +static void re_set_mac_mcu_8126a_1(struct re_softc *sc) +{ + static const u_int16_t mcu_patch_code_8126a_1[] = { + 0xE010, 0xE019, 0xE01B, 0xE01D, 0xE01F, 0xE021, 0xE023, 0xE025, 0xE027, + 0xE029, 0xE02B, 0xE02D, 0xE02F, 0xE031, 0xE033, 0xE035, 0x48C0, 0x9C66, + 0x7446, 0x4840, 0x48C1, 0x48C2, 0x9C46, 0xC402, 0xBC00, 0x0AD6, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, + 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000 + }; - data16 = MP_ReadEPhyUshort(sc, 0x03); - data16 |= 0x0001; - MP_WriteEPhyUshort(sc, 0x03, data16); + re_disable_mcu_bps(sc); - data16 = MP_ReadEPhyUshort(sc, 0x01) & ~0x0800; - data16 |= 0x1000; - MP_WriteEPhyUshort(sc, 0x01, data16); + re_write_mac_mcu_ram_code(sc, mcu_patch_code_8126a_1, ARRAY_SIZE(mcu_patch_code_8126a_1)); - data16 = MP_ReadEPhyUshort(sc, 0x07); - data16 |= 0x4000; - MP_WriteEPhyUshort(sc, 0x07, data16); + re_mac_ocp_write(sc, 0xFC26, 0x8000); - data16 = MP_ReadEPhyUshort(sc, 0x1E); - data16 |= 0x2000; - MP_WriteEPhyUshort(sc, 0x1E, data16); + re_mac_ocp_write(sc, 0xFC28, 0x0AAA); - MP_WriteEPhyUshort(sc, 0x19, 0xFE6C); + re_mac_ocp_write(sc, 0xFC48, 0x0001); +} - data16 = MP_ReadEPhyUshort(sc, 0x0A); - data16 |= 0x0040; - MP_WriteEPhyUshort(sc, 0x0A, data16); +static void re_set_mac_mcu_8126a_2(struct re_softc *sc) +{ + re_disable_mcu_bps(sc); +} - if (sc->mtu > ETHERMTU) { - CSR_WRITE_1(sc, RE_MTPS, 0x24); - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); - CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | 0x01); - re_set_offset79(sc, 0x20); - ifp->if_capenable &= ~IFCAP_HWCSUM; - CSR_WRITE_2(sc, RE_CPlusCmd, CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); - ifp->if_hwassist &= ~RE_CSUM_FEATURES; - } - else { - CSR_WRITE_1(sc, RE_MTPS, 0x0c); - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); - CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~0x01); - re_set_offset79(sc, 0x40); +static void re_set_mac_mcu_8126a_3(struct re_softc *sc) +{ + re_disable_mcu_bps(sc); +} - if (sc->re_tx_cstag) { - ifp->if_capenable |= IFCAP_TXCSUM; - ifp->if_hwassist |= RE_CSUM_FEATURES; - } - if (sc->re_rx_cstag) { - ifp->if_capenable |= IFCAP_RXCSUM; - CSR_WRITE_2(sc, RE_CPlusCmd, CSR_READ_2(sc, RE_CPlusCmd) | RL_RxChkSum); - } - } +static void re_hw_mac_mcu_config(struct re_softc *sc) +{ + switch(sc->re_type) { + case MACFG_56: + re_set_mac_mcu_8168g_1(sc); + break; + case MACFG_58: + re_set_mac_mcu_8168gu_1(sc); + break; + case MACFG_59: + re_set_mac_mcu_8168gu_2(sc); + break; + case MACFG_60: + re_set_mac_mcu_8411b_1(sc); + break; + case MACFG_62: + re_set_mac_mcu_8168ep_1(sc); + break; + case MACFG_67: + re_set_mac_mcu_8168ep_2(sc); + break; + case MACFG_68: + re_set_mac_mcu_8168h_1(sc); + break; + case MACFG_69: + case MACFG_76: + re_set_mac_mcu_8168h_2(sc); + break; + case MACFG_70: + re_set_mac_mcu_8168fp_1(sc); + break; + case MACFG_71: + re_set_mac_mcu_8168fp_2(sc); + break; + case MACFG_72: + re_set_mac_mcu_8168fp_3(sc); + break; + case MACFG_73: + re_set_mac_mcu_8168fp_4(sc); + break; + case MACFG_74: + re_set_mac_mcu_8168h_3(sc); + break; + case MACFG_75: + re_set_mac_mcu_8168h_4(sc); + break; + case MACFG_80: + re_set_mac_mcu_8125a_1(sc); + break; + case MACFG_81: + re_set_mac_mcu_8125a_2(sc); + break; + case MACFG_82: + re_set_mac_mcu_8125b_1(sc); + break; + case MACFG_83: + re_set_mac_mcu_8125b_2(sc); + break; + case MACFG_84: + re_set_mac_mcu_8125bp_1(sc); + break; + case MACFG_85: + re_set_mac_mcu_8125bp_2(sc); + break; + case MACFG_86: + re_set_mac_mcu_8125d_1(sc); + break; + case MACFG_87: + re_set_mac_mcu_8125d_2(sc); + break; + case MACFG_90: + re_set_mac_mcu_8126a_1(sc); + break; + case MACFG_91: + re_set_mac_mcu_8126a_2(sc); + break; + case MACFG_92: + re_set_mac_mcu_8126a_3(sc); + break; } - } - else if (macver == 0x2C800000) { - /* disable clock request. */ - pci_write_config(sc->dev, 0x81, 0x00, 1); +} - /*set configuration space offset 0x70f to 0x27*/ - re_set_offset70f(sc, 0x27); +#ifndef _WIN32 - re_set_offset79(sc, 0x40); +#define ISRIMR_DASH_TYPE2_TX_DISABLE_IDLE BIT_5 +static void Dash2DisableTx(struct re_softc *sc) +{ + u_int16_t WaitCnt; + u_int8_t TmpUchar; - CSR_WRITE_1(sc, RE_TDFNR, 0x8); + if (!HW_DASH_SUPPORT_CMAC(sc)) + return; - re_eri_write(sc, 0xC0, 2, 0x0000, ERIAR_ExGMAC); - re_eri_write(sc, 0xB8, 4, 0x00000000, ERIAR_ExGMAC); - re_eri_write(sc, 0xC8, 4, 0x00100002, ERIAR_ExGMAC); - re_eri_write(sc, 0xE8, 4, 0x00100006, ERIAR_ExGMAC); - Data32 = re_eri_read(sc, 0xdc, 4, ERIAR_ExGMAC); - Data32 &= ~BIT_0; - re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); - Data32 |= BIT_0; - re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + //Disable oob Tx + RE_CMAC_WRITE_1(sc, RE_CMAC_IBCR2, RE_CMAC_READ_1(sc, RE_CMAC_IBCR2) & ~(BIT_0)); + WaitCnt = 0; - Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); - Data32 |= (BIT_8 | BIT_9 | BIT_10 | BIT_11 | BIT_12); - re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); - if (sc->re_type == MACFG_39) { - Data32 = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); - Data32 |= BIT_4; - re_eri_write(sc, 0x1B0, 4, Data32, ERIAR_ExGMAC); - re_eri_write(sc, 0xCC, 4, 0x00000050, ERIAR_ExGMAC); - re_eri_write(sc, 0xD0, 4, 0x07ff0060, ERIAR_ExGMAC); - } + //wait oob tx disable + do { + TmpUchar = RE_CMAC_READ_1(sc, RE_CMAC_IBISR0); - CSR_WRITE_4(sc, RE_TXCFG, CSR_READ_4(sc, RE_TXCFG) | BIT_7); - CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); - CSR_WRITE_1(sc, 0x1B, CSR_READ_1(sc, 0x1B) & ~0x07); + if (TmpUchar & ISRIMR_DASH_TYPE2_TX_DISABLE_IDLE) { + break; + } - CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); + DELAY(50); + WaitCnt++; + } while(WaitCnt < 2000); - if (sc->re_type == MACFG_38) { - CSR_WRITE_4(sc, 0xB0, 0xEE480010); - CSR_WRITE_1(sc, 0x1A, CSR_READ_1(sc, 0x1A) & ~(BIT_2 | BIT_3)); - re_eri_write(sc, 0x1DC, 1, 0x64, ERIAR_ExGMAC); - - MP_WriteEPhyUshort(sc, 0x06, 0xF020); - MP_WriteEPhyUshort(sc, 0x07, 0x01FF); - MP_WriteEPhyUshort(sc, 0x00, 0x5027); - MP_WriteEPhyUshort(sc, 0x01, 0x0003); - MP_WriteEPhyUshort(sc, 0x02, 0x2D16); - MP_WriteEPhyUshort(sc, 0x03, 0x6D49); - MP_WriteEPhyUshort(sc, 0x08, 0x0006); - MP_WriteEPhyUshort(sc, 0x0A, 0x00C8); - } - - data16 = MP_ReadEPhyUshort(sc, 0x09); - data16 |= BIT_7; - MP_WriteEPhyUshort(sc, 0x09, data16); - - data16 = MP_ReadEPhyUshort(sc, 0x19); - data16 |= (BIT_2 | BIT_5 | BIT_9); - MP_WriteEPhyUshort(sc, 0x19, data16); - - SetPCIePhyBit(sc, 0x00, BIT_3); - ClearAndSetPCIePhyBit(sc, - 0x0C, - (BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4), - BIT_9 - ); - - CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | BIT_5); - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); - - CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_6); - CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_6); - - if (sc->mtu > ETHERMTU) - CSR_WRITE_1(sc, RE_MTPS, 0x27); - ifp->if_capenable &= ~IFCAP_HWCSUM; - ifp->if_hwassist &= ~RE_CSUM_FEATURES; - } - else if (macver == 0x24000000) { - if (pci_read_config(sc->dev, 0x81, 1) == 1) { - CSR_WRITE_1(sc, RE_DBG_reg, 0x98); - CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | 0x80); - CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | 0x04); - pci_write_config(sc->dev, 0x81, 1, 1); - } - re_set_offset79(sc, 0x40); - - /*set configuration space offset 0x70f to 0x3F*/ - re_set_offset70f(sc, 0x3F); - - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + //Clear ISRIMR_DASH_TYPE2_TX_DISABLE_IDLE + RE_CMAC_WRITE_1(sc, RE_CMAC_IBISR0, RE_CMAC_READ_1(sc, RE_CMAC_IBISR0) | ISRIMR_DASH_TYPE2_TX_DISABLE_IDLE); +} - CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); +static void Dash2DisableRx(struct re_softc *sc) +{ + if (!HW_DASH_SUPPORT_CMAC(sc)) + return; - MP_WriteEPhyUshort(sc, 0x06, 0xAF25); - MP_WriteEPhyUshort(sc, 0x07, 0x8E68); - } - else if (macver == 0x40800000) { - CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | 0x80); - CSR_WRITE_1(sc, 0xF1, CSR_READ_1(sc, 0xF1) | 0x28); - CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) | 0x0C); - CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); - CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | 0x40); - CSR_WRITE_2(sc, 0xE0, CSR_READ_2(sc, 0xE0) & ~0xDF9C); - CSR_WRITE_1(sc, 0xD1, CSR_READ_1(sc, 0xD1) | 0x02); - - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); - - if (sc->re_type == MACFG_42) { - /* set EPHY registers */ - SetPCIePhyBit(sc, 0x07, BIT_14); - SetPCIePhyBit(sc, 0x19, BIT_9); - SetPCIePhyBit(sc, 0x19, BIT_5); - SetPCIePhyBit(sc, 0x1E, BIT_13); - SetPCIePhyBit(sc, 0x03, BIT_0); - SetPCIePhyBit(sc, 0x19, BIT_8); - SetPCIePhyBit(sc, 0x19, BIT_2); - SetPCIePhyBit(sc, 0x0A, BIT_5); - SetPCIePhyBit(sc, 0x05, BIT_13); - } - if (sc->re_type == MACFG_43) { - SetPCIePhyBit(sc, 0x07, BIT_14); - SetPCIePhyBit(sc, 0x19, BIT_9); - SetPCIePhyBit(sc, 0x19, BIT_5); - SetPCIePhyBit(sc, 0x1E, BIT_13); - SetPCIePhyBit(sc, 0x03, BIT_0); - SetPCIePhyBit(sc, 0x19, BIT_8); - SetPCIePhyBit(sc, 0x19, BIT_2); - SetPCIePhyBit(sc, 0x0A, BIT_5); - SetPCIePhyBit(sc, 0x1E, BIT_15); - SetPCIePhyBit(sc, 0x05, BIT_13); - } - } - else if (macver == 0x44000000) { - - CSR_WRITE_2(sc, 0xE0, CSR_READ_2(sc, 0xE0) & ~0xDF9C); - - re_eri_write(sc, 0xC8, 4, 0x00000002, ERIAR_ExGMAC); - re_eri_write(sc, 0xE8, 4, 0x00000006, ERIAR_ExGMAC); - - Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); - Data32 |= BIT_11 | BIT_10; - re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); - - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); - - /* set EPHY registers */ - MP_WriteEPhyUshort(sc, 0x19, 0xFF64); - - if (sc->mtu > ETHERMTU) - CSR_WRITE_1(sc, RE_MTPS, 0x27); - } - else if (macver == 0x48000000) { - /*set configuration space offset 0x70f to 0x27*/ - re_set_offset70f(sc, 0x27); - - re_set_offset79(sc, 0x40); - - CSR_WRITE_1(sc, RE_TDFNR, 0x8); - - Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); - Data32 |= (BIT_8 | BIT_9 | BIT_10 | BIT_11 | BIT_12); - re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); - re_eri_write(sc, 0xC0, 2, 0x0000, ERIAR_ExGMAC); - re_eri_write(sc, 0xB8, 4, 0x00000000, ERIAR_ExGMAC); - re_eri_write(sc, 0xC8, 4, 0x00100002, ERIAR_ExGMAC); - re_eri_write(sc, 0xE8, 4, 0x00100006, ERIAR_ExGMAC); - Data32 = re_eri_read(sc, 0xdc, 4, ERIAR_ExGMAC); - Data32 &= ~BIT_0; - re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); - Data32 |= BIT_0; - re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); - Data32 = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); - Data32 |= BIT_4; - re_eri_write(sc, 0x1B0, 4, Data32, ERIAR_ExGMAC); - re_eri_write(sc, 0xCC, 4, 0x00000050, ERIAR_ExGMAC); - re_eri_write(sc, 0xD0, 4, 0x00000060, ERIAR_ExGMAC); - Data32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); - Data32 |= BIT_4; - re_eri_write(sc, 0x1D0, 4, Data32, ERIAR_ExGMAC); - - CSR_WRITE_4(sc, RE_TXCFG, CSR_READ_4(sc, RE_TXCFG) | BIT_7); - CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); - CSR_WRITE_1(sc, 0x1B, CSR_READ_1(sc, 0x1B) & ~0x07); + RE_CMAC_WRITE_1(sc, RE_CMAC_IBCR0, RE_CMAC_READ_1(sc, RE_CMAC_IBCR0) & ~(BIT_0)); +} - CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); +static void Dash2DisableTxRx(struct re_softc *sc) +{ + if (!HW_DASH_SUPPORT_CMAC(sc)) + return; - if (sc->re_type == MACFG_50) { - data16 = MP_ReadEPhyUshort(sc, 0x06); - data16 &= ~(BIT_7 | BIT_6); - data16 |= BIT_5; - MP_WriteEPhyUshort(sc, 0x06, data16); + Dash2DisableTx(sc); + Dash2DisableRx(sc); +} - data16 = MP_ReadEPhyUshort(sc, 0x08); - data16 &= ~BIT_0; - data16 |= BIT_1; - MP_WriteEPhyUshort(sc, 0x08, data16); - } +#endif // !_WIN32 - data16 = MP_ReadEPhyUshort(sc, 0x09); - data16 |= BIT_7; - MP_WriteEPhyUshort(sc, 0x09, data16); +static inline bool +is_zero_ether_addr(const u_int8_t * addr) +{ + return ((addr[0] + addr[1] + addr[2] + addr[3] + addr[4] + addr[5]) == 0x00); +} - data16 = MP_ReadEPhyUshort(sc, 0x19); - data16 |= (BIT_2 | BIT_5 | BIT_9); - MP_WriteEPhyUshort(sc, 0x19, data16); +static inline bool +is_multicast_ether_addr(const u_int8_t * addr) +{ + return (0x01 & addr[0]); +} - SetPCIePhyBit(sc, 0x00, BIT_3); - ClearAndSetPCIePhyBit(sc, - 0x0C, - (BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4), - BIT_9 - ); +/* +static inline bool +is_broadcast_ether_addr(const u_int8_t * addr) +{ + return ((addr[0] + addr[1] + addr[2] + addr[3] + addr[4] + addr[5]) == (6 * 0xff)); +} +*/ - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); +static inline bool +is_valid_ether_addr(const u_int8_t * addr) +{ + return !is_multicast_ether_addr(addr) && !is_zero_ether_addr(addr); +} - CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_6); - CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_6); +static void re_disable_now_is_oob(struct re_softc *sc) +{ + if (sc->re_hw_supp_now_is_oob_ver == 1) + CSR_WRITE_1(sc, RE_MCU_CMD, CSR_READ_1(sc, RE_MCU_CMD) & ~RE_NOW_IS_OOB); +} - if (sc->mtu > ETHERMTU) - CSR_WRITE_1(sc, RE_MTPS, 0x27); +static void re_switch_to_sgmii_mode(struct re_softc *sc) +{ + if (FALSE == HW_SUPP_SERDES_PHY(sc)) return; - if (sc->mtu > ETHERMTU) { - ifp->if_capenable &= ~IFCAP_HWCSUM; - ifp->if_hwassist &= ~RE_CSUM_FEATURES; - } - else { - if (sc->re_tx_cstag) { - ifp->if_capenable |= IFCAP_TXCSUM; - ifp->if_hwassist |= RE_CSUM_FEATURES; - } - if (sc->re_rx_cstag) { - ifp->if_capenable |= IFCAP_RXCSUM; - } + switch (sc->hw_hw_supp_serdes_phy_ver) { + case 1: + re_mac_ocp_write(sc, 0xEB00, 0x2); + re_set_mac_ocp_bit(sc, 0xEB16, BIT_1); + break; } - } - else if (macver == 0x48800000) { - /*set configuration space offset 0x70f to 0x27*/ - re_set_offset70f(sc, 0x27); - - re_set_offset79(sc, 0x40); - - CSR_WRITE_1(sc, RE_TDFNR, 0x8); - - Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); - Data32 |= BIT_11 | BIT_10; - re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); - re_eri_write(sc, 0xC0, 2, 0x0000, ERIAR_ExGMAC); - re_eri_write(sc, 0xB8, 4, 0x00000000, ERIAR_ExGMAC); - re_eri_write(sc, 0xC8, 4, 0x00100002, ERIAR_ExGMAC); - re_eri_write(sc, 0xE8, 4, 0x00100006, ERIAR_ExGMAC); - Data32 = re_eri_read(sc, 0xdc, 4, ERIAR_ExGMAC); - Data32 &= ~BIT_0; - re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); - Data32 |= BIT_0; - re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); - Data32 = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); - Data32 |= BIT_4; - re_eri_write(sc, 0x1B0, 4, Data32, ERIAR_ExGMAC); - re_eri_write(sc, 0xCC, 4, 0x00000050, ERIAR_ExGMAC); - re_eri_write(sc, 0xD0, 4, 0x00000060, ERIAR_ExGMAC); - Data32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); - Data32 |= BIT_4; - re_eri_write(sc, 0x1D0, 4, Data32, ERIAR_ExGMAC); - - CSR_WRITE_4(sc, RE_TXCFG, CSR_READ_4(sc, RE_TXCFG) | BIT_7); - CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); - //CSR_WRITE_1(sc, 0x1B, CSR_READ_1(sc, 0x1B) & ~0x07); - - CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); - - data16 = MP_ReadEPhyUshort(sc, 0x06); - data16 &= ~(BIT_7 | BIT_6); - data16 |= BIT_5; - MP_WriteEPhyUshort(sc, 0x06, data16); - - MP_WriteEPhyUshort(sc, 0x0f, 0x5200); - - data16 = MP_ReadEPhyUshort(sc, 0x1e); - data16 |= BIT_14; - MP_WriteEPhyUshort(sc, 0x1e, data16); +} - data16 = MP_ReadEPhyUshort(sc, 0x19); - data16 |= (BIT_2 | BIT_5 | BIT_9); - MP_WriteEPhyUshort(sc, 0x19, data16); +static void +re_enable_magic_packet(struct re_softc *sc) +{ + if (sc->re_if_flags & RL_FLAG_MAGIC_PACKET_V3) + re_set_mac_ocp_bit(sc, 0xC0B6, BIT_0); + else if (sc->re_if_flags & RL_FLAG_MAGIC_PACKET_V2) + re_eri_write(sc, 0xDC, 4, + re_eri_read(sc, 0xDC, 4, ERIAR_ExGMAC) | BIT_16, + ERIAR_ExGMAC); + else + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | RL_CFG3_WOL_MAGIC); +} - SetPCIePhyBit(sc, 0x00, BIT_3); - ClearAndSetPCIePhyBit(sc, - 0x0C, - (BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4), - BIT_9 - ); +static void +re_disable_magic_packet(struct re_softc *sc) +{ + if (sc->re_if_flags & RL_FLAG_MAGIC_PACKET_V3) + re_clear_mac_ocp_bit(sc, 0xC0B6, BIT_0); + else if (sc->re_if_flags & RL_FLAG_MAGIC_PACKET_V2) + re_eri_write(sc, 0xDC, 4, + re_eri_read(sc, 0xDC, 4, ERIAR_ExGMAC) & ~BIT_16, + ERIAR_ExGMAC); + else + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~RL_CFG3_WOL_MAGIC); +} - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); +#ifdef _WIN32 +void re_exit_oob(struct re_softc *sc) +#else // _WIN32 +static void re_exit_oob(struct re_softc *sc) +#endif // _WIN32 +{ + u_int16_t data16; + int i; - CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_6); - CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_6); + re_disable_cfg9346_write(sc); - if (sc->mtu > ETHERMTU) - CSR_WRITE_1(sc, RE_MTPS, 0x27); - if (sc->mtu > ETHERMTU) { - ifp->if_capenable &= ~IFCAP_HWCSUM; - ifp->if_hwassist &= ~RE_CSUM_FEATURES; - } - else { - if (sc->re_tx_cstag) { - ifp->if_capenable |= IFCAP_TXCSUM; - ifp->if_hwassist |= RE_CSUM_FEATURES; - } - if (sc->re_rx_cstag) { - ifp->if_capenable |= IFCAP_RXCSUM; - } + if (HW_SUPP_SERDES_PHY(sc)) { + if (sc->hw_hw_supp_serdes_phy_ver == 1) { + re_switch_to_sgmii_mode(sc); + } } - } - else if (macver == 0x44800000) { - CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | 0x80); - CSR_WRITE_1(sc, 0xF1, CSR_READ_1(sc, 0xF1) | 0x28); - CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) | 0x0C); - CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); - CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | 0x40); - CSR_WRITE_2(sc, 0xE0, CSR_READ_2(sc, 0xE0) & ~0xDF9C); - - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); - } - else if (macver == 0x4C000000 || macver == 0x50800000 || - macver == 0x5C800000 || macver == 0x54000000 || - macver == 0x6C000000) { - CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | BIT_5); - if (sc->re_type == MACFG_59) { - MP_WriteMcuAccessRegWord(sc, 0xD3C0, 0x0B00); - MP_WriteMcuAccessRegWord(sc, 0xD3C2, 0x0000); + switch(sc->re_type) { + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_80: + case MACFG_81: +#ifndef _WIN32 + Dash2DisableTxRx(sc); +#endif // !_WIN32 + break; } - if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || - sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || - sc->re_type == MACFG_76) { - MP_WriteMcuAccessRegWord(sc, 0xD400, MP_ReadMcuAccessRegWord(sc, 0xD400) & ~(BIT_0)); - - data16 = MP_ReadMcuAccessRegWord(sc, 0xE63E); - data16 &= ~(BIT_3 | BIT_2 | BIT_1); - MP_WriteMcuAccessRegWord(sc, 0xE63E, data16); - data16 |= (BIT_0); - MP_WriteMcuAccessRegWord(sc, 0xE63E, data16); - data16 &= ~(BIT_0); - MP_WriteMcuAccessRegWord(sc, 0xE63E, data16); - MP_WriteMcuAccessRegWord(sc, 0xC094, 0x0); - MP_WriteMcuAccessRegWord(sc, 0xC09E, 0x0); - - MP_WriteMcuAccessRegWord(sc, 0xE098, 0x0AA2); - } +#ifndef _WIN32 + if (HW_DASH_SUPPORT_DASH(sc)) + re_driver_start(sc); +#endif // !_WIN32 - /*set configuration space offset 0x70f to 0x17*/ - re_set_offset70f(sc, 0x27); + switch(sc->re_type) { + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_3); + DELAY(2000); - re_set_offset79(sc, 0x40); + for (i = 0; i < 3000; i++) { + DELAY(50); + if (CSR_READ_4(sc, RE_TXCFG) & BIT_11) + break; + } - CSR_WRITE_1(sc, RE_TDFNR, 0x4); + if (CSR_READ_1(sc, RE_COMMAND) & (RE_CMD_TX_ENB | RE_CMD_RX_ENB)) { + DELAY(100); + CSR_WRITE_1(sc, RE_COMMAND, CSR_READ_1(sc, RE_COMMAND) & ~(RE_CMD_TX_ENB | RE_CMD_RX_ENB)); + } - if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57) { - Data32 = MP_ReadPciEConfigSpace(sc, 0x2710); - Data32 &= 0xFFFF0FFF; - Data32 |= (0x04 << 12); - MP_WritePciEConfigSpace(sc, 0x2710, Data32); - } + for (i = 0; i < 3000; i++) { + DELAY(50); + if ((CSR_READ_1(sc, RE_MCU_CMD) & (RE_TXFIFO_EMPTY | RE_RXFIFO_EMPTY)) == (RE_TXFIFO_EMPTY | RE_RXFIFO_EMPTY)) + break; + } + break; + case MACFG_80: + case MACFG_81: + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_3); + DELAY(2000); - Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); - Data32 |= (BIT_7 | BIT_8 | BIT_9 | BIT_10 | BIT_11 | BIT_12); - re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); + if (CSR_READ_1(sc, RE_COMMAND) & (RE_CMD_TX_ENB | RE_CMD_RX_ENB)) { + DELAY(100); + CSR_WRITE_1(sc, RE_COMMAND, CSR_READ_1(sc, RE_COMMAND) & ~(RE_CMD_TX_ENB | RE_CMD_RX_ENB)); + } - if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || - sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || - sc->re_type == MACFG_76) { - Data32 = re_eri_read(sc, 0xDC, 4, ERIAR_ExGMAC); - Data32 |= (BIT_2 | BIT_3 | BIT_4); - re_eri_write(sc, 0xDC, 4, Data32, ERIAR_ExGMAC); - } + for (i = 0; i < 3000; i++) { + DELAY(50); + if ((CSR_READ_1(sc, RE_MCU_CMD) & (RE_TXFIFO_EMPTY | RE_RXFIFO_EMPTY)) == (RE_TXFIFO_EMPTY | RE_RXFIFO_EMPTY)) + break; + } + break; + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_3); + DELAY(2000); + + if (CSR_READ_1(sc, RE_COMMAND) & (RE_CMD_TX_ENB | RE_CMD_RX_ENB)) { + DELAY(100); + CSR_WRITE_1(sc, RE_COMMAND, CSR_READ_1(sc, RE_COMMAND) & ~(RE_CMD_TX_ENB | RE_CMD_RX_ENB)); + } - re_eri_write(sc, 0xC8, 4, 0x00080002, ERIAR_ExGMAC); - re_eri_write(sc, 0xCC, 1, 0x38, ERIAR_ExGMAC); - re_eri_write(sc, 0xD0, 1, 0x48, ERIAR_ExGMAC); - re_eri_write(sc, 0xE8, 4, 0x00100006, ERIAR_ExGMAC); + CSR_WRITE_1(sc, RE_COMMAND, CSR_READ_1(sc, RE_COMMAND) | RE_CMD_STOP_REQ); - if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || - sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || - sc->re_type == MACFG_76) { - MP_WriteMcuAccessRegWord(sc, 0xE054, 0x0000); + for (i = 0; i < 3000; i++) { + DELAY(50); + if ((CSR_READ_1(sc, RE_MCU_CMD) & (RE_TXFIFO_EMPTY | RE_RXFIFO_EMPTY)) == (RE_TXFIFO_EMPTY | RE_RXFIFO_EMPTY)) + break; + } - Data32 = re_eri_read(sc, 0x5F0, 4, ERIAR_ExGMAC); - Data32 &= ~(BIT_11 | BIT_10 | BIT_9 | BIT_8 | BIT_3 | BIT_2 | BIT_1 | BIT_0); - re_eri_write(sc, 0x5F0, 4, Data32, ERIAR_ExGMAC); - } - else { - re_eri_write(sc, 0x5F0, 2, 0x4F87, ERIAR_ExGMAC); + for (i = 0; i < 3000; i++) { + DELAY(50); + if ((CSR_READ_2(sc, RE_IntrMitigate) & (BIT_0 | BIT_1 | BIT_8)) == (BIT_0 | BIT_1 | BIT_8)) + break; + } + break; } - Data32 = re_eri_read(sc, 0xdc, 4, ERIAR_ExGMAC); - Data32 &= ~BIT_0; - re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); - Data32 |= BIT_0; - re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); - - if (sc->re_type == MACFG_74 || sc->re_type == MACFG_75) - SetMcuAccessRegBit(sc, 0xD438, (BIT_1 | BIT_0)); - - Data32 = re_eri_read(sc, 0x2FC, 4, ERIAR_ExGMAC); - Data32 &= ~(BIT_0 | BIT_1 | BIT_2); - Data32 |= (BIT_0); - re_eri_write(sc, 0x2FC, 4, Data32, ERIAR_ExGMAC); - - Data32 = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); - Data32 &= ~BIT_12; - re_eri_write(sc, 0x1B0, 4, Data32, ERIAR_ExGMAC); + //Disable realwow function + switch (sc->re_type) { + case MACFG_50: + case MACFG_51: + CSR_WRITE_4(sc, RE_MCUACCESS, 0xE5A90000); + CSR_WRITE_4(sc, RE_MCUACCESS, 0xF2100010); + break; + case MACFG_52: + CSR_WRITE_4(sc, RE_MCUACCESS, 0xE5A90000); + CSR_WRITE_4(sc, RE_MCUACCESS, 0xE4640000); + CSR_WRITE_4(sc, RE_MCUACCESS, 0xF2100010); + break; + case MACFG_56: + case MACFG_57: + CSR_WRITE_4(sc, RE_MCUACCESS, 0x605E0000); + CSR_WRITE_4(sc, RE_MCUACCESS, (0xE05E << 16) | (CSR_READ_4(sc, RE_MCUACCESS) & 0xFFFE)); + CSR_WRITE_4(sc, RE_MCUACCESS, 0xE9720000); + CSR_WRITE_4(sc, RE_MCUACCESS, 0xF2140010); + break; + case MACFG_60: + CSR_WRITE_4(sc, RE_MCUACCESS, 0xE05E00FF); + CSR_WRITE_4(sc, RE_MCUACCESS, 0xE9720000); + re_mac_ocp_write(sc, 0xE428, 0x0010); + break; + } - CSR_WRITE_4(sc, RE_TXCFG, CSR_READ_4(sc, RE_TXCFG) | BIT_7); - CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); - CSR_WRITE_1(sc, 0x1B, CSR_READ_1(sc, 0x1B) & ~0x07); + if (sc->re_hw_supp_now_is_oob_ver >0) + re_disable_now_is_oob(sc); - CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); + switch(sc->re_type) { + case MACFG_52: + for (i = 0; i < 10; i++) { + DELAY(100); + if (CSR_READ_2(sc, 0xD2) & BIT_9) + break; + } - if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57) { - ClearPCIePhyBit(sc, 0x00, BIT_3); - ClearAndSetPCIePhyBit(sc, - 0x0C, - (BIT_13 | BIT_12 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_4), - (BIT_11 | BIT_5) - ); - SetPCIePhyBit(sc, 0x1E, BIT_0); - ClearPCIePhyBit(sc, 0x19, BIT_15); - } - else if (sc->re_type == MACFG_58) { - SetPCIePhyBit(sc, 0x00, (BIT_3)); - ClearAndSetPCIePhyBit(sc, - 0x0C, - (BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4), - BIT_9 - ); - } - else if (sc->re_type == MACFG_59) { - ClearPCIePhyBit(sc, 0x00, BIT_3); - ClearAndSetPCIePhyBit(sc, - 0x0C, - (BIT_13 | BIT_12 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_4), - (BIT_5 | BIT_11) - ); - - SetPCIePhyBit(sc, 0x1E, BIT_0); - ClearPCIePhyBit(sc, 0x19, BIT_15); - MP_WriteEPhyUshort(sc, 0x19, 0x7C00); - MP_WriteEPhyUshort(sc, 0x1E, 0x20EB); - MP_WriteEPhyUshort(sc, 0x0D, 0x1666); - MP_WriteEPhyUshort(sc, 0x00, 0x10A3); - - MP_WriteEPhyUshort(sc, 0x06, 0xF050); - - SetPCIePhyBit(sc, 0x04, BIT_4); - ClearPCIePhyBit(sc, 0x1D, BIT_14); - } - else if (sc->re_type == MACFG_60) { - ClearPCIePhyBit(sc, 0x00, BIT_3); - ClearAndSetPCIePhyBit(sc, - 0x0C, - (BIT_13 | BIT_12 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_4), - (BIT_5 | BIT_11) - ); - SetPCIePhyBit(sc, 0x1E, BIT_0); - ClearPCIePhyBit(sc, 0x19, BIT_15); - - ClearPCIePhyBit(sc, 0x19, (BIT_5 | BIT_0)); - - SetPCIePhyBit(sc, 0x1E, BIT_13); - ClearPCIePhyBit(sc, 0x0D, BIT_8); - SetPCIePhyBit(sc, 0x0D, BIT_9); - SetPCIePhyBit(sc, 0x00, BIT_7); - - SetPCIePhyBit(sc, 0x06, BIT_4); - - SetPCIePhyBit(sc, 0x04, BIT_4); - SetPCIePhyBit(sc, 0x1D, BIT_14); - } - else if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || - sc->re_type == MACFG_76) { - ClearPCIePhyBit(sc, 0x1E, BIT_11); + data16 = re_mac_ocp_read(sc, 0xD4DE) | BIT_15; + re_mac_ocp_write(sc, 0xD4DE, data16); - SetPCIePhyBit(sc, 0x1E, BIT_0); - SetPCIePhyBit(sc, 0x1D, BIT_11); + for (i = 0; i < 10; i++) { + DELAY(100); + if (CSR_READ_2(sc, 0xD2) & BIT_9) + break; + } + break; + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + data16 = re_mac_ocp_read(sc, 0xE8DE) & ~BIT_14; + re_mac_ocp_write(sc, 0xE8DE, data16); + for (i = 0; i < 10; i++) { + DELAY(100); + if (CSR_READ_2(sc, 0xD2) & BIT_9) + break; + } - MP_WriteEPhyUshort(sc, 0x05, 0x2089); - MP_WriteEPhyUshort(sc, 0x06, 0x5881); + data16 = re_mac_ocp_read(sc, 0xE8DE) | BIT_15; + re_mac_ocp_write(sc, 0xE8DE, data16); - MP_WriteEPhyUshort(sc, 0x04, 0x854A); - MP_WriteEPhyUshort(sc, 0x01, 0x068B); - } - else if (sc->re_type == MACFG_74) { - ClearMcuAccessRegBit(sc, 0xD438, BIT_2); + for (i = 0; i < 10; i++) { + DELAY(100); + if (CSR_READ_2(sc, 0xD2) & BIT_9) + break; + } + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + data16 = re_mac_ocp_read(sc, 0xE8DE) & ~BIT_14; + re_mac_ocp_write(sc, 0xE8DE, data16); + for (i = 0; i < 10; i++) { + DELAY(100); + if (CSR_READ_2(sc, 0xD2) & BIT_9) + break; + } - ClearPCIePhyBit(sc, 0x24, BIT_9); - ClearMcuAccessRegBit(sc, 0xDE28, (BIT_1 | BIT_0)); + re_mac_ocp_write(sc, 0xC0AA, 0x07D0); + re_mac_ocp_write(sc, 0xC0A6, 0x01B5); + re_mac_ocp_write(sc, 0xC01E, 0x5555); - SetMcuAccessRegBit(sc, 0xD438, BIT_2); + for (i = 0; i < 10; i++) { + DELAY(100); + if (CSR_READ_2(sc, 0xD2) & BIT_9) + break; + } + break; } - else if (sc->re_type == MACFG_75) { - ClearMcuAccessRegBit(sc, 0xD438, BIT_2); - ClearMcuAccessRegBit(sc, 0xDE28, (BIT_1 | BIT_0)); - - SetMcuAccessRegBit(sc, 0xD438, BIT_2); - } + //wait ups resume (phy state 2) + switch(sc->re_type) { + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + if (re_is_ups_resume(sc)) { + re_wait_phy_ups_resume(sc, 2); + re_clear_ups_resume_bit(sc); + re_clear_phy_ups_reg(sc); + } + break; + }; + + /* + * Config MAC MCU + */ + re_hw_mac_mcu_config(sc); +} + +#ifdef _WIN32 +void re_hw_init(struct re_softc *sc) +#else // _WIN32 +static void re_hw_init(struct re_softc *sc) +#endif // _WIN32 +{ + /* + * disable EDT. + */ + switch(sc->re_type) { + case MACFG_16: + case MACFG_17: + case MACFG_18: + case MACFG_19: + case MACFG_41: + CSR_WRITE_1(sc, 0xF4, CSR_READ_1(sc, 0xF4) & ~(BIT_0|BIT_1)); + break; + case MACFG_36: + case MACFG_37: + case MACFG_38: + case MACFG_39: + case MACFG_42: + case MACFG_43: + case MACFG_50: + case MACFG_51: + case MACFG_54: + case MACFG_55: + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~(BIT_0|BIT_1|BIT_2)); + break; + } + + re_enable_cfg9346_write(sc); + + if (s0_magic_packet == 0) + re_disable_magic_packet(sc); + else + re_enable_magic_packet(sc); + + re_disable_cfg9346_write(sc); + + switch(sc->re_type) { + case MACFG_5: + if (CSR_READ_1(sc, RE_CFG2) & 1) { + CSR_WRITE_4(sc, 0x7C, 0x000FFFFF); + } else { + CSR_WRITE_4(sc, 0x7C, 0x000FFF00); + } + break; + case MACFG_6: + if (CSR_READ_1(sc, RE_CFG2) & 1) { + CSR_WRITE_4(sc, 0x7C, 0x003FFFFF); + } else { + CSR_WRITE_4(sc, 0x7C, 0x003FFF00); + } + break; + } + + switch(sc->re_type) { + case MACFG_33: + case MACFG_36: + case MACFG_37: + CSR_WRITE_1(sc, 0xF3, CSR_READ_1(sc, 0xF3) | BIT_2); + break; + } + + switch(sc->re_type) { + case MACFG_36: + case MACFG_37: + case MACFG_38: + case MACFG_39: + case MACFG_42: + case MACFG_43: + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_53: + case MACFG_54: + case MACFG_55: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_enable_force_clkreq(sc, 0); + re_enable_aspm_clkreq_lock(sc, 0); + re_enable_cfg9346_write(sc); + CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | BIT_5); + re_disable_cfg9346_write(sc); + break; + } + + if (sc->re_if_flags & RL_FLAG_PCIE) { + uint32_t Data32; + //Set PCIE uncorrectable error status mask pcie 0x108 + Data32 = re_csi_read(sc, 0xF108); + Data32 |= BIT_20; + re_csi_write(sc, 0xF108, Data32); + } +} + +#ifdef _WIN32 +void re_rar_set(struct re_softc *sc, u_int8_t *eaddr) +#else // _WIN32 +static void re_rar_set(struct re_softc *sc, u_int8_t *eaddr) +#endif // _WIN32 +{ + re_enable_cfg9346_write(sc); + + CSR_WRITE_4(sc, RE_IDR0, + htole32(*(u_int32_t *)(&eaddr[0]))); + CSR_WRITE_2(sc, RE_IDR4, + htole16(*(u_int32_t *)(&eaddr[4]))); + + switch (sc->re_type) { + case MACFG_36: + case MACFG_37: + case MACFG_42: + case MACFG_43: + case MACFG_54: + case MACFG_55: + CSR_WRITE_4(sc, RE_SecMAC0, + htole32(*(u_int32_t *)(&eaddr[0]))); + CSR_WRITE_2(sc, RE_SecMAC4, + htole16(*(u_int16_t *)(&eaddr[4]))); + break; + } + + switch (sc->re_type) { + case MACFG_38: + case MACFG_39: + re_eri_write(sc, 0xF0, 4, *(u_int16_t *)(&eaddr[0])<<16, ERIAR_ExGMAC); + re_eri_write(sc, 0xF4, 4, *(u_int32_t *)(&eaddr[2]), ERIAR_ExGMAC); + break; + } + + re_disable_cfg9346_write(sc); +} + +#ifdef _WIN32 +void re_get_hw_mac_address(struct re_softc *sc, u_int8_t *eaddr) +#else // _WIN32 +static void re_get_hw_mac_address(struct re_softc *sc, u_int8_t *eaddr) +#endif // _WIN32 +{ +#ifndef _WIN32 + device_t dev = sc->dev; +#endif // !_WIN32 + + u_int16_t re_eeid = 0; + int i; + + for (i = 0; i < ETHER_ADDR_LEN; i++) + eaddr[i] = CSR_READ_1(sc, RE_IDR0 + i); + + switch(sc->re_type) { + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_53: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + *(u_int32_t *)&eaddr[0] = re_eri_read(sc, 0xE0, 4, ERIAR_ExGMAC); + *(u_int16_t *)&eaddr[4] = (u_int16_t)re_eri_read(sc, 0xE4, 4, ERIAR_ExGMAC); + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + *(u_int32_t *)&eaddr[0] = CSR_READ_4(sc, RE_BACKUP_ADDR0_8125); + *(u_int16_t *)&eaddr[4] = CSR_READ_2(sc, RE_BACKUP_ADDR4_8125); + break; + case MACFG_63: + case MACFG_64: + case MACFG_65: + case MACFG_66: + break; + default: + re_read_eeprom(sc, (caddr_t)&re_eeid, RE_EE_ID, 1, 0); + if (re_eeid == 0x8129) + re_read_eeprom(sc, (caddr_t)&eaddr[0], RE_EE_EADDR, 3, 0); + break; + } + +#ifdef _WIN32 + if (!is_valid_ether_addr(eaddr)) { + for (i = 0; i < ETHER_ADDR_LEN; i++) + eaddr[i] = CSR_READ_1(sc, RE_IDR0 + i); + } +#endif // _WIN32 + + if (!is_valid_ether_addr(eaddr)) { + device_printf(dev,"Invalid ether addr: %6D\n", eaddr, ":"); + ether_gen_addr(sc->re_ifp, (struct ether_addr *)eaddr); + device_printf(dev,"Random ether addr: %6D\n", eaddr, ":"); + sc->random_mac = 1; + } + + re_rar_set(sc, eaddr); +} + +#ifdef _WIN32 +int re_check_mac_version(struct re_softc *sc) +#else // _WIN32 +static int re_check_mac_version(struct re_softc *sc) +#endif // _WIN32 +{ +#ifndef _WIN32 + device_t dev = sc->dev; +#endif // !_WIN32 + + int error = 0; + + switch(CSR_READ_4(sc, RE_TXCFG) & 0xFCF00000) { + case 0x00800000: + case 0x04000000: + sc->re_type = MACFG_3; + sc->max_jumbo_frame_size = Jumbo_Frame_7k; + CSR_WRITE_4(sc, RE_RXCFG, 0xFF00); + break; + case 0x10000000: + sc->re_type = MACFG_4; + sc->max_jumbo_frame_size = Jumbo_Frame_7k; + CSR_WRITE_4(sc, RE_RXCFG, 0xFF00); + break; + case 0x18000000: + sc->re_type = MACFG_5; + sc->max_jumbo_frame_size = Jumbo_Frame_7k; + CSR_WRITE_4(sc, RE_RXCFG, 0xFF00); + break; + case 0x98000000: + sc->re_type = MACFG_6; + sc->max_jumbo_frame_size = Jumbo_Frame_7k; + CSR_WRITE_4(sc, RE_RXCFG, 0xFF00); + break; + case 0x34000000: + case 0xB4000000: + sc->re_type = MACFG_11; + sc->max_jumbo_frame_size = ETHERMTU; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x34200000: + case 0xB4200000: + sc->re_type = MACFG_12; + sc->max_jumbo_frame_size = ETHERMTU; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x34300000: + case 0xB4300000: + sc->re_type = MACFG_13; + sc->max_jumbo_frame_size = ETHERMTU; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x34900000: + case 0x24900000: + sc->re_type = MACFG_14; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x34A00000: + case 0x24A00000: + sc->re_type = MACFG_15; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x34B00000: + case 0x24B00000: + sc->re_type = MACFG_16; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x34C00000: + case 0x24C00000: + sc->re_type = MACFG_17; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x34D00000: + case 0x24D00000: + sc->re_type = MACFG_18; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x34E00000: + case 0x24E00000: + sc->re_type = MACFG_19; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x30000000: + sc->re_type = MACFG_21; + sc->max_jumbo_frame_size = Jumbo_Frame_4k; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x38000000: + sc->re_type = MACFG_22; + sc->max_jumbo_frame_size = Jumbo_Frame_4k; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x38500000: + case 0xB8500000: + case 0x38700000: + case 0xB8700000: + sc->re_type = MACFG_23; + sc->max_jumbo_frame_size = Jumbo_Frame_4k; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x3C000000: + sc->re_type = MACFG_24; + sc->max_jumbo_frame_size = Jumbo_Frame_6k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xC700); + break; + case 0x3C200000: + sc->re_type = MACFG_25; + sc->max_jumbo_frame_size = Jumbo_Frame_6k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xC700); + break; + case 0x3C400000: + sc->re_type = MACFG_26; + sc->max_jumbo_frame_size = Jumbo_Frame_6k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xC700); + break; + case 0x3C900000: + sc->re_type = MACFG_27; + sc->max_jumbo_frame_size = Jumbo_Frame_6k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xC700); + break; + case 0x3CB00000: + sc->re_type = MACFG_28; + sc->max_jumbo_frame_size = Jumbo_Frame_6k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xC700); + break; + case 0x28100000: + sc->re_type = MACFG_31; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0x8700); + break; + case 0x28200000: + sc->re_type = MACFG_32; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0x8700); + break; + case 0x28300000: + sc->re_type = MACFG_33; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0x8700); + break; + case 0x2C100000: + sc->re_type = MACFG_36; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0x8700); + break; + case 0x2C200000: + sc->re_type = MACFG_37; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0x8700); + break; + case 0x2C800000: + sc->re_type = MACFG_38; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0xBF00); + break; + case 0x2C900000: + sc->re_type = MACFG_39; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0xBF00); + break; + case 0x24000000: + sc->re_type = MACFG_41; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x40900000: + sc->re_type = MACFG_42; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x40A00000: + case 0x40B00000: + case 0x40C00000: + sc->re_type = MACFG_43; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x48000000: + sc->re_type = MACFG_50; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0xBF00); + break; + case 0x48100000: + sc->re_type = MACFG_51; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0xBF00); + break; + case 0x48800000: + sc->re_type = MACFG_52; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0xBF00); + break; + case 0x44000000: + sc->re_type = MACFG_53; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x44800000: + sc->re_type = MACFG_54; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x44900000: + sc->re_type = MACFG_55; + sc->max_jumbo_frame_size = ETHERMTU; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0xE700); + break; + case 0x4C000000: + sc->re_type = MACFG_56; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x4C100000: + sc->re_type = MACFG_57; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x50800000: + sc->re_type = MACFG_58; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x50900000: + sc->re_type = MACFG_59; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x5C800000: + sc->re_type = MACFG_60; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x50000000: + sc->re_type = MACFG_61; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x50100000: + sc->re_type = MACFG_62; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x50200000: + sc->re_type = MACFG_67; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x28800000: + sc->re_type = MACFG_63; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0x8700); + break; + case 0x28900000: + sc->re_type = MACFG_64; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0x8700); + break; + case 0x28A00000: + sc->re_type = MACFG_65; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0x8700); + break; + case 0x28B00000: + sc->re_type = MACFG_66; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM; + CSR_WRITE_4(sc, RE_RXCFG, 0x8700); + break; + case 0x54000000: + sc->re_type = MACFG_68; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x54100000: + sc->re_type = MACFG_69; + if ((re_mac_ocp_read(sc, 0xD006) & 0xFF00) == 0x0100) + sc->re_type = MACFG_74; + else if ((re_mac_ocp_read(sc, 0xD006) & 0xFF00) == 0x0300) + sc->re_type = MACFG_75; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x6C000000: + sc->re_type = MACFG_76; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_8168G_PLUS | + RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x54900000: + sc->re_type = MACFG_70; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x54A00000: + sc->re_type = MACFG_71; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x54B00000: + sc->re_type = MACFG_72; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x54C00000: + sc->re_type = MACFG_73; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V2; + CSR_WRITE_4(sc, RE_RXCFG, 0x8F00); + break; + case 0x60800000: + sc->re_type = MACFG_80; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00400); + break; + case 0x60900000: + sc->re_type = MACFG_81; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00400); + break; + case 0x64000000: + sc->re_type = MACFG_82; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00C00); + break; + case 0x64100000: + sc->re_type = MACFG_83; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00C00); + break; + case 0x68000000: + sc->re_type = MACFG_84; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00C00); + break; + case 0x68100000: + sc->re_type = MACFG_85; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00C00); + break; + case 0x68800000: + sc->re_type = MACFG_86; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00C00); + break; + case 0x68900000: + sc->re_type = MACFG_87; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00C00); + break; + case 0x64800000: + sc->re_type = MACFG_90; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00F00); + break; + case 0x64900000: + sc->re_type = MACFG_91; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00D00); + break; + case 0x64A00000: + sc->re_type = MACFG_92; + sc->max_jumbo_frame_size = Jumbo_Frame_9k; + sc->re_if_flags |= RL_FLAG_DESCV2 | RL_FLAG_PHYWAKE_PM | + RL_FLAG_8168G_PLUS | RL_FLAG_MAGIC_PACKET_V3; + CSR_WRITE_4(sc, RE_RXCFG, 0x40C00D00); + break; + default: + device_printf(dev,"unknown device\n"); + sc->re_type = MACFG_FF; + error = ENXIO; + break; + } + + switch(sc->re_device_id) { + case RT_DEVICEID_8169: + case RT_DEVICEID_8169SC: + case RT_DEVICEID_8168: + case RT_DEVICEID_8161: + case RT_DEVICEID_8162: + case RT_DEVICEID_8125: + case RT_DEVICEID_3000: + case RT_DEVICEID_8126: + //do nothing + break; + default: + sc->max_jumbo_frame_size = ETHERMTU; + break; + } + + return error; +} + +static bool +re_is_allow_access_dash_ocp(struct re_softc *sc) +{ + bool allow_access = false; + u_int16_t mac_ocp_data; + + if (!HW_SUPPORT_OCP_CHANNEL(sc)) + goto exit; + + switch (sc->re_type) { + case MACFG_80: + case MACFG_81: + mac_ocp_data = re_mac_ocp_read(sc, 0xd460); + if (mac_ocp_data == 0xffff || !(mac_ocp_data & BIT_0)) + goto exit; + break; + case MACFG_84: + case MACFG_85: + mac_ocp_data = re_mac_ocp_read(sc, 0xd4c0); + if (mac_ocp_data == 0xffff || (mac_ocp_data & BIT_3)) + goto exit; + break; + default: + break; + } + + allow_access = true; + +exit: + return allow_access; +} + +#ifdef _WIN32 +void re_init_software_variable(struct re_softc *sc) +#else // _WIN32 +static void re_init_software_variable(struct re_softc *sc) +#endif // _WIN32 +{ + switch(sc->re_device_id) { + case RT_DEVICEID_8168: + case RT_DEVICEID_8161: + case RT_DEVICEID_8162: + case RT_DEVICEID_8136: + case RT_DEVICEID_8125: + case RT_DEVICEID_3000: + case RT_DEVICEID_8126: + sc->re_if_flags |= RL_FLAG_PCIE; + break; + } + + sc->re_rx_mbuf_sz = sc->max_jumbo_frame_size + ETHER_VLAN_ENCAP_LEN + ETHER_HDR_LEN + ETHER_CRC_LEN + RE_ETHER_ALIGN + 1; + + if (sc->re_rx_mbuf_sz > max_rx_mbuf_sz) { + sc->max_jumbo_frame_size -= (sc->re_rx_mbuf_sz - max_rx_mbuf_sz); + sc->re_rx_mbuf_sz = max_rx_mbuf_sz; + } + + switch(sc->re_type) { + case MACFG_63: + case MACFG_64: + case MACFG_65: + case MACFG_66: + sc->HwSuppDashVer = 1; + break; + case MACFG_61: + case MACFG_62: + case MACFG_67: + sc->HwSuppDashVer = 2; + break; + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + sc->HwSuppDashVer = 3; + break; + case MACFG_80: + case MACFG_81: { + u_int8_t tmpUchar; + tmpUchar = (u_int8_t)re_mac_ocp_read(sc, 0xD006); + if (tmpUchar == 0x02 || tmpUchar == 0x04) + sc->HwSuppDashVer = 2; + } + break; + case MACFG_84: + case MACFG_85: + sc->HwSuppDashVer = 4; + break; + default: + sc->HwSuppDashVer = 0; + break; + } + + switch(sc->re_type) { + case MACFG_63: + case MACFG_64: + case MACFG_65: + case MACFG_66: + sc->HwSuppOcpChannelVer = 1; + break; + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_84: + case MACFG_85: + sc->HwSuppOcpChannelVer = 2; + break; + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + sc->HwSuppOcpChannelVer = 3; + break; + case MACFG_80: + case MACFG_81: + if (sc->HwSuppDashVer > 0) + sc->HwSuppOcpChannelVer = 2; + break; + default: + sc->HwSuppOcpChannelVer = 0; + break; + } + + switch(sc->re_type) { + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + sc->HwPkgDet = re_mac_ocp_read(sc, 0xDC00); + sc->HwPkgDet = (sc->HwPkgDet >> 3) & 0x0F; + break; + } + + switch(sc->re_type) { + case MACFG_71: + case MACFG_72: + case MACFG_73: + if (sc->HwPkgDet == 0x06) { + u_int8_t tmpUchar = re_eri_read(sc, 0xE6, 1, ERIAR_ExGMAC); + if (tmpUchar == 0x02) + sc->hw_hw_supp_serdes_phy_ver = 1; + else if (tmpUchar == 0x00) + sc->hw_hw_supp_serdes_phy_ver = 2; + } + break; + } + + if (HW_SUPP_SERDES_PHY(sc)) +#ifdef _WIN32 + sc->eee_enable = 0; +#else // _WIN32 + eee_enable = 0; +#endif // _WIN32 + + if (HW_DASH_SUPPORT_DASH(sc)) { + sc->AllowAccessDashOcp = re_is_allow_access_dash_ocp(sc); + sc->re_dash = re_check_dash(sc); + } + + if (sc->re_dash) { +#ifdef _WIN32 + sc->re_dash = 0; +#else // _WIN32 +#if defined(__amd64__) || defined(__i386__) + if (HW_DASH_SUPPORT_TYPE_3(sc)) { + u_int64_t CmacMemPhysAddress; + bus_space_handle_t cmac_ioaddr; + + CmacMemPhysAddress = re_csi_other_fun_read(sc, 0, 0xf018); + if (!(CmacMemPhysAddress & BIT_0)) { + if (CmacMemPhysAddress & BIT_2) + CmacMemPhysAddress |= (u_int64_t)re_csi_other_fun_read(sc, 0, 0xf01c) << 32; + + CmacMemPhysAddress &= 0xFFFFFFF0; + /* ioremap MMIO region */ + sc->re_mapped_cmac_tag = X86_BUS_SPACE_MEM; + if (bus_space_map(sc->re_mapped_cmac_tag, CmacMemPhysAddress, RE_REGS_SIZE, 0, + &cmac_ioaddr)) + sc->re_dash = 0; + else + sc->re_mapped_cmac_handle = cmac_ioaddr; + } + } +#else + sc->re_dash = 0; +#endif +#endif // _WIN32 + } + + switch(sc->re_type) { + case MACFG_61: + case MACFG_62: + case MACFG_67: +#ifndef _WIN32 + sc->re_cmac_handle = sc->re_bhandle; + sc->re_cmac_tag = sc->re_btag; +#endif // !_WIN32 + break; + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: +#ifndef _WIN32 + sc->re_cmac_handle = sc->re_mapped_cmac_handle; + sc->re_cmac_tag = sc->re_mapped_cmac_tag; +#endif // !_WIN32 + break; + } + + switch(sc->re_type) { + case MACFG_14: + case MACFG_15: + case MACFG_16: + case MACFG_17: + case MACFG_18: + case MACFG_19: + case MACFG_31: + case MACFG_32: + case MACFG_33: + case MACFG_41: + case MACFG_63: + case MACFG_64: + case MACFG_65: + case MACFG_66: + sc->re_efuse_ver = EFUSE_SUPPORT_V1; + break; + case MACFG_36: + case MACFG_37: + case MACFG_42: + case MACFG_43: + case MACFG_54: + case MACFG_55: + sc->re_efuse_ver = EFUSE_SUPPORT_V2; + break; + case MACFG_38: + case MACFG_39: + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_53: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + sc->re_efuse_ver = EFUSE_SUPPORT_V3; + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + sc->re_efuse_ver = EFUSE_SUPPORT_V4; + break; + default: + sc->re_efuse_ver = EFUSE_NOT_SUPPORT; + break; + } + + switch(sc->re_type) { + case MACFG_69: + case MACFG_76: { + u_int16_t ioffset_p3, ioffset_p2, ioffset_p1, ioffset_p0; + u_int16_t TmpUshort; + + re_mac_ocp_write(sc, 0xDD02, 0x807D); + + TmpUshort = re_mac_ocp_read(sc, 0xDD02); + ioffset_p3 = ((TmpUshort & BIT_7) >>7); + ioffset_p3 <<= 3; + TmpUshort = re_mac_ocp_read(sc, 0xDD00); + + ioffset_p3 |= ((TmpUshort & (BIT_15 | BIT_14 | BIT_13))>>13); + + ioffset_p2 = ((TmpUshort & (BIT_12|BIT_11|BIT_10|BIT_9))>>9); + ioffset_p1 = ((TmpUshort & (BIT_8|BIT_7|BIT_6|BIT_5))>>5); + + ioffset_p0 = ((TmpUshort & BIT_4) >>4); + ioffset_p0 <<= 3; + ioffset_p0 |= (TmpUshort & (BIT_2| BIT_1 | BIT_0)); + + if ((ioffset_p3 == 0x0F) && (ioffset_p2 == 0x0F) && (ioffset_p1 == 0x0F) && (ioffset_p0 == 0x0F)) { + sc->RequireAdcBiasPatch = FALSE; + } else { + sc->RequireAdcBiasPatch = TRUE; + sc->AdcBiasPatchIoffset = (ioffset_p3<<12)|(ioffset_p2<<8)|(ioffset_p1<<4)|(ioffset_p0); + } + } + break; + } + + switch(sc->re_type) { + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_75: + case MACFG_76: { + u_int16_t rg_saw_cnt; + + re_mdio_write(sc, 0x1F, 0x0C42); + rg_saw_cnt = re_mdio_read(sc, 0x13); + rg_saw_cnt &= ~(BIT_15|BIT_14); + re_mdio_write(sc, 0x1F, 0x0000); + + if (rg_saw_cnt > 0) { + sc->SwrCnt1msIni = 16000000/rg_saw_cnt; + sc->SwrCnt1msIni &= 0x0FFF; + + sc->RequireAdjustUpsTxLinkPulseTiming = TRUE; + } + } + break; + } + +#ifdef ENABLE_FIBER_SUPPORT + re_check_hw_fiber_mode_support(sc); +#endif //ENABLE_FIBER_SUPPORT + + switch (sc->re_type) { + case MACFG_74: + case MACFG_75: + sc->RequiredSecLanDonglePatch = FALSE; + break; + } + + switch(sc->re_type) { + case MACFG_31: + case MACFG_32: + case MACFG_33: + case MACFG_36: + case MACFG_37: + case MACFG_38: + case MACFG_39: + case MACFG_42: + case MACFG_43: + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_53: + case MACFG_54: + case MACFG_55: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_63: + case MACFG_64: + case MACFG_65: + case MACFG_66: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: +#ifndef _WIN32 + sc->re_hw_enable_msi_msix = TRUE; +#endif // !_WIN32 + break; + } + + switch(sc->re_type) { + case MACFG_3: + case MACFG_4: + case MACFG_5: + case MACFG_6: + case MACFG_11: + case MACFG_12: + case MACFG_13: + case MACFG_21: + case MACFG_22: + case MACFG_23: + case MACFG_24: + case MACFG_25: + case MACFG_26: + case MACFG_27: + case MACFG_28: + case MACFG_41: + case MACFG_42: + case MACFG_43: + case MACFG_54: + case MACFG_55: +#ifndef _WIN32 + sc->re_coalesce_tx_pkt = TRUE; +#endif // !_WIN32 + break; + } + + switch(sc->re_type) { + case MACFG_36: + case MACFG_37: + case MACFG_38: + case MACFG_39: + case MACFG_42: + case MACFG_43: + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_53: + case MACFG_54: + case MACFG_55: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + sc->re_hw_supp_now_is_oob_ver = 1; + break; + } + + switch (sc->re_type) { + case MACFG_36: + case MACFG_37: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168E; + break; + case MACFG_38: + case MACFG_39: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168EVL; + break; + case MACFG_50: + case MACFG_51: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168F; + break; + case MACFG_52: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8411; + break; + case MACFG_56: + case MACFG_57: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168G; + break; + case MACFG_58: + case MACFG_59: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168GU; + break; + case MACFG_60: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8411B; + break; + case MACFG_61: + case MACFG_62: + case MACFG_67: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168EP; + break; + case MACFG_68: + case MACFG_69: + case MACFG_76: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168H; + break; + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168FP; + break; + case MACFG_74: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168H_6838; + break; + case MACFG_75: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8168H_6878B; + break; + case MACFG_80: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125A_REV_A; + break; + case MACFG_81: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125A_REV_B; + break; + case MACFG_82: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125B_REV_A; + break; + case MACFG_83: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125B_REV_B; + break; + case MACFG_84: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125BP_REV_A; + break; + case MACFG_85: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125BP_REV_B; + break; + case MACFG_86: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125D_REV_A; + break; + case MACFG_87: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8125D_REV_B; + break; + case MACFG_90: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8126A_REV_A; + break; + case MACFG_91: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8126A_REV_B; + break; + case MACFG_92: + sc->re_sw_ram_code_ver = NIC_RAMCODE_VERSION_8126A_REV_C; + break; + } + + switch (sc->re_type) { + case MACFG_81: + if ((re_mac_ocp_read(sc, 0xD442) & BIT_5) && + (re_real_ocp_phy_read(sc, 0xD068) & BIT_1) + ) { + sc->RequirePhyMdiSwapPatch = TRUE; + } + break; + } + + switch (sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + sc->HwSuppExtendTallyCounterVer = 1; + break; + } + + switch (sc->re_type) { + case MACFG_38: + case MACFG_39: + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + sc->HwSuppMacMcuVer = 1; + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + sc->HwSuppMacMcuVer = 2; + break; + } + + switch (sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + sc->MacMcuPageSize = RTL8125_MAC_MCU_PAGE_SIZE; + break; + } + + switch (sc->re_type) { + case MACFG_84: + case MACFG_85: + sc->RequiredPfmPatch = TRUE; + break; + } + + sc->re_8169_MacVersion = (CSR_READ_4(sc, RE_TXCFG)&0x7c800000)>>25; /* Get bit 26~30 */ + sc->re_8169_MacVersion |= ((CSR_READ_4(sc, RE_TXCFG)&0x00800000)!=0 ? 1:0); /* Get bit 23 */ + DBGPRINT1(sc->re_unit,"8169 Mac Version %d",sc->re_8169_MacVersion); + + /* Rtl8169s single chip detected */ + if (sc->re_type == MACFG_3) { + RE_LOCK(sc); + sc->re_8169_PhyVersion=(re_mdio_read(sc, 0x03)&0x000f); + DBGPRINT1(sc->re_unit,"8169 Phy Version %d",sc->re_8169_PhyVersion); + RE_UNLOCK(sc); + } + +#ifdef _WIN32 + // TODO: Update Link State +#else // _WIN32 + sc->link_state = LINK_STATE_UNKNOWN; +#endif // _WIN32 + +#ifdef ENABLE_FIBER_SUPPORT + if (HW_FIBER_MODE_ENABLED(sc)) + re_set_fiber_mode_software_variable(sc); +#endif //ENABLE_FIBER_SUPPORT +} + +static void re_enable_ocp_phy_power_saving(struct re_softc *sc) +{ + u_int16_t val; + + if (sc->re_type == MACFG_59 || sc->re_type == MACFG_60 || + sc->re_type == MACFG_62 || sc->re_type == MACFG_67 || + sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || + sc->re_type == MACFG_72 || sc->re_type == MACFG_73 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || + sc->re_type == MACFG_76) { + val = re_ocp_phy_read(sc, 0x0C41, 0x13); + if (val != 0x0050) { + re_set_phy_mcu_patch_request(sc); + re_ocp_phy_write(sc, 0x0C41, 0x13, 0x0000); + re_ocp_phy_write(sc, 0x0C41, 0x13, 0x0050); + re_clear_phy_mcu_patch_request(sc); + } + } else if (sc->re_type == MACFG_80 || sc->re_type == MACFG_81) { + val = re_real_ocp_phy_read(sc, 0xC416); + if (val != 0x0050) { + re_set_phy_mcu_patch_request(sc); + re_real_ocp_phy_write(sc, 0xC416, 0x0000); + re_real_ocp_phy_write(sc, 0xC416, 0x0050); + re_clear_phy_mcu_patch_request(sc); + } + } +} + +static void re_disable_ocp_phy_power_saving(struct re_softc *sc) +{ + u_int16_t val; + + if (sc->re_type == MACFG_59 || sc->re_type == MACFG_60 || + sc->re_type == MACFG_62 || sc->re_type == MACFG_67 || + sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || + sc->re_type == MACFG_72 || sc->re_type == MACFG_73 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || + sc->re_type == MACFG_76) { + val = re_ocp_phy_read(sc, 0x0C41, 0x13); + if (val != 0x0500) { + re_set_phy_mcu_patch_request(sc); + re_ocp_phy_write(sc, 0x0C41, 0x13, 0x0000); + re_ocp_phy_write(sc, 0x0C41, 0x13, 0x0500); + re_clear_phy_mcu_patch_request(sc); + } + } else if (sc->re_type == MACFG_80 || sc->re_type == MACFG_81) { + val = re_real_ocp_phy_read(sc, 0xC416); + if (val != 0x0500) { + re_set_phy_mcu_patch_request(sc); + re_real_ocp_phy_write(sc, 0xC416, 0x0000); + re_real_ocp_phy_write(sc, 0xC416, 0x0500); + re_clear_phy_mcu_patch_request(sc); + } + } +} + +#ifdef _WIN32 +void re_hw_d3_para(struct re_softc *sc) +#else // _WIN32 +static void re_hw_d3_para(struct re_softc *sc) +#endif // _WIN32 +{ + switch (sc->re_type) { + case MACFG_59: + case MACFG_60: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + case MACFG_80: + case MACFG_81: + re_disable_ocp_phy_power_saving(sc); + break; + } +} + +#ifndef _WIN32 + +static void +re_add_sysctls(struct re_softc *sc) +{ + struct sysctl_ctx_list *ctx; + struct sysctl_oid_list *children; + + ctx = device_get_sysctl_ctx(sc->dev); + children = SYSCTL_CHILDREN(device_get_sysctl_tree(sc->dev)); + +#ifndef CTLFLAG_NEEDGIANT +#define CTLFLAG_NEEDGIANT 0 +#endif + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "driver_var", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_driver_variable, "I", "Driver Variables Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "stats", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_stats, "I", "Statistics Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "registers", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_registers, "I", "MAC IO Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "registers2", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_registers2, "I", "MAC IO 0x0000 to 0x4000 Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "registers3", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_registers3, "I", "MAC IO 0x4000 to 0x8000 Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "registers4", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_registers4, "I", "MAC IO 0x8000 to 0xC000 Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "registers5", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_registers5, "I", "MAC IO 0xC000 to 0x10000 Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "eth_phy", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_eth_phy, "I", "Ethernet PHY Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "rx_desc", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_dump_rx_desc, "I", "RX Descriptor Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "tx_desc", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_dump_tx_desc, "I", "TX Descriptor Information"); + + if ((sc->re_if_flags & RL_FLAG_PCIE) != 0) { + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "pcie_phy", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_pcie_phy, "I", "PCIE PHY Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "ext_regs", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_extended_registers, "I", "Extended Registers Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "pci_regs", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_pci_registers, "I", "PCI Configuration Information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "msix_tbl", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + re_sysctl_msix_tbl, "I", "MSIX Table Information"); + } +} + +static int +re_sysctl_driver_variable(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + int error, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + printf("%s Driver Variables:\n", device_get_nameunit(sc->dev)); + + printf("driver version\t%s\n", RE_VERSION); + printf("if_drv_flags\t0x%08x\n", sc->re_ifp->if_drv_flags); + printf("re_type\t%d\n", sc->re_type); + printf("re_res_id\t%d\n", sc->re_res_id); + printf("re_res_type\t%d\n", sc->re_res_type); + printf("re_8169_MacVersion\t%d\n", sc->re_8169_MacVersion); + printf("re_8169_PhyVersion\t%d\n", sc->re_8169_PhyVersion); + printf("tx buffer numer\t%d\n", RE_TX_BUF_NUM); + printf("rx buffer numer\t%d\n", RE_RX_BUF_NUM); + printf("rx_cur_index\t%d\n", sc->re_desc.rx_cur_index); + printf("tx_cur_index\t%d\n", sc->re_desc.tx_cur_index); + printf("tx_last_index\t%d\n", sc->re_desc.tx_last_index); + printf("rx_fifo_overflow\t%d\n", sc->rx_fifo_overflow); + printf("driver_detach\t%d\n", sc->driver_detach); + printf("interface name\tre%d\n", sc->re_unit); + printf("re_revid\t0x%02x\n", sc->re_revid); + printf("re_vendor_id\t0x%04x\n", sc->re_vendor_id); + printf("re_device_id\t0x%04x\n", sc->re_device_id); + printf("re_subvendor_id\t0x%04x\n", sc->re_subvendor_id); + printf("re_subdevice_id\t0x%04x\n", sc->re_subdevice_id); + printf("max_jumbo_frame_size\t%d\n", sc->max_jumbo_frame_size); + printf("re_rx_mbuf_sz\t%d\n", sc->re_rx_mbuf_sz); + printf("re_rx_desc_buf_sz\t%d\n", sc->re_rx_desc_buf_sz); + printf("re_if_flags\t0x%08x\n", sc->re_if_flags); + printf("re_tx_cstag\t%d\n", sc->re_tx_cstag); + printf("re_rx_cstag\t%d\n", sc->re_rx_cstag); + printf("RequireAdcBiasPatch\t%d\n", sc->RequireAdcBiasPatch); + printf("RequireAdjustUpsTxLinkPulseTiming\t%d\n", sc->RequireAdjustUpsTxLinkPulseTiming); + printf("RequiredSecLanDonglePatch\t%d\n", sc->RequiredSecLanDonglePatch); + printf("RequiredPfmPatch\t%d\n", sc->RequiredPfmPatch); + printf("RequirePhyMdiSwapPatch\t%d\n", sc->RequirePhyMdiSwapPatch); + printf("re_efuse_ver\t%d\n", sc->re_efuse_ver); + printf("re_sw_ram_code_ver\t0x%x\n", sc->re_sw_ram_code_ver); + printf("re_hw_ram_code_ver\t0x%x\n", sc->re_hw_ram_code_ver); + printf("cur_page\t0x%x\n", sc->cur_page); + printf("phy_reg_anlpar\t0x%x\n", sc->phy_reg_anlpar); + printf("re_hw_enable_msi_msix\t%d\n", sc->re_hw_enable_msi_msix); + printf("re_coalesce_tx_pkt\t%d\n", sc->re_coalesce_tx_pkt); + printf("link_state\t%s\n", sc->link_state==2?"up":(sc->link_state==1?"down":"unknown")); + printf("prohibit_access_reg\t%d\n", sc->prohibit_access_reg); + printf("re_hw_supp_now_is_oob_ver\t%d\n", sc->re_hw_supp_now_is_oob_ver); + printf("hw_hw_supp_serdes_phy_ver\t%d\n", sc->hw_hw_supp_serdes_phy_ver); + printf("HwSuppDashVer\t%d\n", sc->HwSuppDashVer); + printf("re_dash\t%d\n", sc->re_dash); + printf("re_dash_fw_ver\t0x%08x\n", sc->re_dash_fw_ver); + printf("HwPkgDet\t%d\n", sc->HwPkgDet); + printf("HwFiberModeVer\t%d\n", sc->HwFiberModeVer); + printf("HwFiberStat\t%d\n", sc->HwFiberStat); + printf("HwSuppExtendTallyCounterVer\t%d\n", sc->HwSuppExtendTallyCounterVer); + printf("HwSuppMacMcuVer\t%d\n", sc->HwSuppMacMcuVer); + printf("MacMcuPageSize\t%d\n", sc->MacMcuPageSize); + printf("rx_desc_tag maxsize\t%zd\n", sc->re_desc.rx_desc_tag->common.maxsize); + printf("tx_desc_tag maxsize\t%zd\n", sc->re_desc.tx_desc_tag->common.maxsize); + printf("re_tally maxsize\t%zd\n", sc->re_tally.re_stag->common.maxsize); + printf("random_mac\t%d\n", sc->random_mac); + printf("org_mac_addr\t%6D\n", sc->org_mac_addr, ":"); +#if OS_VER < VERSION(6,0) + printf("dev_addr\t%6D\n", (char *)&sc->arpcom.ac_enaddr, ":"); +#elif OS_VER < VERSION(7,0) + printf("dev_addr\t%6D\n", IFP2ENADDR(sc->re_ifp), ":"); +#else + printf("dev_addr\t%6D\n", IF_LLADDR(sc->re_ifp), ":"); +#endif + printf("msi_disable\t%d\n", msi_disable); + printf("msix_disable\t%d\n", msix_disable); + printf("eee_enable\t%d\n", eee_enable); + printf("prefer_iomap\t%d\n", prefer_iomap); + printf("phy_power_saving\t%d\n", phy_power_saving); + printf("phy_mdix_mode\t%d\n", phy_mdix_mode); + printf("s5wol\t%d\n", s5wol); + printf("s0_magic_packet\t%d\n", s0_magic_packet); + printf("config_soc_lan\t%d\n", config_soc_lan); + printf("interrupt_mitigation\t%d\n", interrupt_mitigation); + printf("re_lro_entry_count\t%d\n", re_lro_entry_count); + printf("re_lro_mbufq_depth\t%d\n", re_lro_mbufq_depth); + + RE_UNLOCK(sc); + } + + return (error); +} + +static int +re_sysctl_stats(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + struct re_stats *stats; + int error, i, result; + bool extend_stats; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + extend_stats = false; + if (sc->HwSuppExtendTallyCounterVer > 0) + extend_stats = true; + if ((sc->re_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { + RE_UNLOCK(sc); + goto done; + } + + if (extend_stats) + re_set_mac_ocp_bit(sc, 0xEA84, (BIT_1 | BIT_0)); + + bus_dmamap_sync(sc->re_tally.re_stag, + sc->re_tally.re_smap, BUS_DMASYNC_PREREAD); + CSR_WRITE_4(sc, RE_DUMPSTATS_HI, + RL_ADDR_HI(sc->re_tally.re_stats_addr)); + CSR_WRITE_4(sc, RE_DUMPSTATS_LO, + RL_ADDR_LO(sc->re_tally.re_stats_addr)); + CSR_WRITE_4(sc, RE_DUMPSTATS_LO, + RL_ADDR_LO(sc->re_tally.re_stats_addr | + RE_DUMPSTATS_START)); + for (i = RE_TIMEOUT; i > 0; i--) { + if ((CSR_READ_4(sc, RE_DUMPSTATS_LO) & + RE_DUMPSTATS_START) == 0) + break; + DELAY(1000); + } + bus_dmamap_sync(sc->re_tally.re_stag, + sc->re_tally.re_smap, BUS_DMASYNC_POSTREAD); + + if (extend_stats) + re_clear_mac_ocp_bit(sc, 0xEA84, (BIT_1 | BIT_0)); + + RE_UNLOCK(sc); + if (i == 0) { + device_printf(sc->dev, + "DUMP statistics request timed out\n"); + return (ETIMEDOUT); + } +done: + stats = sc->re_tally.re_stats; + printf("%s statistics:\n", device_get_nameunit(sc->dev)); + printf("Tx frames : %ju\n", + (uintmax_t)le64toh(stats->re_tx_pkts)); + printf("Rx frames : %ju\n", + (uintmax_t)le64toh(stats->re_rx_pkts)); + printf("Tx errors : %ju\n", + (uintmax_t)le64toh(stats->re_tx_errs)); + printf("Rx errors : %u\n", + le32toh(stats->re_rx_errs)); + printf("Rx missed frames : %u\n", + (uint32_t)le16toh(stats->re_missed_pkts)); + printf("Rx frame alignment errs : %u\n", + (uint32_t)le16toh(stats->re_rx_framealign_errs)); + printf("Tx single collisions : %u\n", + le32toh(stats->re_tx_onecoll)); + printf("Tx multiple collisions : %u\n", + le32toh(stats->re_tx_multicolls)); + printf("Rx unicast frames : %ju\n", + (uintmax_t)le64toh(stats->re_rx_ucasts)); + printf("Rx broadcast frames : %ju\n", + (uintmax_t)le64toh(stats->re_rx_bcasts)); + printf("Rx multicast frames : %u\n", + le32toh(stats->re_rx_mcasts)); + printf("Tx aborts : %u\n", + (uint32_t)le16toh(stats->re_tx_aborts)); + printf("Tx underruns : %u\n", + (uint32_t)le16toh(stats->re_rx_underruns)); + + if (extend_stats) { + printf("%s extend statistics:\n", device_get_nameunit(sc->dev)); + printf("Tx octets : %ju\n", + (uintmax_t)le64toh(stats->re_tx_octets)); + printf("Rx octets : %ju\n", + (uintmax_t)le64toh(stats->re_rx_octets)); + printf("Rx multicast64 : %ju\n", + (uintmax_t)le64toh(stats->re_rx_multicast64)); + printf("Rx unicast64 : %ju\n", + (uintmax_t)le64toh(stats->re_tx_unicast64)); + printf("Tx broadcast64 : %ju\n", + (uintmax_t)le64toh(stats->re_tx_broadcast64)); + printf("Tx multicast64 : %ju\n", + (uintmax_t)le64toh(stats->re_tx_multicast64)); + printf("Tx pause on frames : %u\n", + (uint32_t)le32toh(stats->re_tx_pause_on)); + printf("TTx pause off frames : %u\n", + (uint32_t)le32toh(stats->re_tx_pause_off)); + printf("Tx pause all frames : %u\n", + (uint32_t)le32toh(stats->re_tx_pause_all)); + printf("Tx deferred frames : %u\n", + (uint32_t)le32toh(stats->re_tx_deferred)); + printf("Tx late collisions : %u\n", + (uint32_t)le32toh(stats->re_tx_late_collision)); + printf("Tx all collisions : %u\n", + (uint32_t)le32toh(stats->re_tx_all_collision)); + printf("Tx aborts32 : %u\n", + (uint32_t)le32toh(stats->re_tx_aborted32)); + printf("Rx alignment errs32 : %u\n", + (uint32_t)le32toh(stats->re_align_errors32)); + printf("Rx frame too long : %u\n", + (uint32_t)le32toh(stats->re_rx_frame_too_long)); + printf("Rx runt : %u\n", + (uint32_t)le32toh(stats->re_rx_runt)); + printf("Rx pause on frames : %u\n", + (uint32_t)le32toh(stats->re_rx_pause_on)); + printf("Rx pause off frames : %u\n", + (uint32_t)le32toh(stats->re_rx_pause_off)); + printf("Rx pause all frames : %u\n", + (uint32_t)le32toh(stats->re_rx_pause_all)); + printf("Rx unknown opcode : %u\n", + (uint32_t)le32toh(stats->re_rx_unknown_opcode)); + printf("Rx mac error : %u\n", + (uint32_t)le32toh(stats->re_rx_mac_error)); + printf("Tx underruns32 : %u\n", + (uint32_t)le32toh(stats->re_tx_underrun32)); + printf("Rx mac missed : %u\n", + (uint32_t)le32toh(stats->re_rx_mac_missed)); + printf("Rx tcam drops : %u\n", + (uint32_t)le32toh(stats->re_rx_tcam_dropped)); + printf("Tx desc unavailable : %u\n", + (uint32_t)le32toh(stats->re_tdu)); + printf("Rx desc unavailable : %u\n", + (uint32_t)le32toh(stats->re_rdu)); + } + } + + return (error); +} + +static void +re_printf_macio(struct re_softc *sc, + u_int32_t start, + u_int32_t end) +{ + int i, n; + + printf("\n%s mac io start:0x%05x end:0x%05x:\n", + device_get_nameunit(sc->dev), + start, end); + + for (n=start; nnewptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + max = min(256, rman_get_size(sc->re_res)); + re_printf_macio(sc, 0, max); + + RE_UNLOCK(sc); + } + + return (error); +} + +static int +re_sysctl_registers2(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + int error, max, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + max = min(0x4000, rman_get_size(sc->re_res)); + re_printf_macio(sc, 0, max); + + RE_UNLOCK(sc); + } + + return (error); +} + +static int +re_sysctl_registers3(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + int error, max, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + max = min(0x8000, rman_get_size(sc->re_res)); + re_printf_macio(sc, 0x4000, max); + + RE_UNLOCK(sc); + } + + return (error); +} + +static int +re_sysctl_registers4(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + int error, max, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + max = min(0xC000, rman_get_size(sc->re_res)); + re_printf_macio(sc, 0x8000, max); + + RE_UNLOCK(sc); + } + + return (error); +} + +static int +re_sysctl_registers5(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + int error, max, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + max = min(0x10000, rman_get_size(sc->re_res)); + re_printf_macio(sc, 0xC000, max); + + RE_UNLOCK(sc); + } + + return (error); +} + +static int +re_sysctl_eth_phy(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + int error, i, n, max, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + printf("%s ethernet phy:\n", device_get_nameunit(sc->dev)); + + max = 16; + re_mdio_write(sc, 0x1F, 0x0000); + for (n=0; nnewptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + printf("%s rx desc:%d\n", device_get_nameunit(sc->dev), + RE_RX_BUF_NUM); + + rx_list_size = sc->re_desc.rx_desc_tag->common.maxsize; + re_dump_desc((void*)sc->re_desc.rx_desc, rx_list_size); + + RE_UNLOCK(sc); + } + + return (error); +} + +static int +re_sysctl_dump_tx_desc(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + bus_size_t tx_list_size; + int error, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + printf("%s tx desc:%d\n", device_get_nameunit(sc->dev), + RE_TX_BUF_NUM); + + tx_list_size = sc->re_desc.tx_desc_tag->common.maxsize; + re_dump_desc((void*)sc->re_desc.tx_desc, tx_list_size); + + RE_UNLOCK(sc); + } + + return (error); +} + +static int +re_sysctl_pcie_phy(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + int error, i, n, max, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + printf("%s pcie phy:\n", device_get_nameunit(sc->dev)); + + max = 31; + for (n=0; nnewptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + printf("%s extended registers:\n", device_get_nameunit(sc->dev)); + + max = 0x100; + for (n=0; nnewptr == NULL) + return (error); + + if (result == 1) { + sc = (struct re_softc *)arg1; + RE_LOCK(sc); + + printf("%s pci registers:\n", device_get_nameunit(sc->dev)); + + max = 0x100; + for (n=0; nre_type) { + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_74: + case MACFG_75: + case MACFG_76: + n = 0x180; + break; + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_82: + case MACFG_83: + n = 0x214; + break; + case MACFG_80: + case MACFG_81: + n = 0x264; + break; + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + n = 0x210; + break; + case MACFG_90: + case MACFG_91: + case MACFG_92: + n = 0x22C; + break; + default: + n = 0; + break; + } + if (n > 0) + printf("\n0x%03x:\t%08x ", n, re_csi_other_fun_read(sc, 0, n | 0xF000)); + + n = 0x70c; + printf("\n0x%03x:\t%08x ", n, re_csi_read(sc, n | 0xF000)); + + RE_UNLOCK(sc); + } + + return (error); +} + +static int +re_sysctl_msix_tbl(SYSCTL_HANDLER_ARGS) +{ + struct re_softc *sc; + int error, i, j, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || req->newptr == NULL) + return (error); + + sc = (struct re_softc *)arg1; + + if (sc->re_res_pba == NULL) + return EPERM; + + if (result == 1) { + RE_LOCK(sc); + + printf("%s msix table:\n", device_get_nameunit(sc->dev)); + + for (i=0; i<4; i++) { + printf("\n0x%04x:\t", i); + + for (j=0; j<4; j++) + printf("%08x ", + RE_MSIX_TBL_READ_4( + sc, i*0x10 + 4 * j)); + } + + RE_UNLOCK(sc); + } + + return (error); +} + +/* +* Attach the interface. Allocate softc structures, do ifmedia +* setup and ethernet/BPF attach. +*/ +static int re_attach(device_t dev) +{ + /*int s;*/ + bus_size_t rx_list_size, tx_list_size; + u_char eaddr[ETHER_ADDR_LEN]; + u_int32_t command; + struct re_softc *sc; + struct ifnet *ifp; + int unit, error = 0, rid; + int reg; + int msic=0, msixc=0; + + /*s = splimp();*/ + + sc = device_get_softc(dev); + unit = device_get_unit(dev); + bzero(sc, sizeof(struct re_softc)); + RE_LOCK_INIT(sc,device_get_nameunit(dev)); + sc->dev = dev; + + sc->driver_detach = 0; + + sc->re_vendor_id = pci_get_vendor(dev); + sc->re_device_id = pci_get_device(dev); + sc->re_subvendor_id = pci_get_subvendor(dev); + sc->re_subdevice_id = pci_get_subdevice(dev); + sc->re_revid = pci_get_revid(dev); + pci_enable_busmaster(dev); + + /* + * Map control/status registers. + */ + command = pci_read_config(dev, PCIR_COMMAND, 4); + command |= (PCIM_CMD_PORTEN|PCIM_CMD_MEMEN|PCIM_CMD_BUSMASTEREN); + pci_write_config(dev, PCIR_COMMAND, command, 4); + + if (prefer_iomap == 0) { + sc->re_res_id = PCIR_BAR(2); + sc->re_res_type = SYS_RES_MEMORY; + /* PCI NIC use different BARs. */ + if (sc->re_device_id == RT_DEVICEID_8169 || sc->re_device_id == RT_DEVICEID_8169SC) + sc->re_res_id = PCIR_BAR(1); + } else { + sc->re_res_id = PCIR_BAR(0); + sc->re_res_type = SYS_RES_IOPORT; + } + sc->re_res = bus_alloc_resource(dev, sc->re_res_type, &sc->re_res_id, + 0, ~0, 1, RF_ACTIVE); + if (sc->re_res == NULL && prefer_iomap == 0) { + sc->re_res_id = PCIR_BAR(0); + sc->re_res_type = SYS_RES_IOPORT; + sc->re_res = bus_alloc_resource(dev, sc->re_res_type, &sc->re_res_id, + 0, ~0, 1, RF_ACTIVE); + } + + if (sc->re_res == NULL) { + device_printf(dev,"couldn't map ports/memory\n"); + error = ENXIO; + goto fail; + } + + if (sc->re_res_type == SYS_RES_IOPORT) + device_printf(dev, "Using I/O Ports\n"); + else + device_printf(dev, "Using Memory Mapping!\n"); + + sc->re_btag = rman_get_bustag(sc->re_res); + sc->re_bhandle = rman_get_bushandle(sc->re_res); + + error = re_check_mac_version(sc); + + if (error) { + goto fail; + } + + re_init_software_variable(sc); + +#if OS_VER >= VERSION(7,0) + msic = pci_msi_count(dev); + msixc = pci_msix_count(dev); + if (pci_find_cap(dev, PCIY_EXPRESS, ®) == 0) { + sc->re_if_flags |= RL_FLAG_PCIE; + sc->re_expcap = reg; + } else { + sc->re_if_flags &= ~RL_FLAG_PCIE; + sc->re_expcap = 0; + } + + //device_printf(dev, "MSI count : %d\n", msic); + //device_printf(dev, "MSI-X count : %d\n", msixc); + if (sc->re_hw_enable_msi_msix == FALSE) { + msixc = 0; + msic = 0; + } + if (msix_disable > 0) + msixc = 0; + if (msi_disable > 0) + msic = 0; + + /* Prefer MSI-X to MSI. */ + if (msixc > 0) { + rid = PCIR_BAR(4); + msixc = RL_MSI_MESSAGES; + sc->re_res_pba = bus_alloc_resource_any(dev, SYS_RES_MEMORY, + &rid, RF_ACTIVE); + if (sc->re_res_pba == NULL) { + device_printf(dev, + "could not allocate MSI-X PBA resource\n"); + } + if (sc->re_res_pba != NULL && + pci_alloc_msix(dev, &msixc) == 0) { + if (msixc == RL_MSI_MESSAGES) { + device_printf(dev, "Using %d MSI-X message\n", + msixc); + sc->re_if_flags |= RL_FLAG_MSIX; + } else + pci_release_msi(dev); + } + if ((sc->re_if_flags & RL_FLAG_MSIX) == 0) { + if (sc->re_res_pba != NULL) + bus_release_resource(dev, SYS_RES_MEMORY, rid, + sc->re_res_pba); + sc->re_res_pba = NULL; + msixc = 0; + } + + if (sc->re_res_pba != NULL) { + sc->re_msix_tbl_tag = rman_get_bustag(sc->re_res_pba); + sc->re_msix_tbl_handle = rman_get_bushandle(sc->re_res_pba); + } + } + + /* Prefer MSI to INTx. */ + if (msixc == 0 && msic > 0) { + msic = RL_MSI_MESSAGES; + if (pci_alloc_msi(dev, &msic) == 0) { + if (msic == RL_MSI_MESSAGES) { + device_printf(dev, "Using %d MSI message\n", + msic); + sc->re_if_flags |= RL_FLAG_MSI; + } else + pci_release_msi(dev); + } + if ((sc->re_if_flags & RL_FLAG_MSI) == 0) + msic = 0; + } +#endif //OS_VER >= VERSION(7,0) + + if ((sc->re_if_flags & (RL_FLAG_MSI | RL_FLAG_MSIX)) == 0) { + rid = 0; + sc->re_irq = bus_alloc_resource(dev, SYS_RES_IRQ, &rid, 0, ~0, 1, + RF_SHAREABLE | RF_ACTIVE); + + if (sc->re_irq == NULL) { + device_printf(dev,"couldn't map interrupt\n"); + error = ENXIO; + goto fail; + } + device_printf(dev, "Using line-based interrupt\n"); + } else { + rid = 1; + sc->re_irq = bus_alloc_resource_any(dev, + SYS_RES_IRQ, &rid, RF_ACTIVE); + if (sc->re_irq == NULL) { + device_printf(dev, + "couldn't allocate IRQ resources for " + "message %d\n", rid); + error = ENXIO; + goto fail; + } + } + +#if OS_VER >= VERSION(7,3) + /* Disable ASPM L0S/L1 and Clock Request. */ + if (sc->re_expcap != 0) { + u_int32_t cap, ctl; + cap = pci_read_config(dev, sc->re_expcap + + RE_PCIER_LINK_CAP, 2); + if ((cap & RE_PCIEM_LINK_CAP_ASPM) != 0) { + ctl = pci_read_config(dev, sc->re_expcap + + RE_PCIER_LINK_CTL, 2); + if ((ctl & 0x0103) != 0) { + ctl &= ~0x0103; + pci_write_config(dev, sc->re_expcap + + RE_PCIER_LINK_CTL, ctl, 2); + device_printf(dev, "ASPM disabled\n"); + } + } else + device_printf(dev, "no ASPM capability\n"); + } +#endif //OS_VER >= VERSION(7,3) + + re_init_timer(sc); + + RE_LOCK(sc); + re_exit_oob(sc); + re_hw_init(sc); + RE_UNLOCK(sc); + + /* + * Reset the adapter. Only take the lock here as it's needed in + * order to call re_reset(). + */ + RE_LOCK(sc); + re_reset(sc); + RE_UNLOCK(sc); + + sc->re_unit = unit; + + if (sc->re_type == MACFG_3) { /* Change PCI Latency time*/ + pci_write_config(dev, RE_PCI_LATENCY_TIMER, 0x40, 1); + } + + error = bus_dma_tag_create( +#if OS_VER < VERSION(7,0) + NULL, +#else + bus_get_dma_tag(dev), /* parent */ +#endif + 1, 0, /* alignment, boundary */ + BUS_SPACE_MAXADDR, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + BUS_SPACE_MAXSIZE_32BIT, /* maxsize */ + 0, /* nsegments */ + BUS_SPACE_MAXSIZE_32BIT, /* maxsegsize */ + 0, /* flags */ + NULL, NULL, /* lockfunc, lockarg */ + &sc->re_parent_tag); + + rx_list_size = sizeof(union RxDesc) * (RE_RX_BUF_NUM + 1); + error = bus_dma_tag_create( + sc->re_parent_tag, + RE_DESC_ALIGN, 0, /* alignment, boundary */ + BUS_SPACE_MAXADDR, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + rx_list_size, /* maxsize */ + 1, /* nsegments */ + rx_list_size, /* maxsegsize */ + 0, /* flags */ + NULL, NULL, /* lockfunc, lockarg */ + &sc->re_desc.rx_desc_tag); + if (error) { + device_printf(dev,"bus_dma_tag_create fail\n"); + goto fail; + } + + error = bus_dmamem_alloc(sc->re_desc.rx_desc_tag, + (void**) &sc->re_desc.rx_desc, + BUS_DMA_WAITOK|BUS_DMA_COHERENT|BUS_DMA_ZERO, + &sc->re_desc.rx_desc_dmamap); + if (error) { + device_printf(dev,"bus_dmamem_alloc fail\n"); + goto fail; + } + + tx_list_size = sizeof(union TxDesc) * (RE_TX_BUF_NUM + 1); + error = bus_dma_tag_create( + sc->re_parent_tag, + RE_DESC_ALIGN, 0, /* alignment, boundary */ + BUS_SPACE_MAXADDR, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + tx_list_size, /* maxsize */ + 1, /* nsegments */ + tx_list_size, /* maxsegsize */ + 0, /* flags */ + NULL, NULL, /* lockfunc, lockarg */ + &sc->re_desc.tx_desc_tag); + if (error) { + device_printf(dev,"bus_dma_tag_create fail\n"); + goto fail; + } + + error = bus_dmamem_alloc(sc->re_desc.tx_desc_tag, + (void**) &sc->re_desc.tx_desc, + BUS_DMA_WAITOK|BUS_DMA_COHERENT|BUS_DMA_ZERO, + &sc->re_desc.tx_desc_dmamap); + + if (error) { + device_printf(dev,"bus_dmamem_alloc fail\n"); + goto fail; + } + + sc->re_tx_cstag =1; + sc->re_rx_cstag =1; + + error = re_alloc_stats(dev, sc); + if (error) + goto fail; + re_add_sysctls(sc); + +#if OS_VER < VERSION(6,0) + ifp = &sc->arpcom.ac_if; +#else + ifp = sc->re_ifp = if_alloc(IFT_ETHER); + if (ifp == NULL) { + device_printf(dev, "can not if_alloc()\n"); + error = ENOSPC; + goto fail; + } +#endif + ifp->if_softc = sc; +#if OS_VER < VERSION(5,3) + ifp->if_unit = unit; + ifp->if_name = "re"; +#else + if_initname(ifp, device_get_name(dev), device_get_unit(dev)); +#endif + ifp->if_mtu = ETHERMTU; + ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; + ifp->if_ioctl = re_ioctl; + ifp->if_output = ether_output; + ifp->if_start = re_start; +#if OS_VER < VERSION(7,0) + ifp->if_watchdog = re_watchdog; +#endif + if ((sc->re_type == MACFG_24) || (sc->re_type == MACFG_25) || (sc->re_type == MACFG_26)) + ifp->if_hwassist |= CSUM_TCP | CSUM_UDP; + else + ifp->if_hwassist |= RE_CSUM_FEATURES; + ifp->if_capabilities = IFCAP_HWCSUM | IFCAP_HWCSUM_IPV6; + /* TSO capability setup */ + if (sc->re_if_flags & RL_FLAG_8168G_PLUS) { + ifp->if_hwassist |= CSUM_TSO; + ifp->if_capabilities |= IFCAP_TSO; + } + /* RTL8169/RTL8101E/RTL8168B not support TSO v6 */ + if (!(sc->re_if_flags & RL_FLAG_DESCV2)) { + ifp->if_hwassist &= ~(CSUM_IP6_TSO | + CSUM_TCP_IPV6 | + CSUM_UDP_IPV6); + ifp->if_capabilities &= ~(IFCAP_TSO6 | IFCAP_HWCSUM_IPV6); + } + ifp->if_init = re_init; + /* VLAN capability setup */ + ifp->if_capabilities |= IFCAP_VLAN_MTU | IFCAP_VLAN_HWTAGGING; + /* LRO capability setup */ + ifp->if_capabilities |= IFCAP_LRO; + + /* Enable WOL if PM is supported. */ + if (pci_find_cap(sc->dev, PCIY_PMG, ®) == 0) + ifp->if_capabilities |= IFCAP_WOL; + ifp->if_capenable = ifp->if_capabilities; + ifp->if_capenable &= ~(IFCAP_WOL_UCAST | IFCAP_WOL_MCAST); + /* + * Default disable ipv6 tso. + */ + ifp->if_hwassist &= ~CSUM_IP6_TSO; + ifp->if_capenable &= ~IFCAP_TSO6; + + /* Not enable LRO for OS version lower than 11.0 */ +#if OS_VER < VERSION(11,0) + ifp->if_capenable &= ~IFCAP_LRO; +#endif + /* Get station address. */ + RE_LOCK(sc); + re_get_hw_mac_address(sc, eaddr); + RE_UNLOCK(sc); + + /* + * A RealTek chip was detected. Inform the world. + */ + device_printf(dev,"version:%s\n", RE_VERSION); + device_printf(dev,"Ethernet address: %6D\n", eaddr, ":"); + if (HW_DASH_SUPPORT_DASH(sc)) { + device_printf(dev,"DASH status: %s\n", sc->re_dash?"enabled":"disabled"); + if (sc->re_dash) + device_printf(dev,"DASH FW: 0x%08x\n", sc->re_dash_fw_ver); + } + printf("\nThis product is covered by one or more of the following patents: \ + \nUS6,570,884, US6,115,776, and US6,327,625.\n"); + +#if OS_VER < VERSION(6,0) + bcopy(eaddr, (char *)&sc->arpcom.ac_enaddr, ETHER_ADDR_LEN); +#endif + bcopy(eaddr, (char *)&sc->org_mac_addr, ETHER_ADDR_LEN); + + RE_LOCK(sc); + re_phy_power_up(dev); + re_hw_phy_config(sc); + re_clrwol(sc); + + set_rxbufsize(sc); + error =re_alloc_buf(sc); + + if (error) { + RE_UNLOCK(sc); + goto fail; + } + + /* Init descriptors. */ + re_var_init(sc); + + RE_UNLOCK(sc); + + switch(sc->re_device_id) { + case RT_DEVICEID_8126: + ifp->if_baudrate = 50000000000; + break; + case RT_DEVICEID_8125: + case RT_DEVICEID_3000: + ifp->if_baudrate = 25000000000; + break; + case RT_DEVICEID_8169: + case RT_DEVICEID_8169SC: + case RT_DEVICEID_8168: + case RT_DEVICEID_8161: + case RT_DEVICEID_8162: + ifp->if_baudrate = 1000000000; + break; + default: + ifp->if_baudrate = 100000000; + break; + } + IFQ_SET_MAXLEN(&ifp->if_snd, IFQ_MAXLEN); + ifp->if_snd.ifq_drv_maxlen = IFQ_MAXLEN; + IFQ_SET_READY(&ifp->if_snd); + + switch (sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + sc->ifmedia_upd = re_ifmedia_upd_8125; + sc->ifmedia_sts = re_ifmedia_sts_8125; + sc->intr = re_intr_8125; + sc->int_task = re_int_task_8125; + sc->int_task_poll = re_int_task_8125_poll; + sc->hw_start_unlock = re_hw_start_unlock_8125; + break; + default: + sc->ifmedia_upd = re_ifmedia_upd; + sc->ifmedia_sts = re_ifmedia_sts; + sc->intr = re_intr; + sc->int_task = re_int_task; + sc->int_task_poll = re_int_task_poll; + sc->hw_start_unlock = re_hw_start_unlock; + break; + } + + error = re_config_soft_lro(sc); + + if (error) + goto fail; + + /* + * Specify the media types supported by this adapter and register + * callbacks to update media and link information + */ + ifmedia_init(&sc->media, IFM_IMASK, sc->ifmedia_upd, sc->ifmedia_sts); + ifmedia_add(&sc->media, IFM_ETHER | IFM_10_T, 0, NULL); + ifmedia_add(&sc->media, IFM_ETHER | IFM_10_T | IFM_FDX, 0, NULL); + ifmedia_add(&sc->media, IFM_ETHER | IFM_100_TX, 0, NULL); + ifmedia_add(&sc->media, IFM_ETHER | IFM_100_TX | IFM_FDX, 0, NULL); + switch(sc->re_device_id) { + case RT_DEVICEID_8125: + case RT_DEVICEID_3000: + case RT_DEVICEID_8126: + case RT_DEVICEID_8169: + case RT_DEVICEID_8169SC: + case RT_DEVICEID_8168: + case RT_DEVICEID_8161: + case RT_DEVICEID_8162: + ifmedia_add(&sc->media, IFM_ETHER | IFM_1000_T | IFM_FDX, 0, NULL); + break; + default: + break; + } + switch(sc->re_device_id) { + case RT_DEVICEID_8126: + ifmedia_add(&sc->media, IFM_ETHER | IFM_5000_T | IFM_FDX, 0, NULL); + /* FALLTHROUGH */ + case RT_DEVICEID_8125: + case RT_DEVICEID_3000: + ifmedia_add(&sc->media, IFM_ETHER | IFM_2500_T | IFM_FDX, 0, NULL); + break; + default: + break; + } + ifmedia_add(&sc->media, IFM_ETHER | IFM_AUTO, 0, NULL); + ifmedia_set(&sc->media, IFM_ETHER | IFM_AUTO); + sc->media.ifm_media = IFM_ETHER | IFM_AUTO; + +#if OS_VER >= VERSION(13,0) + NET_TASK_INIT(&sc->re_inttask, 0, sc->int_task, sc); + NET_TASK_INIT(&sc->re_inttask_poll, 0, sc->int_task_poll, sc); +#elif OS_VER>=VERSION(7,0) + TASK_INIT(&sc->re_inttask, 0, sc->int_task, sc); + TASK_INIT(&sc->re_inttask_poll, 0, sc->int_task_poll, sc); +#endif + +#if OS_VER>=VERSION(7,0) + sc->re_tq = taskqueue_create_fast("re_taskq", M_WAITOK, + taskqueue_thread_enqueue, &sc->re_tq); + if (sc->re_tq == NULL) { + error = ENOMEM; + goto fail_intr; + } + error = taskqueue_start_threads(&sc->re_tq, 1, PI_NET, "%s taskq", + device_get_nameunit(dev)); + if (error) goto fail_intr; +#endif + +#if OS_VER < VERSION(7,0) + error = bus_setup_intr(dev, sc->re_irq, INTR_TYPE_NET, + sc->intr, sc, &sc->re_intrhand); +#else + error = bus_setup_intr(dev, sc->re_irq, INTR_TYPE_NET|INTR_MPSAFE, + sc->intr, NULL, sc, &sc->re_intrhand); +#endif + + if (error) goto fail_intr; + + RE_LOCK(sc); + sc->ifmedia_upd(ifp); + RE_UNLOCK(sc); + + /* + * Call MI attach routine. + */ + /*#if OS_VER < VERSION(5, 1)*/ +#if OS_VER < VERSION(4,9) + ether_ifattach(ifp, ETHER_BPF_SUPPORTED); +#else + ether_ifattach(ifp, eaddr); +#endif + +fail_intr: + if (error) { + device_printf(dev, "couldn't set up interrupt handler\n"); +#if OS_VER < VERSION(4,9) + ether_ifdetach(ifp, ETHER_BPF_SUPPORTED); +#else + ether_ifdetach(ifp); +#endif + } + +fail: + if (error) + re_detach(dev); + + return(error); +} + +static int re_detach(device_t dev) +{ + struct re_softc *sc; + struct ifnet *ifp; + /*int s;*/ + int i; + int rid; + + /*s = splimp();*/ + + sc = device_get_softc(dev); + + ifp = RE_GET_IFNET(sc); + + re_free_soft_lro(sc); + + /* These should only be active if attach succeeded */ + if (device_is_attached(dev)) { + RE_LOCK(sc); + re_stop(sc); + RE_UNLOCK(sc); +#if OS_VER < VERSION(4,9) + ether_ifdetach(ifp, ETHER_BPF_SUPPORTED); +#else + ether_ifdetach(ifp); +#endif + } + + if (HW_DASH_SUPPORT_DASH(sc) && sc->re_res) { + RE_LOCK(sc); + re_driver_stop(sc); + RE_UNLOCK(sc); + } + +#if OS_VER>=VERSION(7,0) + if (sc->re_tq) { + taskqueue_drain(sc->re_tq, &sc->re_inttask); + taskqueue_drain(sc->re_tq, &sc->re_inttask_poll); + taskqueue_free(sc->re_tq); + } +#endif + + bus_generic_detach(dev); + + sc->driver_detach = 1; + + if (sc->re_intrhand) + bus_teardown_intr(dev, sc->re_irq, sc->re_intrhand); + +#if OS_VER>=VERSION(6,0) + if (ifp) + if_free(ifp); +#endif + + if ((sc->re_if_flags & (RL_FLAG_MSI | RL_FLAG_MSIX)) == 0) + rid = 0; + else + rid = 1; + if (sc->re_irq) { + bus_release_resource(dev, SYS_RES_IRQ, rid, sc->re_irq); + sc->re_irq = NULL; + } + if ((sc->re_if_flags & (RL_FLAG_MSI | RL_FLAG_MSIX)) != 0) + pci_release_msi(dev); + if (sc->re_res_pba) { + rid = PCIR_BAR(4); + bus_release_resource(dev, SYS_RES_MEMORY, rid, sc->re_res_pba); + } + if (sc->re_res) + bus_release_resource(dev, sc->re_res_type, sc->re_res_id, sc->re_res); + + if (HW_DASH_SUPPORT_TYPE_3(sc) && sc->re_dash) + bus_space_unmap(sc->re_cmac_tag, sc->re_mapped_cmac_handle, RE_REGS_SIZE); + + if (sc->re_desc.re_rx_mtag) { + for (i = 0; i < RE_RX_BUF_NUM; i++) { + if (sc->re_desc.rx_buf[i]!=NULL) { + bus_dmamap_sync(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[i], + BUS_DMASYNC_POSTREAD); + bus_dmamap_unload(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[i]); + bus_dmamap_destroy(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[i]); + m_freem(sc->re_desc.rx_buf[i]); + sc->re_desc.rx_buf[i] =NULL; + } + } + bus_dma_tag_destroy(sc->re_desc.re_rx_mtag); + sc->re_desc.re_rx_mtag =0; + } + + if (sc->re_desc.re_tx_mtag) { + for (i = 0; i < RE_TX_BUF_NUM; i++) { + bus_dmamap_destroy(sc->re_desc.re_tx_mtag, + sc->re_desc.re_tx_dmamap[i]); + } + bus_dma_tag_destroy(sc->re_desc.re_tx_mtag); + sc->re_desc.re_tx_mtag =0; + } + + if (sc->re_desc.rx_desc_tag) { + bus_dmamap_sync(sc->re_desc.rx_desc_tag, + sc->re_desc.rx_desc_dmamap, + BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(sc->re_desc.rx_desc_tag, + sc->re_desc.rx_desc_dmamap); + bus_dmamem_free(sc->re_desc.rx_desc_tag, + sc->re_desc.rx_desc, + sc->re_desc.rx_desc_dmamap); + bus_dma_tag_destroy(sc->re_desc.rx_desc_tag); + } + + if (sc->re_desc.tx_desc_tag) { + bus_dmamap_sync(sc->re_desc.tx_desc_tag, + sc->re_desc.tx_desc_dmamap, + BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(sc->re_desc.tx_desc_tag, + sc->re_desc.tx_desc_dmamap); + bus_dmamem_free(sc->re_desc.tx_desc_tag, + sc->re_desc.tx_desc, + sc->re_desc.tx_desc_dmamap); + bus_dma_tag_destroy(sc->re_desc.tx_desc_tag); + } + + /* Unload and free the stats buffer and map */ + + if (sc->re_tally.re_stag) { + if (sc->re_tally.re_stats_addr) + bus_dmamap_unload(sc->re_tally.re_stag, + sc->re_tally.re_smap); + if (sc->re_tally.re_stats) + bus_dmamem_free(sc->re_tally.re_stag, + sc->re_tally.re_stats, sc->re_tally.re_smap); + bus_dma_tag_destroy(sc->re_tally.re_stag); + } + + if (sc->re_parent_tag) { + bus_dma_tag_destroy(sc->re_parent_tag); + } + + /*splx(s);*/ + RE_LOCK_DESTROY(sc); + + return(0); +} + +static void +re_link_state_change(struct ifnet *ifp, int link_state) +{ +#if OS_VER>=VERSION(6,0) + if_link_state_change(ifp, link_state); +#else + ifp->if_link_state = link_state +#endif +} + +/* + * Device suspend routine. Stop the interface and save some PCI + * settings in case the BIOS doesn't restore them properly on + * resume. + */ +static int +re_suspend(device_t dev) +{ + struct re_softc *sc; + struct ifnet *ifp; + + sc = device_get_softc(dev); + RE_LOCK(sc); + ifp = RE_GET_IFNET(sc); + sc->re_link_chg_det = 0; + sc->phy_reg_anlpar = re_get_phy_lp_ability(sc); + re_stop(sc); + re_hw_d3_para(sc); + re_setwol(sc); + if (HW_DASH_SUPPORT_DASH(sc)) + re_driver_stop(sc); + sc->suspended = 1; + sc->link_state = LINK_STATE_UNKNOWN; + re_link_state_change(ifp, sc->link_state); + sc->prohibit_access_reg = 1; + RE_UNLOCK(sc); + + return (0); +} + +/* + * Device resume routine. Restore some PCI settings in case the BIOS + * doesn't, re-enable busmastering, and restart the interface if + * appropriate. + */ +static int +re_resume(device_t dev) +{ + struct re_softc *sc; + struct ifnet *ifp; + + sc = device_get_softc(dev); + + RE_LOCK(sc); + + ifp = RE_GET_IFNET(sc); + + sc->prohibit_access_reg = 0; + + re_exit_oob(sc); + + re_hw_init(sc); + + re_reset(sc); + + re_phy_power_up(dev); + + re_hw_phy_config(sc); + + /* + * Clear WOL matching such that normal Rx filtering + * wouldn't interfere with WOL patterns. + */ + re_clrwol(sc); + + RE_UNLOCK(sc); + + RE_LOCK(sc); + sc->ifmedia_upd(ifp); + sc->suspended = 0; + if (ifp->if_flags & IFF_UP) { + sc->re_link_chg_det = 1; + re_start_timer(sc); + } + RE_UNLOCK(sc); + + return (0); +} + +#endif // !_WIN32 + +static void +re_clear_set_ephy_bit( + struct re_softc *sc, + u_int8_t addr, + u_int16_t clearmask, + u_int16_t setmask +) +{ + u_int16_t EphyValue; + + EphyValue = re_ephy_read(sc, addr); + EphyValue &= ~clearmask; + EphyValue |= setmask; + re_ephy_write(sc, addr, EphyValue); +} + +static void +re_clear_ephy_bit( + struct re_softc *sc, + u_int8_t addr, + u_int16_t mask +) +{ + re_clear_set_ephy_bit(sc, + addr, + mask, + 0 + ); +} + +static void +re_set_ephy_bit( + struct re_softc *sc, + u_int8_t addr, + u_int16_t mask +) +{ + re_clear_set_ephy_bit(sc, + addr, + 0, + mask + ); +} + +static void +re_set_offset70f(struct re_softc *sc, u_int8_t setting) +{ + //Set PCI configuration space offset 0x79 to setting + u_int32_t data32; + + data32 = re_csi_read(sc, 0x870c); + data32 &= 0x00FFFFFF; + data32 |= (setting << 24); + re_csi_write(sc, 0x870c, data32); +} + +static void +re_set_offset79(struct re_softc *sc, u_int8_t setting) +{ + //Set PCI configuration space offset 0x79 to setting + u_int8_t data8; + + if (config_soc_lan) + return; + + setting &= 0x70; + data8 = pci_read_config(sc->dev, 0x79, 1); + data8 &= ~0x70; + data8 |= setting; + pci_write_config(sc->dev, 0x79, data8, 1); +} + +#ifndef _WIN32 + +/* + * Stop all chip I/O so that the kernel's probe routines don't + * get confused by errant DMAs when rebooting. + */ +static int re_shutdown(device_t dev) /* The same with re_stop(sc) */ +{ + struct re_softc *sc; + + sc = device_get_softc(dev); + + RE_LOCK(sc); + sc->re_link_chg_det = 0; + sc->phy_reg_anlpar = re_get_phy_lp_ability(sc); + re_stop(sc); + RE_UNLOCK(sc); + + RE_LOCK(sc); + re_hw_d3_para(sc); + if (s5wol == 0) { + re_phy_power_down(dev); + } else { + struct ifnet *ifp; + ifp = RE_GET_IFNET(sc); + ifp->if_capenable = IFCAP_WOL_MAGIC; + re_setwol(sc); + } + + if (HW_DASH_SUPPORT_DASH(sc)) + re_driver_stop(sc); + RE_UNLOCK(sc); + + return 0; +} + +#endif // !_WIN32 + +static void re_set_eee_lpi_timer(struct re_softc *sc) +{ + struct ifnet *ifp; + + ifp = RE_GET_IFNET(sc); + + switch (sc->re_type) { + case MACFG_68: + case MACFG_69: + case MACFG_74: + case MACFG_75: + case MACFG_76: + re_mac_ocp_write(sc, RE_EEE_TXIDLE_TIMER_8168, ifp->if_mtu + ETHER_HDR_LEN + 0x20); + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + CSR_WRITE_2(sc, RE_EEE_TXIDLE_TIMER_8125, ifp->if_mtu + ETHER_HDR_LEN + 0x20); + break; + default: + break; + } +} + +static void re_set_pfm_patch(struct re_softc *sc, bool enable) +{ + if (!sc->RequiredPfmPatch) + goto exit; + + if (enable) { + re_set_mac_ocp_bit(sc, 0xD3F0, BIT_0); + re_set_mac_ocp_bit(sc, 0xD3F2, BIT_0); + re_set_mac_ocp_bit(sc, 0xE85A, BIT_6); + } else { + re_clear_mac_ocp_bit(sc, 0xD3F0, BIT_0); + re_clear_mac_ocp_bit(sc, 0xD3F2, BIT_0); + re_clear_mac_ocp_bit(sc, 0xE85A, BIT_6); + } + +exit: + return; +} + +#ifdef _WIN32 +void re_hw_start_unlock(struct re_softc *sc) +#else // _WIN32 +static void re_hw_start_unlock(struct re_softc *sc) +#endif // _WIN32 +{ + struct ifnet *ifp; + u_int32_t macver; + u_int8_t data8; + u_int16_t data16 = 0; + u_int32_t Data32; + + ifp = RE_GET_IFNET(sc); + +#ifndef _WIN32 + /* Init descriptors. */ + re_var_init(sc); +#endif // !_WIN32 + + re_enable_cfg9346_write(sc); + + switch(sc->re_type) { + case MACFG_36: + case MACFG_37: + case MACFG_38: + case MACFG_39: + case MACFG_42: + case MACFG_43: + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_53: + case MACFG_54: + case MACFG_55: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + _re_enable_aspm_clkreq_lock(sc, 0); + re_enable_force_clkreq(sc, 0); + break; + } + + /*disable Link Down Power Saving(non-LDPS)*/ + /*CSR_WRITE_1(sc, RE_LDPS, 0x05);*/ + /*ldps= CSR_READ_1(sc, RE_LDPS);*/ + + re_set_eee_lpi_timer(sc); + + CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); + if (interrupt_mitigation) + CSR_WRITE_2(sc, RE_IntrMitigate, 0x5f51); + else + CSR_WRITE_2(sc, RE_IntrMitigate, 0x0000); + + CSR_WRITE_1(sc, RE_MTPS, 0x3f); + + if (sc->re_device_id == RT_DEVICEID_8169 || sc->re_device_id == RT_DEVICEID_8169SC) { + //do nothing + } else { + /* Set the initial TX configuration.*/ + CSR_WRITE_4(sc, RE_TXCFG, RE_TXCFG_CONFIG); + } + + macver = CSR_READ_4(sc, RE_TXCFG) & 0xFC800000; + if (macver == 0x00800000 || macver == 0x04000000 || macver == 0x10000000) { + CSR_WRITE_2(sc, RE_CPlusCmd, 0x0063| ((sc->re_type == MACFG_3 && sc->re_8169_MacVersion==1) ? 0x4008:0)); + } else if (macver == 0x18000000 || macver == 0x98000000) { + CSR_WRITE_2(sc, RE_CPlusCmd, 0x0068); + CSR_WRITE_2(sc, RE_IntrMitigate, 0x0000); + } else if (macver == 0x30000000) { + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + if (ifp->if_mtu > ETHERMTU) { + data8 = pci_read_config(sc->dev, 0x69, 1); + data8 &= ~0x70; + data8 |= 0x28; + pci_write_config(sc->dev, 0x69, data8, 1); + } else { + data8 = pci_read_config(sc->dev, 0x69, 1); + data8 &= ~0x70; + data8 |= 0x58; + pci_write_config(sc->dev, 0x69, data8, 1); + } + } else if (macver == 0x38000000) { + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + if (ifp->if_mtu > ETHERMTU) { + data8 = pci_read_config(sc->dev, 0x69, 1); + data8 &= ~0x70; + data8 |= 0x28; + pci_write_config(sc->dev, 0x69, data8, 1); + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | BIT_0); + } else { + data8 = pci_read_config(sc->dev, 0x69, 1); + data8 &= ~0x70; + data8 |= 0x58; + pci_write_config(sc->dev, 0x69, data8, 1); + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~ BIT_0); + } + } else if (macver == 0x34000000 || macver == 0xB4000000) { + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + } else if (macver == 0x34800000 || macver == 0x24800000) { + if (pci_read_config(sc->dev, 0x81, 1) == 1) { + CSR_WRITE_1(sc, RE_DBG_reg, 0x98); + CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | 0x80); + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | 0x04); + pci_write_config(sc->dev, 0x81, 1, 1); + } + + re_set_offset79(sc, 0x40); + + /*set configuration space offset 0x70f to 0x3f*/ + re_set_offset70f(sc, 0x3F); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + if (sc->re_type == MACFG_14) { + CSR_WRITE_1(sc,RE_CFG1, 0x0f); + + re_ephy_write(sc, 0x03, 0xC2F9); + } else if (sc->re_type == MACFG_15) { + CSR_WRITE_1(sc,RE_CFG1, 0x0f); + + re_ephy_write(sc, 0x01, 0x6FE5); + re_ephy_write(sc, 0x03, 0x07D9); + } else if (sc->re_type == MACFG_17) { + re_ephy_write(sc, 0x06, 0xAF35); + } else if (sc->re_type == MACFG_18) { + CSR_WRITE_1(sc, 0xF5, CSR_READ_1(sc, 0xF5)|0x04); + re_ephy_write(sc, 0x19, 0xEC90); + re_ephy_write(sc, 0x01, 0x6FE5); + re_ephy_write(sc, 0x03, 0x05D9); + re_ephy_write(sc, 0x06, 0xAF35); + } else if (sc->re_type == MACFG_19) { + if (pci_read_config(sc->dev, 0x80, 1)&3) { + re_ephy_write(sc, 0x02, 0x011F); + } + CSR_WRITE_1(sc, 0xF4, CSR_READ_1(sc, 0xF4)|0x08); + CSR_WRITE_1(sc, 0xF5, CSR_READ_1(sc, 0xF5)|0x04); + re_ephy_write(sc, 0x19, 0xEC90); + re_ephy_write(sc, 0x01, 0x6FE5); + re_ephy_write(sc, 0x03, 0x05D9); + re_ephy_write(sc, 0x06, 0xAF35); + } + } else if (macver == 0x3C000000) { + //disable clock request. + pci_write_config(sc->dev, 0x81, 0, 1); + + /*set configuration space offset 0x70f to 0x27*/ + re_set_offset70f(sc, 0x27); + + CSR_WRITE_1(sc, RE_CFG1, CSR_READ_1(sc, RE_CFG1)|0x10); + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + if (sc->re_type == MACFG_24) { + /*set mac register offset 0xd1 to 0xf8*/ + CSR_WRITE_1(sc, RE_DBG_reg, 0xF8); + + data16 = re_ephy_read(sc, 0x02) & ~0x1800; + data16 |= 0x1000; + re_ephy_write(sc, 0x02, data16); + + data16 = re_ephy_read(sc, 0x03) | 0x0002; + re_ephy_write(sc, 0x03, data16); + + data16 = re_ephy_read(sc, 0x06) & ~0x0080; + re_ephy_write(sc, 0x06, data16); + + if (ifp->if_mtu > ETHERMTU) { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | (1 << 1)); //Jumbo_en1 + + re_set_offset79(sc, 0x20); + ifp->if_capenable &= ~IFCAP_HWCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~(1 << 1)); //Jumbo_en1 + re_set_offset79(sc, 0x40); + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + if ((sc->re_type == MACFG_24) || (sc->re_type == MACFG_25) || (sc->re_type == MACFG_26)) + ifp->if_hwassist |= CSUM_TCP | CSUM_UDP; + else + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) |RL_RxChkSum); + } + } + } else if (sc->re_type == MACFG_25) { + data16 = re_ephy_read(sc, 0x01) | 0x0001; + re_ephy_write(sc, 0x01, data16); + + data16 = re_ephy_read(sc, 0x03) & ~0x0620; + data16 |= 0x0220; + re_ephy_write(sc, 0x03, data16); + + if (ifp->if_mtu > ETHERMTU) { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | (1<<1)); //Jumbo_en1 + + re_set_offset79(sc, 0x20); + ifp->if_capenable &= ~IFCAP_HWCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~(1<<1)); //Jumbo_en1 + re_set_offset79(sc, 0x40); + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + if ((sc->re_type == MACFG_24) || (sc->re_type == MACFG_25) || (sc->re_type == MACFG_26)) + ifp->if_hwassist |= CSUM_TCP | CSUM_UDP; + else + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) |RL_RxChkSum); + } + } + } else if (sc->re_type == MACFG_26) { + if (ifp->if_mtu > ETHERMTU) { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | (1<<1)); //Jumbo_en1 + + re_set_offset79(sc, 0x20); + ifp->if_capenable &= ~IFCAP_HWCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~(1<<1)); //Jumbo_en1 + re_set_offset79(sc, 0x40); + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + if ((sc->re_type == MACFG_24) || (sc->re_type == MACFG_25) || (sc->re_type == MACFG_26)) + ifp->if_hwassist |= CSUM_TCP | CSUM_UDP; + else + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) |RL_RxChkSum); + } + } + } + } else if (macver == 0x3C800000) { + //disable clock request. + pci_write_config(sc->dev, 0x81, 0x00, 1); + + /*set configuration space offset 0x70f to 0x27*/ + re_set_offset70f(sc, 0x27); + + re_eri_write(sc, 0x1EC, 1, 0x07, ERIAR_ASF); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + if (sc->re_type == MACFG_28) + CSR_WRITE_1(sc, 0xD1, 0x20); + + if (ifp->if_mtu > ETHERMTU) { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | (1<<1)); //Jumbo_en1 + + re_set_offset79(sc, 0x20); + ifp->if_capenable &= ~IFCAP_HWCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~(1<<1)); //Jumbo_en1 + re_set_offset79(sc, 0x40); + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) |RL_RxChkSum); + } + } + } else if (macver == 0x28000000) { + //disable clock request. + pci_write_config(sc->dev, 0x81, 0x00, 1); + + /*set configuration space offset 0x70f to 0x13*/ + re_set_offset70f(sc, 0x27); + + CSR_WRITE_1(sc, RE_TDFNR, 0x8); + + CSR_WRITE_1(sc, 0xD1, CSR_READ_1(sc, 0xD1) | 0x02); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + CSR_WRITE_1(sc, RE_DBG_reg, CSR_READ_1(sc, RE_DBG_reg)|0x82); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + + if (ifp->if_mtu > ETHERMTU) { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | (1<<1)); //Jumbo_en1 + + re_set_offset79(sc, 0x20); + ifp->if_capenable &= ~IFCAP_HWCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~(1<<1)); //Jumbo_en1 + re_set_offset79(sc, 0x40); + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) |RL_RxChkSum); + } + } + + if (sc->re_type == MACFG_31) { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~(1<<4)); + + re_ephy_write(sc, 0x01, 0x7C7F); + re_ephy_write(sc, 0x02, 0x011F); + re_ephy_write(sc, 0x06, 0xB271); + re_ephy_write(sc, 0x07, 0xCE00); + } else if (sc->re_type == MACFG_32) { + re_ephy_write(sc, 0x01, 0x7C7D); + re_ephy_write(sc, 0x02, 0x091F); + re_ephy_write(sc, 0x03, 0xC5BA); + re_ephy_write(sc, 0x06, 0xB279); + re_ephy_write(sc, 0x07, 0xAF00); + re_ephy_write(sc, 0x1E, 0xB8EB); + } else if (sc->re_type == MACFG_33) { + CSR_WRITE_1(sc, RE_CFG1, CSR_READ_1(sc, RE_CFG1)|0x10); + + re_ephy_write(sc, 0x01, 0x6C7F); + re_ephy_write(sc, 0x02, 0x011F); + re_clear_set_ephy_bit(sc, + 0x03, + 0xFFF0, + 0x01B0 + ); + re_ephy_write(sc, 0x1A, 0x0546); + re_ephy_write(sc, 0x1C, 0x80C4); + re_ephy_write(sc, 0x1D, 0x78E5); + re_ephy_write(sc, 0x0A, 0x8100); + } + } else if (macver == 0x28800000) { + /* disable clock request. */ + pci_write_config(sc->dev, 0x81, 0x00, 1); + + /*set configuration space offset 0x70f to 0x17*/ + re_set_offset70f(sc, 0x27); + + CSR_WRITE_1(sc, RE_TDFNR, 0x8); + if (sc->re_dash && + (sc->re_type == MACFG_63 || sc->re_type == MACFG_64)) + CSR_WRITE_1(sc, RE_TDFNR, 0x1); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + CSR_WRITE_1(sc, RE_DBG_reg, CSR_READ_1(sc, RE_DBG_reg)|0x82); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + + if (ifp->if_mtu > ETHERMTU) { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | (1<<1)); //Jumbo_en1 + + re_set_offset79(sc, 0x20); + ifp->if_capenable &= ~IFCAP_HWCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); //Jumbo_en0 + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~(1<<1)); //Jumbo_en1 + re_set_offset79(sc, 0x40); + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) |RL_RxChkSum); + } + } + + if (sc->re_type == MACFG_65 || sc->re_type == MACFG_66) { + re_set_ephy_bit(sc, 0x0B, (BIT_3 | BIT_6)); + + re_clear_set_ephy_bit(sc, + 0x19, + BIT_5, + (BIT_4 | BIT_6) + ); + + re_clear_set_ephy_bit(sc, + 0x0C, + BIT_8, + BIT_5 + ); + + re_clear_ephy_bit(sc, 0x10, (BIT_2)); + } + } else if (macver == 0x2C000000) { + /* disable clock request. */ + pci_write_config(sc->dev, 0x81, 0x00, 1); + + /*set configuration space offset 0x70f to 0x20*/ + re_set_offset70f(sc, 0x27); + + CSR_WRITE_1(sc, 0xF3, CSR_READ_1(sc, 0xF3)|0x20); + CSR_WRITE_1(sc, 0xF3, CSR_READ_1(sc, 0xF3)& ~0x20); + + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0)|0xC0); + CSR_WRITE_1(sc, 0xF1, CSR_READ_1(sc, 0xF1)|0x73); + CSR_WRITE_1(sc, RE_CFG5, (CSR_READ_1(sc, RE_CFG5)& ~0x08)); + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + CSR_WRITE_1(sc, RE_TDFNR, 0x8); + + if (sc->re_type == MACFG_36 || sc->re_type == MACFG_37) { + /* set EPHY registers */ + data16 = re_ephy_read(sc, 0x00) & ~0x0200; + data16 |= 0x0100; + re_ephy_write(sc, 0x00, data16); + + data16 = re_ephy_read(sc, 0x00); + data16 |= 0x0004; + re_ephy_write(sc, 0x00, data16); + + data16 = re_ephy_read(sc, 0x06) & ~0x0002; + data16 |= 0x0001; + re_ephy_write(sc, 0x06, data16); + + data16 = re_ephy_read(sc, 0x06); + data16 |= 0x0030; + re_ephy_write(sc, 0x06, data16); + + data16 = re_ephy_read(sc, 0x07); + data16 |= 0x2000; + re_ephy_write(sc, 0x07, data16); + + data16 = re_ephy_read(sc, 0x00); + data16 |= 0x0020; + re_ephy_write(sc, 0x00, data16); + + data16 = re_ephy_read(sc, 0x03) & ~0x5800; + data16 |= 0x2000; + re_ephy_write(sc, 0x03, data16); + + data16 = re_ephy_read(sc, 0x03); + data16 |= 0x0001; + re_ephy_write(sc, 0x03, data16); + + data16 = re_ephy_read(sc, 0x01) & ~0x0800; + data16 |= 0x1000; + re_ephy_write(sc, 0x01, data16); + + data16 = re_ephy_read(sc, 0x07); + data16 |= 0x4000; + re_ephy_write(sc, 0x07, data16); + + data16 = re_ephy_read(sc, 0x1E); + data16 |= 0x2000; + re_ephy_write(sc, 0x1E, data16); + + re_ephy_write(sc, 0x19, 0xFE6C); + + data16 = re_ephy_read(sc, 0x0A); + data16 |= 0x0040; + re_ephy_write(sc, 0x0A, data16); + + if (ifp->if_mtu > ETHERMTU) { + CSR_WRITE_1 (sc, RE_MTPS, 0x24); + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) | BIT_2); + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) |0x01); + re_set_offset79(sc, 0x20); + ifp->if_capenable &= ~IFCAP_HWCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) & ~RL_RxChkSum); + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + CSR_WRITE_1 (sc, RE_MTPS, 0x0c); + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_2); + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) & ~0x01); + re_set_offset79(sc, 0x40); + + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + CSR_WRITE_2 (sc, RE_CPlusCmd,CSR_READ_2(sc, RE_CPlusCmd) |RL_RxChkSum); + } + } + } + } else if (macver == 0x2C800000) { + /* disable clock request. */ + pci_write_config(sc->dev, 0x81, 0x00, 1); + + /*set configuration space offset 0x70f to 0x27*/ + re_set_offset70f(sc, 0x27); + + re_set_offset79(sc, 0x40); + + CSR_WRITE_1(sc, RE_TDFNR, 0x8); + + re_eri_write(sc, 0xC0, 2, 0x0000, ERIAR_ExGMAC); + re_eri_write(sc, 0xB8, 4, 0x00000000, ERIAR_ExGMAC); + re_eri_write(sc, 0xC8, 4, 0x00100002, ERIAR_ExGMAC); + re_eri_write(sc, 0xE8, 4, 0x00100006, ERIAR_ExGMAC); + Data32 = re_eri_read(sc, 0xdc, 4, ERIAR_ExGMAC); + Data32 &= ~BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + Data32 |= BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + + Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); + Data32 |= (BIT_8 | BIT_9 | BIT_10 | BIT_11 | BIT_12); + re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); + if (sc ->re_type == MACFG_39) { + Data32 = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + Data32 |= BIT_4; + re_eri_write(sc, 0x1B0, 4, Data32, ERIAR_ExGMAC); + re_eri_write(sc, 0xCC, 4, 0x00000050, ERIAR_ExGMAC); + re_eri_write(sc, 0xD0, 4, 0x07ff0060, ERIAR_ExGMAC); + } + + CSR_WRITE_4(sc, RE_TXCFG, CSR_READ_4(sc, RE_TXCFG) |BIT_7); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); + CSR_WRITE_1(sc, 0x1B, CSR_READ_1(sc, 0x1B) & ~0x07); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + + if (sc ->re_type == MACFG_38) { + CSR_WRITE_4(sc, 0xB0, 0xEE480010); + CSR_WRITE_1(sc, 0x1A, CSR_READ_1(sc, 0x1A) & ~(BIT_2 |BIT_3)); + re_eri_write(sc, 0x1DC, 1, 0x64, ERIAR_ExGMAC); + + re_ephy_write(sc, 0x06, 0xF020); + re_ephy_write(sc, 0x07, 0x01FF); + re_ephy_write(sc, 0x00, 0x5027); + re_ephy_write(sc, 0x01, 0x0003); + re_ephy_write(sc, 0x02, 0x2D16); + re_ephy_write(sc, 0x03, 0x6D49); + re_ephy_write(sc, 0x08, 0x0006); + re_ephy_write(sc, 0x0A, 0x00C8); + } + + data16 = re_ephy_read(sc, 0x09); + data16 |= BIT_7; + re_ephy_write(sc, 0x09, data16); + + data16 = re_ephy_read(sc, 0x19); + data16 |= (BIT_2 | BIT_5 | BIT_9); + re_ephy_write(sc, 0x19, data16); + + re_set_ephy_bit(sc, 0x00, BIT_3); + re_clear_set_ephy_bit(sc, + 0x0C, + (BIT_13|BIT_12|BIT_11|BIT_10|BIT_8|BIT_7|BIT_6|BIT_5|BIT_4), + BIT_9 + ); + + CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | BIT_5); + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_6); + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_6); + + if (ifp->if_mtu > ETHERMTU) + CSR_WRITE_1 (sc, RE_MTPS, 0x27); + ifp->if_capenable &= ~IFCAP_HWCSUM; + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else if (macver == 0x24000000) { + if (pci_read_config(sc->dev, 0x81, 1)==1) { + CSR_WRITE_1(sc, RE_DBG_reg, 0x98); + CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | 0x80); + CSR_WRITE_1(sc, RE_CFG4, CSR_READ_1(sc, RE_CFG4) | 0x04); + pci_write_config(sc->dev, 0x81, 1, 1); + } + re_set_offset79(sc, 0x40); + + /*set configuration space offset 0x70f to 0x3F*/ + re_set_offset70f(sc, 0x3F); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + + re_ephy_write(sc, 0x06, 0xAF25); + re_ephy_write(sc, 0x07, 0x8E68); + } else if (macver == 0x40800000) { + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | 0x80); + CSR_WRITE_1(sc, 0xF1, CSR_READ_1(sc, 0xF1) | 0x28); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) | 0x0C); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | 0x40); + CSR_WRITE_2(sc, 0xE0, CSR_READ_2(sc, 0xE0) & ~0xDF9C); + CSR_WRITE_1(sc, 0xD1, CSR_READ_1(sc, 0xD1) | 0x02); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + if (sc->re_type == MACFG_42) { + /* set EPHY registers */ + re_set_ephy_bit(sc, 0x07, BIT_14); + re_set_ephy_bit(sc, 0x19, BIT_9); + re_set_ephy_bit(sc, 0x19, BIT_5); + re_set_ephy_bit(sc, 0x1E, BIT_13); + re_set_ephy_bit(sc, 0x03, BIT_0); + re_set_ephy_bit(sc, 0x19, BIT_8); + re_set_ephy_bit(sc, 0x19, BIT_2); + re_set_ephy_bit(sc, 0x0A, BIT_5); + re_set_ephy_bit(sc, 0x05, BIT_13); + } + if (sc->re_type == MACFG_43) { + re_set_ephy_bit(sc, 0x07, BIT_14); + re_set_ephy_bit(sc, 0x19, BIT_9); + re_set_ephy_bit(sc, 0x19, BIT_5); + re_set_ephy_bit(sc, 0x1E, BIT_13); + re_set_ephy_bit(sc, 0x03, BIT_0); + re_set_ephy_bit(sc, 0x19, BIT_8); + re_set_ephy_bit(sc, 0x19, BIT_2); + re_set_ephy_bit(sc, 0x0A, BIT_5); + re_set_ephy_bit(sc, 0x1E, BIT_15); + re_set_ephy_bit(sc, 0x05, BIT_13); + } + } else if (macver == 0x44000000) { + CSR_WRITE_2(sc, 0xE0, CSR_READ_2(sc, 0xE0) & ~0xDF9C); + + re_eri_write(sc, 0xC8, 4, 0x00000002, ERIAR_ExGMAC); + re_eri_write(sc, 0xE8, 4, 0x00000006, ERIAR_ExGMAC); + + Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); + Data32 |= BIT_11 | BIT_10; + re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + /* set EPHY registers */ + re_ephy_write(sc, 0x19, 0xFF64); + + if (ifp->if_mtu > ETHERMTU) + CSR_WRITE_1 (sc, RE_MTPS, 0x27); + } else if (macver == 0x48000000) { + /*set configuration space offset 0x70f to 0x27*/ + re_set_offset70f(sc, 0x27); + + re_set_offset79(sc, 0x40); + + CSR_WRITE_1(sc, RE_TDFNR, 0x8); + + Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); + Data32 |= (BIT_8 | BIT_9 | BIT_10 | BIT_11 | BIT_12); + re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); + re_eri_write(sc, 0xC0, 2, 0x0000, ERIAR_ExGMAC); + re_eri_write(sc, 0xB8, 4, 0x00000000, ERIAR_ExGMAC); + re_eri_write(sc, 0xC8, 4, 0x00100002, ERIAR_ExGMAC); + re_eri_write(sc, 0xE8, 4, 0x00100006, ERIAR_ExGMAC); + Data32 = re_eri_read(sc, 0xdc, 4, ERIAR_ExGMAC); + Data32 &= ~BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + Data32 |= BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + Data32 = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + Data32 |= BIT_4; + re_eri_write(sc, 0x1B0, 4, Data32, ERIAR_ExGMAC); + re_eri_write(sc, 0xCC, 4, 0x00000050, ERIAR_ExGMAC); + re_eri_write(sc, 0xD0, 4, 0x00000060, ERIAR_ExGMAC); + Data32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); + Data32 |= BIT_4; + re_eri_write(sc, 0x1D0, 4, Data32, ERIAR_ExGMAC); + + CSR_WRITE_4(sc, RE_TXCFG, CSR_READ_4(sc, RE_TXCFG) | BIT_7); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); + CSR_WRITE_1(sc, 0x1B, CSR_READ_1(sc, 0x1B) & ~0x07); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + + if (sc->re_type == MACFG_50) { + data16 = re_ephy_read(sc, 0x06); + data16 &= ~(BIT_7 | BIT_6); + data16 |= BIT_5; + re_ephy_write(sc, 0x06, data16); + + data16 = re_ephy_read(sc, 0x08); + data16 &= ~BIT_0; + data16 |= BIT_1; + re_ephy_write(sc, 0x08, data16); + } + + data16 = re_ephy_read(sc, 0x09); + data16 |= BIT_7; + re_ephy_write(sc, 0x09, data16); + + data16 = re_ephy_read(sc, 0x19); + data16 |= (BIT_2 | BIT_5 | BIT_9); + re_ephy_write(sc, 0x19, data16); + + re_set_ephy_bit(sc, 0x00, BIT_3); + re_clear_set_ephy_bit(sc, + 0x0C, + (BIT_13|BIT_12|BIT_11|BIT_10|BIT_8|BIT_7|BIT_6|BIT_5|BIT_4), + BIT_9 + ); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_6); + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_6); + + if (ifp->if_mtu > ETHERMTU) + CSR_WRITE_1 (sc, RE_MTPS, 0x27); + + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~IFCAP_HWCSUM; + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + } + } + } else if (macver == 0x48800000) { + /*set configuration space offset 0x70f to 0x27*/ + re_set_offset70f(sc, 0x27); + + re_set_offset79(sc, 0x40); + + CSR_WRITE_1(sc, RE_TDFNR, 0x8); + + Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); + Data32 |= BIT_11 | BIT_10; + re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); + re_eri_write(sc, 0xC0, 2, 0x0000, ERIAR_ExGMAC); + re_eri_write(sc, 0xB8, 4, 0x00000000, ERIAR_ExGMAC); + re_eri_write(sc, 0xC8, 4, 0x00100002, ERIAR_ExGMAC); + re_eri_write(sc, 0xE8, 4, 0x00100006, ERIAR_ExGMAC); + Data32 = re_eri_read(sc, 0xdc, 4, ERIAR_ExGMAC); + Data32 &= ~BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + Data32 |= BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + Data32 = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + Data32 |= BIT_4; + re_eri_write(sc, 0x1B0, 4, Data32, ERIAR_ExGMAC); + re_eri_write(sc, 0xCC, 4, 0x00000050, ERIAR_ExGMAC); + re_eri_write(sc, 0xD0, 4, 0x00000060, ERIAR_ExGMAC); + Data32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); + Data32 |= BIT_4; + re_eri_write(sc, 0x1D0, 4, Data32, ERIAR_ExGMAC); + + CSR_WRITE_4(sc, RE_TXCFG, CSR_READ_4(sc, RE_TXCFG) | BIT_7); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); + //CSR_WRITE_1(sc, 0x1B, CSR_READ_1(sc, 0x1B) & ~0x07); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + + data16 = re_ephy_read(sc, 0x06); + data16 &= ~(BIT_7 | BIT_6); + data16 |= BIT_5; + re_ephy_write(sc, 0x06, data16); + + re_ephy_write(sc, 0x0f, 0x5200); + + data16 = re_ephy_read(sc, 0x1e); + data16 |= BIT_14; + re_ephy_write(sc, 0x1e, data16); + + data16 = re_ephy_read(sc, 0x19); + data16 |= (BIT_2 | BIT_5 | BIT_9); + re_ephy_write(sc, 0x19, data16); + + re_set_ephy_bit(sc, 0x00, BIT_3); + re_clear_set_ephy_bit(sc, + 0x0C, + (BIT_13|BIT_12|BIT_11|BIT_10|BIT_8|BIT_7|BIT_6|BIT_5|BIT_4), + BIT_9 + ); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_6); + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_6); + + if (ifp->if_mtu > ETHERMTU) + CSR_WRITE_1 (sc, RE_MTPS, 0x27); + + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~IFCAP_HWCSUM; + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + } + } + } else if (macver == 0x44800000) { + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | 0x80); + CSR_WRITE_1(sc, 0xF1, CSR_READ_1(sc, 0xF1) | 0x28); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) | 0x0C); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | 0x40); + CSR_WRITE_2(sc, 0xE0, CSR_READ_2(sc, 0xE0) & ~0xDF9C); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + } else if (macver == 0x4C000000 || macver == 0x50800000 || + macver == 0x5C800000 || macver == 0x54000000 || + macver == 0x6C000000) { + CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | BIT_5); + + if (sc->re_type == MACFG_59) { + re_mac_ocp_write(sc, 0xD3C0, 0x0B00); + re_mac_ocp_write(sc, 0xD3C2, 0x0000); + } + + if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || + sc->re_type == MACFG_76) { + re_mac_ocp_write(sc, 0xD400, re_mac_ocp_read(sc, 0xD400) & ~(BIT_0)); + + data16 = re_mac_ocp_read(sc, 0xE63E); + data16 &= ~(BIT_3 | BIT_2 | BIT_1); + re_mac_ocp_write(sc, 0xE63E, data16); + data16 |= (BIT_0); + re_mac_ocp_write(sc, 0xE63E, data16); + data16 &= ~(BIT_0); + re_mac_ocp_write(sc, 0xE63E, data16); + re_mac_ocp_write(sc, 0xC094, 0x0); + re_mac_ocp_write(sc, 0xC09E, 0x0); + + re_mac_ocp_write(sc, 0xE098, 0x0AA2); + } + + /*set configuration space offset 0x70f to 0x17*/ + re_set_offset70f(sc, 0x27); + + re_set_offset79(sc, 0x40); + + CSR_WRITE_1(sc, RE_TDFNR, 0x4); + + if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57) { + Data32 = re_csi_read(sc, 0x2710); + Data32 &=0xFFFF0FFF; + Data32 |= (0x04 << 12); + re_csi_write(sc, 0x2710, Data32); + } + + Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); + Data32 |= (BIT_7 | BIT_8 | BIT_9 | BIT_10 | BIT_11 | BIT_12); + re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); + + if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || + sc->re_type == MACFG_76) { + Data32 = re_eri_read(sc, 0xDC, 4, ERIAR_ExGMAC); + Data32 |= (BIT_2| BIT_3 | BIT_4); + re_eri_write(sc, 0xDC, 4, Data32, ERIAR_ExGMAC); + } + + re_eri_write(sc, 0xC8, 4, 0x00080002, ERIAR_ExGMAC); + re_eri_write(sc, 0xCC, 1, 0x38, ERIAR_ExGMAC); + re_eri_write(sc, 0xD0, 1, 0x48, ERIAR_ExGMAC); + re_eri_write(sc, 0xE8, 4, 0x00100006, ERIAR_ExGMAC); + + if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || + sc->re_type == MACFG_76) { + re_mac_ocp_write(sc, 0xE054, 0x0000); + + Data32 = re_eri_read(sc, 0x5F0, 4, ERIAR_ExGMAC); + Data32 &= ~(BIT_11 | BIT_10 | BIT_9 | BIT_8 | BIT_3 | BIT_2 | BIT_1 | BIT_0); + re_eri_write(sc, 0x5F0, 4, Data32, ERIAR_ExGMAC); + } else { + re_eri_write(sc, 0x5F0, 2, 0x4F87, ERIAR_ExGMAC); + } + + Data32 = re_eri_read(sc, 0xdc, 4, ERIAR_ExGMAC); + Data32 &= ~BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + Data32 |= BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + + if (sc->re_type == MACFG_74 || sc->re_type == MACFG_75) + re_set_mac_ocp_bit(sc, 0xD438, (BIT_1 | BIT_0)); + + Data32 = re_eri_read(sc, 0x2FC, 4, ERIAR_ExGMAC); + Data32 &= ~(BIT_0 | BIT_1 | BIT_2); + Data32 |= (BIT_0); + re_eri_write(sc, 0x2FC, 4, Data32, ERIAR_ExGMAC); + + Data32 = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + Data32 &= ~BIT_12; + re_eri_write(sc, 0x1B0, 4, Data32, ERIAR_ExGMAC); + + CSR_WRITE_4(sc, RE_TXCFG, CSR_READ_4(sc, RE_TXCFG) | BIT_7); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); + CSR_WRITE_1(sc, 0x1B, CSR_READ_1(sc, 0x1B) & ~0x07); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + + if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57) { + re_clear_ephy_bit(sc, 0x00, BIT_3); + re_clear_set_ephy_bit(sc, + 0x0C, + (BIT_13|BIT_12|BIT_10|BIT_9|BIT_8|BIT_7|BIT_6|BIT_4), + (BIT_11|BIT_5) + ); + re_set_ephy_bit(sc, 0x1E, BIT_0); + re_clear_ephy_bit(sc, 0x19, BIT_15); + } else if (sc->re_type == MACFG_58) { + re_set_ephy_bit(sc, 0x00, (BIT_3)); + re_clear_set_ephy_bit(sc, + 0x0C, + (BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4), + BIT_9 + ); + } else if (sc->re_type == MACFG_59) { + re_clear_ephy_bit(sc, 0x00, BIT_3); + re_clear_set_ephy_bit(sc, + 0x0C, + (BIT_13 | BIT_12 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_4), + (BIT_5 | BIT_11) + ); + + re_set_ephy_bit(sc, 0x1E, BIT_0); + re_clear_ephy_bit(sc, 0x19, BIT_15); + re_ephy_write(sc, 0x19, 0x7C00); + re_ephy_write(sc, 0x1E, 0x20EB); + re_ephy_write(sc, 0x0D, 0x1666); + re_ephy_write(sc, 0x00, 0x10A3); + + re_ephy_write(sc, 0x06, 0xF050); + + re_set_ephy_bit(sc, 0x04, BIT_4); + re_clear_ephy_bit(sc, 0x1D, BIT_14); + } else if (sc->re_type == MACFG_60) { + re_clear_ephy_bit(sc, 0x00, BIT_3); + re_clear_set_ephy_bit(sc, + 0x0C, + (BIT_13 | BIT_12 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_4), + (BIT_5 | BIT_11) + ); + re_set_ephy_bit(sc, 0x1E, BIT_0); + re_clear_ephy_bit(sc, 0x19, BIT_15); + + re_clear_ephy_bit(sc, 0x19, (BIT_5 | BIT_0)); + + re_set_ephy_bit(sc, 0x1E, BIT_13); + re_clear_ephy_bit(sc, 0x0D, BIT_8); + re_set_ephy_bit(sc, 0x0D, BIT_9); + re_set_ephy_bit(sc, 0x00, BIT_7); + + re_set_ephy_bit(sc, 0x06, BIT_4); + + re_set_ephy_bit(sc, 0x04, BIT_4); + re_set_ephy_bit(sc, 0x1D, BIT_14); + } else if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_76) { + re_clear_ephy_bit(sc, 0x1E, BIT_11); + + re_set_ephy_bit(sc, 0x1E, BIT_0); + re_set_ephy_bit(sc, 0x1D, BIT_11); + + re_ephy_write(sc, 0x05, 0x2089); + re_ephy_write(sc, 0x06, 0x5881); + + re_ephy_write(sc, 0x04, 0x854A); + re_ephy_write(sc, 0x01, 0x068B); + } else if (sc->re_type == MACFG_74) { + re_clear_mac_ocp_bit(sc, 0xD438, BIT_2); + + re_clear_ephy_bit(sc, 0x24, BIT_9); + re_clear_mac_ocp_bit(sc, 0xDE28, (BIT_1 | BIT_0)); + + re_set_mac_ocp_bit(sc, 0xD438, BIT_2); + } else if (sc->re_type == MACFG_75) { + re_clear_mac_ocp_bit(sc, 0xD438, BIT_2); + + re_clear_mac_ocp_bit(sc, 0xDE28, (BIT_1 | BIT_0)); + + re_set_mac_ocp_bit(sc, 0xD438, BIT_2); + } + + if (sc->re_type == MACFG_60) { + data16 = re_mac_ocp_read(sc, 0xD3C0); + data16 &= 0xF000; + data16 |= 0x0FFF; + re_mac_ocp_write(sc, 0xD3C0, data16); + + data16 = re_mac_ocp_read(sc, 0xD3C2); + data16 &= 0xFF00; + re_mac_ocp_write(sc, 0xD3C2, data16); + + data16 = re_mac_ocp_read(sc, 0xD3C4); + data16 |= (BIT_0); + re_mac_ocp_write(sc, 0xD3C4, data16); + } else if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_76) { + if (sc->RequireAdjustUpsTxLinkPulseTiming) { + data16 = re_mac_ocp_read(sc, 0xD412); + data16 &= ~(0x0FFF); + data16 |= sc->SwrCnt1msIni; + re_mac_ocp_write(sc, 0xD412, data16); + } + + data16 = re_mac_ocp_read(sc, 0xE056); + data16 &= ~(BIT_7 | BIT_6 | BIT_5 | BIT_4); + re_mac_ocp_write(sc, 0xE056, data16); + + data16 = re_mac_ocp_read(sc, 0xE052); + data16 &= ~(BIT_15 | BIT_14 | BIT_13 | BIT_3); + data16 |= BIT_15; + re_mac_ocp_write(sc, 0xE052, data16); + + data16 = re_mac_ocp_read(sc, 0xD420); + data16 &= ~(BIT_11 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0); + data16 |= 0x45F; + re_mac_ocp_write(sc, 0xD420, data16); + + data16 = re_mac_ocp_read(sc, 0xE0D6); + data16 &= ~(BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0); + data16 |= 0x17F; + re_mac_ocp_write(sc, 0xE0D6, data16); + } + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_6); + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_6); + + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~BIT_3); + + if (ifp->if_mtu > ETHERMTU) + CSR_WRITE_1 (sc, RE_MTPS, 0x27); + + if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || + sc->re_type == MACFG_58 || sc->re_type == MACFG_59) { + re_mac_ocp_write(sc, 0xC140, 0xFFFF); + } else if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || + sc->re_type == MACFG_76) { + re_mac_ocp_write(sc, 0xC140, 0xFFFF); + re_mac_ocp_write(sc, 0xC142, 0xFFFF); + } + + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~IFCAP_HWCSUM; + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + } + } + } else if (macver == 0x50000000) { + /*set configuration space offset 0x70f to 0x17*/ + re_set_offset70f(sc, 0x27); + + re_set_offset79(sc, 0x40); + + Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); + Data32 |= BIT_7 | BIT_8 | BIT_9 | BIT_10 | BIT_11 | BIT_12; + re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); + + re_eri_write(sc, 0xC8, 4, 0x00080002, ERIAR_ExGMAC); + re_eri_write(sc, 0xCC, 1, 0x2F, ERIAR_ExGMAC); + re_eri_write(sc, 0xD0, 1, 0x5F, ERIAR_ExGMAC); + re_eri_write(sc, 0xE8, 4, 0x00100006, ERIAR_ExGMAC); + + if (sc->re_type == MACFG_62 || sc->re_type == MACFG_67) { + OOB_mutex_lock(sc); + re_eri_write(sc, 0x5F0, 4, 0x4F87, ERIAR_ExGMAC); + OOB_mutex_unlock(sc); + } + + Data32 = re_eri_read(sc, 0xdc, 4, ERIAR_ExGMAC); + Data32 &= ~BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + Data32 |= BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + + Data32 = re_eri_read(sc, 0x2FC, 4, ERIAR_ExGMAC); + Data32 &= ~(BIT_0 | BIT_1 | BIT_2); + Data32 |= (BIT_0 | BIT_1); + re_eri_write(sc, 0x2FC, 4, Data32, ERIAR_ExGMAC); + + Data32 = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + Data32 &= ~BIT_12; + re_eri_write(sc, 0x1B0, 4, Data32, ERIAR_ExGMAC); + + CSR_WRITE_4(sc, RE_TXCFG, CSR_READ_4(sc, RE_TXCFG) | BIT_7); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); + CSR_WRITE_1(sc, 0x1B, CSR_READ_1(sc, 0x1B) & ~0x07); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + + if (sc->re_type == MACFG_61) { + re_ephy_write(sc, 0x00, 0x10AB); + re_ephy_write(sc, 0x06, 0xF030); + re_ephy_write(sc, 0x08, 0x2006); + re_ephy_write(sc, 0x0D, 0x1666); + re_clear_ephy_bit(sc, 0x0C, (BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4)); + } else if (sc->re_type == MACFG_62) { + re_ephy_write(sc, 0x00, 0x10A3); + re_ephy_write(sc, 0x19, 0xFC00); + re_ephy_write(sc, 0x1E, 0x20EA); + } else if (sc->re_type == MACFG_67) { + re_ephy_write(sc, 0x00, 0x10AB); + re_ephy_write(sc, 0x19, 0xFC00); + re_ephy_write(sc, 0x1E, 0x20EB); + re_ephy_write(sc, 0x0D, 0x1666); + re_clear_ephy_bit(sc, 0x0B, BIT_0); + re_set_ephy_bit(sc, 0x1D, BIT_14); + re_clear_set_ephy_bit(sc, + 0x0C, + BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_8 | BIT_7 | BIT_6 | BIT_5, + BIT_9 | BIT_4 + ); + } + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_6); + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_6); + + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~BIT_3); + + if (ifp->if_mtu > ETHERMTU) + CSR_WRITE_1 (sc, RE_MTPS, 0x27); + + if (sc->re_type == MACFG_67) { + data16 = re_mac_ocp_read(sc, 0xD3E2); + data16 &= 0xF000; + data16 |= 0xAFD; + re_mac_ocp_write(sc, 0xD3E2, data16); + + data16 = re_mac_ocp_read(sc, 0xD3E4); + data16 &= 0xFF00; + re_mac_ocp_write(sc, 0xD3E4, data16); + + data16 = re_mac_ocp_read(sc, 0xE860); + data16 |= BIT_7; + re_mac_ocp_write(sc, 0xE860, data16); + } + + re_mac_ocp_write(sc, 0xC140, 0xFFFF); + re_mac_ocp_write(sc, 0xC142, 0xFFFF); + + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~IFCAP_HWCSUM; + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + } + } + } else if (macver == 0x54800000) { + re_mac_ocp_write(sc, 0xE098, 0xC302); + + re_mac_ocp_write(sc, 0xD400, re_mac_ocp_read(sc, 0xD400) & ~(BIT_0)); + + if (sc->RequireAdjustUpsTxLinkPulseTiming) { + data16 = re_mac_ocp_read(sc, 0xD412); + data16 &= ~(0x0FFF); + data16 |= sc->SwrCnt1msIni; + re_mac_ocp_write(sc, 0xD412, data16); + } + + data16 = re_mac_ocp_read(sc, 0xE056); + data16 &= ~(BIT_7 | BIT_6 | BIT_5 | BIT_4); + if (sc->HwPkgDet == 0x0F) + data16 |= (BIT_6 | BIT_5 | BIT_4); + re_mac_ocp_write(sc, 0xE056, data16); + if (FALSE == HW_SUPP_SERDES_PHY(sc)) + re_mac_ocp_write(sc, 0xEA80, 0x0003); + else + re_mac_ocp_write(sc, 0xEA80, 0x0000); + + OOB_mutex_lock(sc); + data16 = re_mac_ocp_read(sc, 0xE052); + data16 &= ~(BIT_3 | BIT_0); + if (sc->HwPkgDet == 0x0F) + data16 |= BIT_0; + re_mac_ocp_write(sc, 0xE052, data16); + OOB_mutex_unlock(sc); + + data16 = re_mac_ocp_read(sc, 0xD420); + data16 &= ~(BIT_11 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0); + data16 |= 0x45F; + re_mac_ocp_write(sc, 0xD420, data16); + + CSR_WRITE_1(sc, RE_TDFNR, 0x4); + + data16 = re_mac_ocp_read(sc, 0xE63E); + data16 &= ~(BIT_3 | BIT_2 | BIT_1); + re_mac_ocp_write(sc, 0xE63E, data16); + data16 |= (BIT_0); + re_mac_ocp_write(sc, 0xE63E, data16); + data16 &= ~(BIT_0); + re_mac_ocp_write(sc, 0xE63E, data16); + re_mac_ocp_write(sc, 0xC094, 0x0); + re_mac_ocp_write(sc, 0xC09E, 0x0); + + /*set configuration space offset 0x70f to 0x27*/ + re_set_offset70f(sc, 0x27); + + re_set_offset79(sc, 0x40); + + Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); + Data32 |= BIT_7 | BIT_8 | BIT_9 | BIT_10 | BIT_11 | BIT_12; + if (sc->re_type == MACFG_71 || sc->re_type == MACFG_72 || + sc->re_type == MACFG_73) + Data32 |= BIT_4; + re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); + + Data32 = re_eri_read(sc, 0xDC, 4, ERIAR_ExGMAC); + Data32 |= (BIT_2| BIT_3); + re_eri_write(sc, 0xDC, 4, Data32, ERIAR_ExGMAC); + + re_eri_write(sc, 0xC8, 4, 0x00080002, ERIAR_ExGMAC); + re_eri_write(sc, 0xCC, 1, 0x2F, ERIAR_ExGMAC); + re_eri_write(sc, 0xD0, 1, 0x5F, ERIAR_ExGMAC); + re_eri_write(sc, 0xE8, 4, 0x00100006, ERIAR_ExGMAC); + + OOB_mutex_lock(sc); + if (sc->HwPkgDet == 0x0F) + re_eri_write(sc, 0x5F0, 2, 0x4F00, ERIAR_ExGMAC); + else + re_eri_write(sc, 0x5F0, 2, 0x4000, ERIAR_ExGMAC); + OOB_mutex_unlock(sc); + + Data32 = re_eri_read(sc, 0xdc, 4, ERIAR_ExGMAC); + Data32 &= ~BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + Data32 |= BIT_0; + re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + + Data32 = re_eri_read(sc, 0x2FC, 4, ERIAR_ExGMAC); + Data32 &= ~(BIT_0 | BIT_1); + Data32 |= (BIT_0); + re_eri_write(sc, 0x2FC, 4, Data32, ERIAR_ExGMAC); + + Data32 = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + Data32 &= ~BIT_12; + re_eri_write(sc, 0x1B0, 4, Data32, ERIAR_ExGMAC); + + Data32 = re_eri_read(sc, 0x1D0, 1, ERIAR_ExGMAC); + Data32 &= ~BIT_1; + re_eri_write(sc, 0x1D0, 1, Data32, ERIAR_ExGMAC); + + re_eri_write(sc, 0xC0, 2, 0x0000, ERIAR_ExGMAC); + re_eri_write(sc, 0xB8, 4, 0x00000000, ERIAR_ExGMAC); + + CSR_WRITE_4(sc, RE_TXCFG, CSR_READ_4(sc, RE_TXCFG) | BIT_7); + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); + CSR_WRITE_1(sc, 0x1B, CSR_READ_1(sc, 0x1B) & ~0x07); + + CSR_WRITE_2 (sc, RE_CPlusCmd, 0x2060); + + re_clear_set_ephy_bit(sc, + 0x19, + BIT_6, + (BIT_12| BIT_8) + ); + re_clear_set_ephy_bit(sc, + 0x59, + BIT_6, + (BIT_12| BIT_8) + ); + re_clear_ephy_bit(sc, 0x0C, BIT_4); + re_clear_ephy_bit(sc, 0x4C, BIT_4); + re_clear_ephy_bit(sc, 0x0B, BIT_0); + + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + + if (FALSE == HW_SUPP_SERDES_PHY(sc)) { + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_6); + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_6); + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_7); + } else { + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) & ~BIT_6); + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~BIT_6); + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) & ~BIT_7); + } + + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~BIT_3); + + if (ifp->if_mtu > ETHERMTU) + CSR_WRITE_1 (sc, RE_MTPS, 0x27); + + re_mac_ocp_write(sc, 0xC140, 0xFFFF); + re_mac_ocp_write(sc, 0xC142, 0xFFFF); + + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~IFCAP_HWCSUM; + ifp->if_hwassist &= ~RE_CSUM_FEATURES; + } else { + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + } + } + } + + if (!((sc->re_if_flags & RL_FLAG_DESCV2) && + (sc->re_if_flags & RL_FLAG_8168G_PLUS))) + ifp->if_hwassist &= ~(CSUM_TCP_IPV6 | CSUM_UDP_IPV6); + + //clear io_rdy_l23 + switch (sc->re_type) { + case MACFG_42: + case MACFG_43: + case MACFG_52: + case MACFG_53: + case MACFG_54: + case MACFG_55: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_1); + break; + } + + switch(sc->re_type) { + case MACFG_36: + case MACFG_37: + case MACFG_38: + case MACFG_39: + case MACFG_42: + case MACFG_43: + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_53: + case MACFG_54: + case MACFG_55: + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + _re_enable_aspm_clkreq_lock(sc, 1); + re_enable_force_clkreq(sc, 0); + break; + } + +#ifndef _WIN32 + //clear wol + re_clrwol(sc); +#endif // !_WIN32 + + data16 = CSR_READ_2(sc, RE_CPlusCmd); + if ((ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0) + data16 |= RL_CPLUSCMD_VLANSTRIP; + else + data16 &= ~RL_CPLUSCMD_VLANSTRIP; + + if ((ifp->if_capenable & IFCAP_RXCSUM) != 0) + data16 |= RL_RxChkSum; + else + data16 &= ~RL_RxChkSum; + CSR_WRITE_2 (sc, RE_CPlusCmd, data16); + + re_disable_cfg9346_write(sc); + //CSR_WRITE_1(sc, 0xec, 0x3f); + + if (sc->re_device_id == RT_DEVICEID_8169 || sc->re_device_id == RT_DEVICEID_8169SC) { + /* Enable transmit and receive.*/ + CSR_WRITE_1(sc, RE_COMMAND, RE_CMD_TX_ENB | RE_CMD_RX_ENB); + + /* Set the initial TX configuration.*/ + CSR_WRITE_4(sc, RE_TXCFG, RE_TXCFG_CONFIG); + + /* Set the initial RX configuration.*/ + /* + * Program the multicast filter, if necessary. + */ + re_set_rx_packet_filter(sc); + } else { + /* Set the initial RX configuration.*/ + /* + * Program the multicast filter, if necessary. + */ + re_set_rx_packet_filter(sc); + + /* Enable transmit and receive.*/ + CSR_WRITE_1(sc, RE_COMMAND, RE_CMD_TX_ENB | RE_CMD_RX_ENB); + } + +#ifndef _WIN32 + ifp->if_drv_flags |= IFF_DRV_RUNNING; + ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; +#endif // !_WIN32 + + /* + * Enable interrupts. + */ + CSR_WRITE_2(sc, RE_IMR, RE_INTRS); +} + +#ifndef _WIN32 + +static void re_init_unlock(void *xsc) /* Software & Hardware Initialize */ +{ + struct re_softc *sc = xsc; + struct ifnet *ifp; +#if OS_VER < VERSION(6,0) + int i; +#endif + union { + uint32_t align_dummy; + u_char eaddr[ETHER_ADDR_LEN]; + } eaddr; + + ifp = RE_GET_IFNET(sc); + + /* + * Cancel pending I/O and free all RX/TX buffers. + */ + re_stop(sc); + + /* + * Disable TSO if interface MTU size is greater than MSS + * allowed in controller. + */ + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~(IFCAP_TSO | IFCAP_VLAN_HWTSO); + ifp->if_hwassist &= ~CSUM_TSO; + } + + /* Copy MAC address on stack to align. */ +#if OS_VER < VERSION(6,0) + bcopy((char *)&sc->arpcom.ac_enaddr, eaddr.eaddr, ETHER_ADDR_LEN); +#elif OS_VER < VERSION(7,0) + bcopy(IFP2ENADDR(ifp), eaddr.eaddr, ETHER_ADDR_LEN); +#else + bcopy(IF_LLADDR(ifp), eaddr.eaddr, ETHER_ADDR_LEN); +#endif + + /* Init our MAC address */ + re_rar_set(sc, eaddr.eaddr); + + sc->hw_start_unlock(sc); + + return; +} + + +static void re_init_locked(void *xsc) /* Software & Hardware Initialize */ +{ + struct re_softc *sc = xsc; + struct ifnet *ifp; + + ifp = RE_GET_IFNET(sc); + + if (re_link_ok(sc)) { + sc->link_state = LINK_STATE_UP; + re_link_state_change(ifp, sc->link_state); + re_link_on_patch(sc); + } + + sc->re_link_chg_det = 1; + re_start_timer(sc); +} + +static void re_init(void *xsc) /* Software & Hardware Initialize */ +{ + struct re_softc *sc = xsc; + + RE_LOCK(sc); + re_init_locked(sc); + RE_UNLOCK(sc); +} + +#endif // !_WIN32 + +#ifdef _WIN32 +void re_hw_start_unlock_8125(struct re_softc *sc) +#else // _WIN32 +static void re_hw_start_unlock_8125(struct re_softc *sc) +#endif // _WIN32 +{ + struct ifnet *ifp; + u_int32_t macver; + u_int16_t data16 = 0; + u_int8_t data8; + + ifp = RE_GET_IFNET(sc); + +#ifndef _WIN32 + /* Init descriptors. */ + re_var_init(sc); +#endif // !_WIN32 + + re_enable_cfg9346_write(sc); + + _re_enable_aspm_clkreq_lock(sc, 0); + re_enable_force_clkreq(sc, 0); + + re_set_eee_lpi_timer(sc); + + CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); + + /* Set the initial TX configuration.*/ + CSR_WRITE_4(sc, RE_TXCFG, RE_TXCFG_CONFIG); + + macver = CSR_READ_4(sc, RE_TXCFG) & 0xFC800000; + if (macver == 0x60800000 || macver == 0x64000000 || + macver == 0x64800000 || macver == 0x68000000 || + macver == 0x68800000) { + CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | BIT_5); + + re_mac_ocp_write(sc, 0xE098, 0xC302); + + /*set configuration space offset 0x70f to 0x17*/ + if (macver == 0x64800000) + re_set_offset70f(sc, 0x17); + else + re_set_offset70f(sc, 0x27); + + re_set_offset79(sc, 0x40); + + if (macver == 0x60800000 || macver == 0x64000000) + CSR_WRITE_2(sc, 0x382, 0x221B); + + CSR_WRITE_1(sc, 0x4500, 0x00); + CSR_WRITE_2(sc, 0x4800, 0x0000); + + CSR_WRITE_1(sc, RE_CFG1, CSR_READ_1(sc, RE_CFG1) & ~0x10); + + CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~BIT_3); + + CSR_WRITE_1(sc, RE_TDFNR, 0x10); + + if (sc->re_type == MACFG_80) { + re_ephy_write(sc, 0x01, 0xA812); + re_ephy_write(sc, 0x09, 0x520C); + re_ephy_write(sc, 0x04, 0xD000); + re_ephy_write(sc, 0x0D, 0xF702); + re_ephy_write(sc, 0x0A, 0x8653); + re_ephy_write(sc, 0x06, 0x001E); + re_ephy_write(sc, 0x08, 0x3595); + re_ephy_write(sc, 0x20, 0x9455); + re_ephy_write(sc, 0x21, 0x99FF); + re_ephy_write(sc, 0x02, 0x6046); + re_ephy_write(sc, 0x29, 0xFE00); + re_ephy_write(sc, 0x23, 0xAB62); + re_clear_ephy_bit(sc, 0x24, BIT_11); + + re_ephy_write(sc, 0x41, 0xA80C); + re_ephy_write(sc, 0x49, 0x520C); + re_ephy_write(sc, 0x44, 0xD000); + re_ephy_write(sc, 0x4D, 0xF702); + re_ephy_write(sc, 0x4A, 0x8653); + re_ephy_write(sc, 0x46, 0x001E); + re_ephy_write(sc, 0x48, 0x3595); + re_ephy_write(sc, 0x60, 0x9455); + re_ephy_write(sc, 0x61, 0x99FF); + re_ephy_write(sc, 0x42, 0x6046); + re_ephy_write(sc, 0x69, 0xFE00); + re_ephy_write(sc, 0x63, 0xAB62); + re_clear_ephy_bit(sc, 0x64, BIT_11); + } else if (sc->re_type == MACFG_81) { + re_ephy_write(sc, 0x04, 0xD000); + re_ephy_write(sc, 0x0A, 0x8653); + re_ephy_write(sc, 0x23, 0xAB66); + re_ephy_write(sc, 0x20, 0x9455); + re_ephy_write(sc, 0x21, 0x99FF); + re_ephy_write(sc, 0x29, 0xFE04); + + re_ephy_write(sc, 0x44, 0xD000); + re_ephy_write(sc, 0x4A, 0x8653); + re_ephy_write(sc, 0x63, 0xAB66); + re_ephy_write(sc, 0x60, 0x9455); + re_ephy_write(sc, 0x61, 0x99FF); + re_ephy_write(sc, 0x69, 0xFE04); + + re_clear_set_ephy_bit(sc, + 0x2A, + (BIT_14 | BIT_13 | BIT_12), + (BIT_13 | BIT_12) + ); + re_clear_ephy_bit(sc, 0x19, BIT_6); + re_set_ephy_bit(sc, 0x1B, (BIT_11 | BIT_10 | BIT_9)); + re_clear_ephy_bit(sc, 0x1B, (BIT_14 | BIT_13 | BIT_12)); + re_ephy_write(sc, 0x02, 0x6042); + re_ephy_write(sc, 0x06, 0x0014); + + re_clear_set_ephy_bit(sc, + 0x6A, + (BIT_14 | BIT_13 | BIT_12), + (BIT_13 | BIT_12) + ); + re_clear_ephy_bit(sc, 0x59, BIT_6); + re_set_ephy_bit(sc, 0x5B, (BIT_11 | BIT_10 | BIT_9)); + re_clear_ephy_bit(sc, 0x5B, (BIT_14 | BIT_13 | BIT_12)); + re_ephy_write(sc, 0x42, 0x6042); + re_ephy_write(sc, 0x46, 0x0014); + } else if (sc->re_type == MACFG_82) { + re_ephy_write(sc, 0x06, 0x001F); + re_ephy_write(sc, 0x0A, 0xB66B); + re_ephy_write(sc, 0x01, 0xA852); + re_ephy_write(sc, 0x24, 0x0008); + re_ephy_write(sc, 0x2F, 0x6052); + re_ephy_write(sc, 0x0D, 0xF716); + re_ephy_write(sc, 0x20, 0xD477); + re_ephy_write(sc, 0x21, 0x4477); + re_ephy_write(sc, 0x22, 0x0013); + re_ephy_write(sc, 0x23, 0xBB66); + re_ephy_write(sc, 0x0B, 0xA909); + re_ephy_write(sc, 0x29, 0xFF04); + re_ephy_write(sc, 0x1B, 0x1EA0); + + re_ephy_write(sc, 0x46, 0x001F); + re_ephy_write(sc, 0x4A, 0xB66B); + re_ephy_write(sc, 0x41, 0xA84A); + re_ephy_write(sc, 0x64, 0x000C); + re_ephy_write(sc, 0x6F, 0x604A); + re_ephy_write(sc, 0x4D, 0xF716); + re_ephy_write(sc, 0x60, 0xD477); + re_ephy_write(sc, 0x61, 0x4477); + re_ephy_write(sc, 0x62, 0x0013); + re_ephy_write(sc, 0x63, 0xBB66); + re_ephy_write(sc, 0x4B, 0xA909); + re_ephy_write(sc, 0x69, 0xFF04); + re_ephy_write(sc, 0x5B, 0x1EA0); + } else if (sc->re_type == MACFG_83) { + re_ephy_write(sc, 0x0B, 0xA908); + re_ephy_write(sc, 0x1E, 0x20EB); + re_ephy_write(sc, 0x22, 0x0023); + re_ephy_write(sc, 0x02, 0x60C2); + re_ephy_write(sc, 0x29, 0xFF00); + + re_ephy_write(sc, 0x4B, 0xA908); + re_ephy_write(sc, 0x5E, 0x28EB); + re_ephy_write(sc, 0x62, 0x0023); + re_ephy_write(sc, 0x42, 0x60C2); + re_ephy_write(sc, 0x69, 0xFF00); + } else if (sc->re_type == MACFG_84 || sc->re_type == MACFG_85 || + sc->re_type == MACFG_86 || sc->re_type == MACFG_87) { + //do nothing + } + + re_mac_ocp_write(sc, 0xC140, 0xFFFF); + re_mac_ocp_write(sc, 0xC142, 0xFFFF); + + //old tx desc format + data16 = re_mac_ocp_read(sc, 0xEB58); + if (sc->re_type == MACFG_91 || sc->re_type == MACFG_92) + data16 &= ~(BIT_0 | BIT_1); + else + data16 &= ~(BIT_0); + re_mac_ocp_write(sc, 0xEB58, data16); + + if (sc->re_type == MACFG_84 || sc->re_type == MACFG_85 || + sc->re_type == MACFG_86 || sc->re_type == MACFG_87 || + sc->re_type == MACFG_91 || sc->re_type == MACFG_92) + CSR_WRITE_1(sc, 0xD8, CSR_READ_1(sc, 0xD8) & ~BIT_1); + + data16 = re_mac_ocp_read(sc, 0xE614); + data16 &= ~(BIT_10 | BIT_9 | BIT_8); + if (sc->re_type == MACFG_82 || sc->re_type == MACFG_83) + data16 |= (2 << 8); + else if (sc->re_type == MACFG_90 || sc->re_type == MACFG_91 || + sc->re_type == MACFG_92) + data16 |= (4 << 8); + else + data16 |= (3 << 8); + re_mac_ocp_write(sc, 0xE614, data16); + + data16 = re_mac_ocp_read(sc, 0xE63E); + data16 &= ~(BIT_11 | BIT_10); + re_mac_ocp_write(sc, 0xE63E, data16); + + data16 = re_mac_ocp_read(sc, 0xE63E); + data16 &= ~(BIT_5 | BIT_4); + if (sc->re_type == MACFG_80 || sc->re_type == MACFG_81 || + sc->re_type == MACFG_90 || sc->re_type == MACFG_91 || + sc->re_type == MACFG_92) + data16 |= ((0x02 & 0x03) << 4); + re_mac_ocp_write(sc, 0xE63E, data16); + + data16 = re_mac_ocp_read(sc, 0xC0B4); + data16 |= (BIT_3|BIT_2); + re_mac_ocp_write(sc, 0xC0B4, data16); + + data16 = re_mac_ocp_read(sc, 0xEB6A); + data16 &= ~(BIT_7 | BIT_6 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0); + data16 |= (BIT_5 | BIT_4 | BIT_1 | BIT_0); + re_mac_ocp_write(sc, 0xEB6A, data16); + + data16 = re_mac_ocp_read(sc, 0xEB50); + data16 &= ~(BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_5); + data16 |= (BIT_6); + re_mac_ocp_write(sc, 0xEB50, data16); + + data16 = re_mac_ocp_read(sc, 0xE056); + data16 &= ~(BIT_7 | BIT_6 | BIT_5 | BIT_4); + //data16 |= (BIT_4 | BIT_5); + re_mac_ocp_write(sc, 0xE056, data16); + + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_7); + + data16 = re_mac_ocp_read(sc, 0xE040); + data16 &= ~(BIT_12); + re_mac_ocp_write(sc, 0xE040, data16); + + data16 = re_mac_ocp_read(sc, 0xEA1C); + data16 &= ~(BIT_1 | BIT_0); + data16 |= (BIT_0); + re_mac_ocp_write(sc, 0xEA1C, data16); + + if (HW_DASH_SUPPORT_DASH(sc)) + OOB_mutex_lock(sc); + + if (sc->re_type == MACFG_84 || sc->re_type == MACFG_85) + re_mac_ocp_write(sc, 0xE0C0, 0x4403); + else + re_mac_ocp_write(sc, 0xE0C0, 0x4000); + + re_set_mac_ocp_bit(sc, 0xE052, (BIT_6 | BIT_5)); + re_clear_mac_ocp_bit(sc, 0xE052, BIT_3 | BIT_7); + + if (HW_DASH_SUPPORT_DASH(sc)) + OOB_mutex_unlock(sc); + + data16 = re_mac_ocp_read(sc, 0xC0AC); + data16 |= (BIT_7 | BIT_8 | BIT_9 | BIT_10 | BIT_11 | BIT_12); + if (macver == 0x60800000) + data16 &= ~(BIT_7); + re_mac_ocp_write(sc, 0xC0AC, data16); + + data16 = re_mac_ocp_read(sc, 0xD430); + data16 &= ~(BIT_11 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0); + data16 |= 0x45F; + re_mac_ocp_write(sc, 0xD430, data16); + + //re_mac_ocp_write(sc, 0xE0C0, 0x4F87); + CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | (BIT_6 | BIT_7)); + + if (sc->re_type == MACFG_80 || sc->re_type == MACFG_81) + CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) | BIT_0); + + if (sc->re_type != MACFG_84 && sc->re_type != MACFG_85) + re_mac_ocp_write(sc, 0xE080, re_mac_ocp_read(sc, 0xE080)&~BIT_1); + + data16 = re_mac_ocp_read(sc, 0xEA1C); + data16 &= ~(BIT_2); + if (sc->re_type == MACFG_91 || sc->re_type == MACFG_92) + data16 &= ~(BIT_9 | BIT_8); + re_mac_ocp_write(sc, 0xEA1C, data16); + + re_set_mac_ocp_bit(sc, 0xEB54, BIT_0); + DELAY(1); + re_clear_mac_ocp_bit(sc, 0xEB54, BIT_0); + CSR_WRITE_2(sc, 0x1880, CSR_READ_2(sc, 0x1880) & ~(BIT_4 | BIT_5)); + + if (macver == 0x60800000 || macver == 0x68000000 || + macver == 0x68800000) { + for (int i=0xA00; i<0xB00; i+=4) + CSR_WRITE_4(sc, i, 0x0000); + } else { + for (int i = 0xA00; i < 0xA80; i += 4) + CSR_WRITE_4(sc, i, 0x0000); + } + + if (macver == 0x60800000) { + //do nothing + } else { + data8 = CSR_READ_1(sc, RE_INT_CFG0_8125); + data8 &= ~(RTL8125_INT_CFG0_ENABLE_8125 | + RTL8125_INT_CFG0_TIMEOUT0_BYPASS | + RTL8125_INT_CFG0_MITIGATION_BYPASS); + if (sc->re_type == MACFG_91 || sc->re_type == MACFG_92) + data8 &= ~RTL8126_INT_CFG0_RDU_BYPASS; + if (sc->re_type == MACFG_84 || sc->re_type == MACFG_85 || + sc->re_type == MACFG_86 || sc->re_type == MACFG_87) + data8 &= ~RTL8125_INT_CFG0_MSIX_ENTRY_NUM_MODE; + CSR_WRITE_1(sc, RE_INT_CFG0_8125, data8); + + CSR_WRITE_2(sc, RE_INT_CFG1_8125, 0x0000); + } + + if (sc->re_tx_cstag) { + ifp->if_capenable |= IFCAP_TXCSUM; + ifp->if_hwassist |= RE_CSUM_FEATURES; + } + if (sc->re_rx_cstag) { + ifp->if_capenable |= IFCAP_RXCSUM; + } + } + + if (sc->RequiredPfmPatch) + re_set_pfm_patch(sc, 0); + + _re_enable_aspm_clkreq_lock(sc, 1); + re_enable_force_clkreq(sc, 0); + +#ifndef _WIN32 + //clear wol + re_clrwol(sc); +#endif // !_WIN32 + + //Interrupt Mitigation + if (macver == 0x68000000 || macver == 0x68800000) + CSR_WRITE_4(sc, 0x0A00, 0x00140014); + else + CSR_WRITE_4(sc, 0x0A00, 0x00630063); + + if ((ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0) + CSR_WRITE_4(sc, RE_RXCFG, CSR_READ_4(sc, RE_RXCFG) | (BIT_22 | BIT_23)); + else + CSR_WRITE_4(sc, RE_RXCFG, CSR_READ_4(sc, RE_RXCFG) & ~(BIT_22 | BIT_23)); + + data16 = CSR_READ_2(sc, RE_CPlusCmd); + if ((ifp->if_capenable & IFCAP_RXCSUM) != 0) + data16 |= RL_RxChkSum; + else + data16 &= ~RL_RxChkSum; + CSR_WRITE_2 (sc, RE_CPlusCmd, data16); + + re_disable_cfg9346_write(sc); + + /* Set the initial RX configuration.*/ + /* + * Program the multicast filter, if necessary. + */ + re_set_rx_packet_filter(sc); + + /* Enable transmit and receive.*/ + CSR_WRITE_1(sc, RE_COMMAND, RE_CMD_TX_ENB | RE_CMD_RX_ENB); + +#ifndef _WIN32 + ifp->if_drv_flags |= IFF_DRV_RUNNING; + ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; +#endif // !_WIN32 + + /* + * Enable interrupts. + */ + CSR_WRITE_4(sc, RE_IMR0_8125, RE_INTRS); +} + +#ifndef _WIN32 + +/* + * Initialize the transmit descriptors. + */ +static int re_var_init(struct re_softc *sc) +{ + int i; + union RxDesc *rxptr; + union TxDesc *txptr; + + sc->re_desc.rx_cur_index = 0; + rxptr = sc->re_desc.rx_desc; + for (i = 0; i < RE_RX_BUF_NUM; i++) { + memset(&rxptr[i], 0, sizeof(union RxDesc)); + + /* Init the RX buffer pointer register. */ + bus_dmamap_load(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[i], + sc->re_desc.rx_buf[i]->m_data, sc->re_rx_desc_buf_sz, + re_rx_dma_map_buf, + &rxptr[i], + 0); + bus_dmamap_sync(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[i], + BUS_DMASYNC_PREREAD); + + rxptr[i].ul[0] = htole32(sc->re_rx_desc_buf_sz); + if (i == (RE_RX_BUF_NUM - 1)) + rxptr[i].ul[0] |= htole32(RL_RDESC_CMD_EOR); + rxptr[i].ul[0] |= htole32(RL_RDESC_CMD_OWN); + } + + bus_dmamap_load(sc->re_desc.rx_desc_tag, + sc->re_desc.rx_desc_dmamap, + sc->re_desc.rx_desc, + sizeof(union RxDesc)*RE_RX_BUF_NUM, + re_dma_map_rxdesc, + sc, + 0); + bus_dmamap_sync(sc->re_desc.rx_desc_tag, + sc->re_desc.rx_desc_dmamap, + BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE); + + sc->re_desc.tx_cur_index = 0; + sc->re_desc.tx_last_index = 0; + txptr = sc->re_desc.tx_desc; + for (i = 0; i < RE_TX_BUF_NUM; i++) { + memset(&txptr[i], 0, sizeof(union TxDesc)); + if (i == (RE_TX_BUF_NUM - 1)) + txptr[i].ul[0] = htole32(RL_TDESC_CMD_EOR); + } + + bus_dmamap_load(sc->re_desc.tx_desc_tag, + sc->re_desc.tx_desc_dmamap, + sc->re_desc.tx_desc, + sizeof(union TxDesc) * RE_TX_BUF_NUM, + re_dma_map_txdesc, + sc, + 0); + bus_dmamap_sync(sc->re_desc.tx_desc_tag, + sc->re_desc.tx_desc_dmamap, + BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE); + + return 0; +} + +#endif // !_WIN32 + +#ifdef _WIN32 +void re_reset(struct re_softc *sc) +#else // _WIN32 +static void re_reset(struct re_softc *sc) +#endif // _WIN32 +{ + register int i; + + re_clear_all_rx_packet_filter(sc); + + switch (sc->re_type) { + case MACFG_3: + case MACFG_4: + case MACFG_5: + case MACFG_6: + DELAY(10000); + break; + case MACFG_11: + case MACFG_12: + case MACFG_13: + case MACFG_14: + case MACFG_15: + case MACFG_16: + case MACFG_17: + case MACFG_18: + case MACFG_19: + case MACFG_21: + case MACFG_22: + case MACFG_23: + case MACFG_24: + case MACFG_25: + case MACFG_26: + case MACFG_27: + case MACFG_28: + case MACFG_31: + case MACFG_32: + case MACFG_33: + case MACFG_36: + case MACFG_37: + case MACFG_41: + case MACFG_42: + case MACFG_43: + case MACFG_54: + case MACFG_55: + case MACFG_63: + case MACFG_64: + case MACFG_65: + case MACFG_66: + CSR_WRITE_1(sc, RE_COMMAND, 0x8C); + break; + case MACFG_38: + case MACFG_39: + case MACFG_50: + case MACFG_51: + case MACFG_52: + case MACFG_53: + CSR_WRITE_1(sc, RE_COMMAND, 0x8C); + while (!(CSR_READ_4(sc,RE_TXCFG) & BIT_11)) DELAY(100); + break; + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + DELAY(2000); + break; + default: + DELAY(10000); + break; + } + DELAY(200); + CSR_WRITE_1(sc, RE_COMMAND, RE_CMD_RESET); + + for (i = 0; i < RE_TIMEOUT; i++) { + DELAY(10); + if (!(CSR_READ_1(sc, RE_COMMAND) & RE_CMD_RESET)) + break; + } + + if (i == RE_TIMEOUT) + device_printf(sc->dev,"reset never completed!\n"); + + return; +} + +#ifdef _WIN32 +u_int8_t re_link_ok(struct re_softc *sc) +#else // _WIN32 +static u_int8_t re_link_ok(struct re_softc *sc) +#endif // _WIN32 +{ + u_int8_t retval; + + retval = (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_LINK_STS) ? 1 : 0; + + return retval; +} + +#ifdef _WIN32 + +u_int8_t re_link_autoneg(struct re_softc* sc) { + re_mdio_write(sc, 0x1F, 0x0000); + u_int16_t aner = re_mdio_read(sc, MII_ANER); + u_int16_t bmsr = re_mdio_read(sc, MII_BMSR); + + return ((aner & ANER_LPAN) && (bmsr & BMSR_ACOMP)) ? 1 : 0; +} + +#endif // _WIN32 + +static u_int8_t +re_set_wol_linkspeed(struct re_softc *sc) +{ + u_int8_t wol_link_speed = 0xff; + + if (HW_SUPP_SERDES_PHY(sc)) + goto exit; + +#ifdef ENABLE_FIBER_SUPPORT + if (HW_FIBER_MODE_ENABLED(sc)) + goto exit; +#endif //ENABLE_FIBER_SUPPORT + + re_mdio_write(sc, 0x1F, 0x0000); + + wol_link_speed = RE_WOL_LINK_SPEED_100M_FIRST; + if (!sc->re_dash) { + u_int16_t anlpar; + + anlpar = sc->phy_reg_anlpar; + + if ((anlpar & ANLPAR_10_FD) || (anlpar & ANLPAR_10)) { + wol_link_speed = RE_WOL_LINK_SPEED_10M_FIRST; + } else { + wol_link_speed = RE_WOL_LINK_SPEED_100M_FIRST; + } + } + + switch(sc->re_device_id) { + case RT_DEVICEID_8126: + re_clear_eth_ocp_phy_bit(sc, 0xA5D4, RTK_ADVERTISE_5000FULL); + /* FALLTHROUGH */ + case RT_DEVICEID_8125: + case RT_DEVICEID_3000: + case RT_DEVICEID_8162: + re_clear_eth_ocp_phy_bit(sc, 0xA5D4, RTK_ADVERTISE_2500FULL); + /* FALLTHROUGH */ + case RT_DEVICEID_8169: + case RT_DEVICEID_8169SC: + case RT_DEVICEID_8168: + case RT_DEVICEID_8161: + re_mdio_write(sc, MII_100T2CR, re_mdio_read(sc,MII_100T2CR) & ~(GTCR_ADV_1000TFDX|GTCR_ADV_1000THDX)); + /* FALLTHROUGH */ + default: + if (wol_link_speed == RE_WOL_LINK_SPEED_10M_FIRST) + re_mdio_write(sc, MII_ANAR, re_mdio_read(sc,MII_ANAR) & ~(ANAR_TX_FD | ANAR_TX)); + break; + } + + switch(sc->re_device_id) { + case RT_DEVICEID_8126: + case RT_DEVICEID_8125: + case RT_DEVICEID_3000: + case RT_DEVICEID_8162: + case RT_DEVICEID_8169: + case RT_DEVICEID_8169SC: + case RT_DEVICEID_8168: + case RT_DEVICEID_8161: + re_mdio_write(sc, MII_BMCR, BMCR_RESET | BMCR_AUTOEN | BMCR_STARTNEG); + break; + default: + if (sc->re_type == MACFG_36) + re_mdio_write(sc, MII_BMCR, BMCR_RESET | BMCR_AUTOEN | BMCR_STARTNEG); + else + re_mdio_write(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); + break; + } + +exit: + return wol_link_speed; +} + +#ifndef _WIN32 + +static void +re_setwol(struct re_softc *sc) +{ + struct ifnet *ifp; + int pmc; + uint16_t pmstat; + uint8_t v; + + RE_LOCK_ASSERT(sc); + + ifp = RE_GET_IFNET(sc); + + if ((ifp->if_capenable & IFCAP_WOL) == 0) { + re_phy_power_down(sc->dev); + return; + } + + if (pci_find_cap(sc->dev, PCIY_PMG, &pmc) != 0) + return; + + /* Enable config register write. */ + re_enable_cfg9346_write(sc); + + if (ifp->if_capenable & IFCAP_WOL_MAGIC) + re_enable_magic_packet(sc); + else + re_disable_magic_packet(sc); + + v = CSR_READ_1(sc, RE_CFG5); + v &= ~(RL_CFG5_WOL_BCAST | RL_CFG5_WOL_MCAST | RL_CFG5_WOL_UCAST | + RL_CFG5_WOL_LANWAKE); + + if ((ifp->if_capenable & IFCAP_WOL_UCAST) != 0) + v |= RL_CFG5_WOL_UCAST; + if ((ifp->if_capenable & IFCAP_WOL_MCAST) != 0) + v |= RL_CFG5_WOL_MCAST | RL_CFG5_WOL_BCAST; + if ((ifp->if_capenable & IFCAP_WOL) != 0) + v |= RL_CFG5_WOL_LANWAKE; + CSR_WRITE_1(sc, RE_CFG5, v); + + /* Config register write done. */ + re_disable_cfg9346_write(sc); + + /* + * It seems that hardware resets its link speed to 100Mbps in + * power down mode so switching to 100Mbps in driver is not + * needed. + */ + + /* Request PME if WOL is requested. */ + pmstat = pci_read_config(sc->dev, pmc + PCIR_POWER_STATUS, 2); + pmstat &= ~(PCIM_PSTAT_PME | PCIM_PSTAT_PMEENABLE); + if ((ifp->if_capenable & IFCAP_WOL) != 0) + pmstat |= PCIM_PSTAT_PME | PCIM_PSTAT_PMEENABLE; + pci_write_config(sc->dev, pmc + PCIR_POWER_STATUS, pmstat, 2); + + /* Put controller into sleep mode. */ + if ((ifp->if_capenable & IFCAP_WOL) != 0) { + uint8_t wol_link_speed; + re_set_rx_packet_filter_in_sleep_state(sc); + wol_link_speed = re_set_wol_linkspeed(sc); + if (sc->re_type == MACFG_21 || sc->re_type == MACFG_22) + CSR_WRITE_1(sc, RE_COMMAND, RE_CMD_RX_ENB); + + if (sc->RequiredPfmPatch) + re_set_pfm_patch(sc, + (wol_link_speed == RE_WOL_LINK_SPEED_10M_FIRST) ? + 1 : 0); + } +} + +static void +re_clrwol(struct re_softc *sc) +{ + int pmc; + uint16_t pmstat; + uint8_t v; + + RE_LOCK_ASSERT(sc); + + if (pci_find_cap(sc->dev, PCIY_PMG, &pmc) != 0) + return; + + /* Disable PME and clear PME status. */ + pmstat = pci_read_config(sc->dev, pmc + PCIR_POWER_STATUS, 2); + pmstat &= ~PCIM_PSTAT_PMEENABLE; + pci_write_config(sc->dev, pmc + PCIR_POWER_STATUS, pmstat, 2); + + /* Enable config register write. */ + re_enable_cfg9346_write(sc); + + v = CSR_READ_1(sc, RE_CFG3); + v &= ~(RL_CFG3_WOL_LINK); + CSR_WRITE_1(sc, RE_CFG3, v); + + re_disable_magic_packet(sc); + + v = CSR_READ_1(sc, RE_CFG5); + v &= ~(RL_CFG5_WOL_BCAST | RL_CFG5_WOL_MCAST | RL_CFG5_WOL_UCAST); + v &= ~RL_CFG5_WOL_LANWAKE; + CSR_WRITE_1(sc, RE_CFG5, v); + + /* Config register write done. */ + re_disable_cfg9346_write(sc); +} + +#endif // !_WIN32 + +/* + * Stop the adapter and free any mbufs allocated to the + * RX and TX lists. + */ +#ifdef _WIN32 +void re_stop(struct re_softc *sc) /* Stop Driver */ +#else +static void re_stop(struct re_softc *sc) /* Stop Driver */ +#endif +{ +#ifndef _WIN32 + struct ifnet *ifp; + + /* RE_LOCK_ASSERT(sc);*/ + + ifp = RE_GET_IFNET(sc); +#if OS_VER < VERSION(9,0) + ifp->if_timer = 0; +#endif + + re_stop_timer(sc); +#endif // !_WIN32 + + /* + * Disable accepting frames to put RX MAC into idle state. + * Otherwise it's possible to get frames while stop command + * execution is in progress and controller can DMA the frame + * to already freed RX buffer during that period. + */ + re_clear_all_rx_packet_filter(sc); + + switch (sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + CSR_WRITE_4(sc, RE_IMR0_8125, 0x00000000); + CSR_WRITE_4(sc, RE_ISR0_8125, 0xffffffff); + break; + default: + CSR_WRITE_2(sc, RE_IMR, 0x0000); + CSR_WRITE_2(sc, RE_ISR, 0xffff); + break; + } + + switch (sc->re_type) { + case MACFG_50: + case MACFG_51: + case MACFG_52: + re_eri_write(sc, 0x1bc, 4, 0x0000001f, ERIAR_ExGMAC); + re_eri_write(sc, 0x1dc, 4, 0x0000002d, ERIAR_ExGMAC); + break; + case MACFG_38: + re_eri_write(sc, 0x1bc, 4, 0x0000001f, ERIAR_ExGMAC); + re_eri_write(sc, 0x1dc, 4, 0x0000003f, ERIAR_ExGMAC); + break; + } + + switch (sc->re_type) { + case MACFG_74: + case MACFG_75: + re_set_mac_ocp_bit(sc, 0xD438, BIT_3); + re_set_mac_ocp_bit(sc, 0xD438, BIT_2); + re_clear_mac_ocp_bit(sc, 0xDE28, (BIT_1 | BIT_0)); + re_set_mac_ocp_bit(sc, 0xD438, (BIT_1 | BIT_0)); + break; + } + + re_reset(sc); + +#ifndef _WIN32 + /* + * Free the TX list buffers. + */ + while (sc->re_desc.tx_last_index!=sc->re_desc.tx_cur_index) { + u_int32_t entry = sc->re_desc.tx_last_index % RE_TX_BUF_NUM; + if (sc->re_desc.re_tx_mtag) { + bus_dmamap_sync(sc->re_desc.re_tx_mtag, + sc->re_desc.re_tx_dmamap[entry], + BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(sc->re_desc.re_tx_mtag, + sc->re_desc.re_tx_dmamap[entry]); + } + + if (sc->re_desc.tx_buf[entry]!=NULL) { + m_freem(sc->re_desc.tx_buf[entry]); + sc->re_desc.tx_buf[entry] = NULL; + } + sc->re_desc.tx_last_index++; + } + + ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); +#endif // !_WIN32 + + return; +} + +#ifndef _WIN32 + +/* + * Main transmit routine. + */ +static void re_start(struct ifnet *ifp) /* Transmit Packet*/ +{ + struct re_softc *sc; + + sc = ifp->if_softc; /* Paste to ifp in function re_attach(dev) */ + RE_LOCK(sc); + re_start_locked(ifp); + RE_UNLOCK(sc); +} + +static uint16_t +re_get_eth_type(struct mbuf *mb) +{ + struct ether_vlan_header *eh; + uint16_t eth_type; + + eh = mtod(mb, struct ether_vlan_header *); + if (mb->m_len < ETHER_HDR_LEN) + return (0); + if (eh->evl_encap_proto == htons(ETHERTYPE_VLAN)) + eth_type = ntohs(eh->evl_proto); + else + eth_type = ntohs(eh->evl_encap_proto); + return (eth_type); +} + +static int +re_get_l4hdr_offset(struct mbuf *mb) +{ + struct ether_vlan_header *eh; + //struct tcphdr *th; + struct ip *ip; + int ip_hlen; + struct ip6_hdr *ip6; + uint16_t eth_type; + int eth_hdr_len; + + eh = mtod(mb, struct ether_vlan_header *); + if (mb->m_len < ETHER_HDR_LEN) + return (0); + if (eh->evl_encap_proto == htons(ETHERTYPE_VLAN)) { + eth_type = ntohs(eh->evl_proto); + eth_hdr_len = ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN; + } else { + eth_type = ntohs(eh->evl_encap_proto); + eth_hdr_len = ETHER_HDR_LEN; + } + if (mb->m_len < eth_hdr_len) + return (0); + switch (eth_type) { + case ETHERTYPE_IP: + ip = (struct ip *)(mb->m_data + eth_hdr_len); + if (mb->m_len < eth_hdr_len + sizeof(*ip)) + return (0); + if (ip->ip_p != IPPROTO_TCP) + return (0); + ip_hlen = ip->ip_hl << 2; + eth_hdr_len += ip_hlen; + break; + case ETHERTYPE_IPV6: + ip6 = (struct ip6_hdr *)(mb->m_data + eth_hdr_len); + if (mb->m_len < eth_hdr_len + sizeof(*ip6)) + return (0); + if (ip6->ip6_nxt != IPPROTO_TCP) + return (0); + eth_hdr_len += sizeof(*ip6); + break; + default: + return (0); + } + /* + if (mb->m_len < eth_hdr_len + sizeof(*th)) + return (0); + th = (struct tcphdr *)(mb->m_data + eth_hdr_len); + tcp_hlen = th->th_off << 2; + eth_hdr_len += tcp_hlen; + if (mb->m_len < eth_hdr_len) + return (0); + */ + return (eth_hdr_len); +} + +static void re_start_locked(struct ifnet *ifp) +{ + bus_dma_segment_t segs[RE_NTXSEGS]; + bus_dmamap_t map; + struct re_softc *sc; + struct mbuf *m_head; + struct mbuf *m_new; + uint32_t tx_cur_index; + uint32_t entry; + uint32_t first_entry; + int queued; + int nsegs; + int error; + int i; + + sc = ifp->if_softc; /* Paste to ifp in function re_attach(dev) */ + + /* RE_LOCK_ASSERT(sc);*/ + + if ((sc->driver_detach == 1) || (sc->rx_fifo_overflow != 0)) + return; + + tx_cur_index = sc->re_desc.tx_cur_index; + for (queued = 0; !IFQ_DRV_IS_EMPTY(&ifp->if_snd);) { + int fs = 1, ls = 0; + uint32_t opts1; + uint32_t opts2; + IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head); /* Remove(get) data from system transmit queue */ + if (m_head == NULL) { + break; + } + + if ((sc->re_type == MACFG_80 || sc->re_type == MACFG_81 || + sc->re_type == MACFG_82 || sc->re_type == MACFG_83) && + sc->re_device_id != RT_DEVICEID_3000) { + if (re_8125_pad(sc, m_head) != 0) { + IFQ_DRV_PREPEND(&ifp->if_snd, m_head); + ifp->if_drv_flags |= IFF_DRV_OACTIVE; + break; + } + } + + entry = tx_cur_index % RE_TX_BUF_NUM; + if (sc->re_coalesce_tx_pkt) { + if (re_encap(sc, &m_head)) { + IFQ_DRV_PREPEND(&ifp->if_snd, m_head); + ifp->if_drv_flags |= IFF_DRV_OACTIVE; + break; + } + } + + error = bus_dmamap_load_mbuf_sg(sc->re_desc.re_tx_mtag, sc->re_desc.re_tx_dmamap[entry], + m_head, segs, &nsegs, BUS_DMA_NOWAIT); + if (error == EFBIG) { + m_new = m_collapse(m_head, M_NOWAIT, RE_NTXSEGS); + if (m_new == NULL) { + m_freem(m_head); + m_head = NULL; + //return (ENOBUFS); + break; + } + m_head = m_new; + error = bus_dmamap_load_mbuf_sg(sc->re_desc.re_tx_mtag, + sc->re_desc.re_tx_dmamap[entry], m_head, segs, &nsegs, BUS_DMA_NOWAIT); + if (error != 0) { + m_freem(m_head); + m_head = NULL; + //return (error); + break; + } + } else if (error != 0) { + //return (error); + IFQ_DRV_PREPEND(&ifp->if_snd, m_head); + ifp->if_drv_flags |= IFF_DRV_OACTIVE; + break; + } + if (nsegs == 0) { + m_freem(m_head); + m_head = NULL; + //return (EIO); + break; + } + + /* Check for number of available descriptors. */ + if (CountFreeTxDescNum(&sc->re_desc) < nsegs) { /* No enough descriptor */ + bus_dmamap_unload(sc->re_desc.re_tx_mtag, sc->re_desc.re_tx_dmamap[entry]); + IFQ_DRV_PREPEND(&ifp->if_snd, m_head); + ifp->if_drv_flags |= IFF_DRV_OACTIVE; + break; + } + + bus_dmamap_sync(sc->re_desc.re_tx_mtag, sc->re_desc.re_tx_dmamap[entry], + BUS_DMASYNC_PREWRITE); + + first_entry = entry; + + if (ifp->if_bpf) { /* If there's a BPF listener, bounce a copy of this frame to him. */ + //printf("If there's a BPF listener, bounce a copy of this frame to him. \n"); + + /*#if OS_VER < VERSION(5, 1)*/ +#if OS_VER < VERSION(4,9) + bpf_mtap(ifp, m_head); +#else + bpf_mtap(ifp->if_bpf, m_head); +#endif + } + + opts1 = opts2 = 0; + //hw tso + if ((m_head->m_pkthdr.csum_flags & CSUM_TSO) != 0) { + if ((sc->re_if_flags & RL_FLAG_DESCV2) == 0) { + opts2 |= RL_TDESC_CMD_LGSEND | + ((uint32_t)m_head->m_pkthdr.tso_segsz << + RL_TDESC_CMD_MSSVAL_SHIFT); + } else { + /* + * RTL8168C/RTL816CP/RTL8111C/RTL8111CP + */ + const uint16_t l4hoffset = + re_get_l4hdr_offset(m_head); + + if (re_get_eth_type(m_head) == ETHERTYPE_IPV6) + opts1 |= RL_TDESC_CMD_GTSENDV6; + else + opts1 |= RL_TDESC_CMD_GTSENDV4; + opts1 |= (l4hoffset << RL_TDESC_CMD_GTSEND_TCPHO_SHIFT); + opts2 |= ((uint32_t)m_head->m_pkthdr.tso_segsz << + RL_TDESC_CMD_MSSVALV2_SHIFT); + } + goto process_vlan; + } + //hw checksum + if ((m_head->m_pkthdr.csum_flags & RE_CSUM_FEATURES) != 0) { + if ((sc->re_if_flags & RL_FLAG_DESCV2) == 0) { + opts1 |= RL_IPV4CS1; + if (m_head->m_pkthdr.csum_flags & CSUM_TCP) + opts1 |= RL_TCPCS1; + if (m_head->m_pkthdr.csum_flags & CSUM_UDP) + opts1 |= RL_UDPCS1; + } else { + /* + * RTL8168C/RTL816CP/RTL8111C/RTL8111CP + */ + if (re_get_eth_type(m_head) == ETHERTYPE_IP) + opts2 |= RL_IPV4CS; + if (m_head->m_pkthdr.csum_flags & + (CSUM_TCP | CSUM_TCP_IPV6)) + opts2 |= RL_TCPCS; + else if (m_head->m_pkthdr.csum_flags & + (CSUM_UDP | CSUM_UDP_IPV6)) + opts2 |= RL_UDPCS; + if (m_head->m_pkthdr.csum_flags & + (CSUM_TCP_IPV6 | CSUM_UDP_IPV6)) { + const uint16_t l4hoffset = + re_get_l4hdr_offset(m_head); + + opts2 |= RL_CS_V6F | + (l4hoffset << RL_TDESC_CMD_CSUM_TCPHO_SHIFT); + } + } + goto process_vlan; + } +process_vlan: + //vlan + if (m_head->m_flags & M_VLANTAG) + opts2 |= bswap16(m_head->m_pkthdr.ether_vtag) | RL_TDESC_VLANCTL_TAG; +#ifdef _DEBUG_ + printf("PktLen=%d \n", m_head->m_pkthdr.len); +#endif + for (i = 0; i < nsegs; i++) { + if (segs[i].ds_len == 0) + continue; + + if (i == (nsegs - 1)) { + ls=1; + + /* + * Insure that the map for this transmission + * is placed at the array index of the last descriptor + * in this chain. (Swap last and first dmamaps.) + */ + map = sc->re_desc.re_tx_dmamap[first_entry]; + sc->re_desc.re_tx_dmamap[first_entry] = sc->re_desc.re_tx_dmamap[entry]; + sc->re_desc.re_tx_dmamap[entry] = map; + sc->re_desc.tx_buf[entry] = m_head; + } else + sc->re_desc.tx_buf[entry] = NULL; + + WritePacket(sc,&segs[i],fs,ls,opts2,opts1, entry); + + fs=0; + + tx_cur_index++; + entry = tx_cur_index % RE_TX_BUF_NUM; + } + sc->re_desc.tx_cur_index = tx_cur_index; +#ifdef _DEBUG_ + printf("\n"); +#endif + queued++; + } + + sc->re_desc.tx_cur_index = tx_cur_index; + + if (queued == 0) + return; + + re_start_tx(sc); + +#if OS_VER < VERSION(9,0) + ifp->if_timer = 5; +#endif + + return; +} + +static void _re_start_tx(struct re_softc *sc) +{ + switch (sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + CSR_WRITE_2(sc, RE_TPPOLL_8125, RE_NPQ_8125); + break; + default: + CSR_WRITE_1(sc, RE_TPPOLL, RE_NPQ); + break; + } +} + +static void re_start_tx(struct re_softc *sc) +{ + bus_dmamap_sync(sc->re_desc.tx_desc_tag, + sc->re_desc.tx_desc_dmamap, + BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE); + + _re_start_tx(sc); +} + +/* + * Encapsulate an mbuf chain in a descriptor by coupling the mbuf data + * pointers to the fragment pointers. + */ +static int re_encap(struct re_softc *sc,struct mbuf **m_head) +{ + struct mbuf *m_new = NULL; + + m_new = m_defrag(*m_head, M_DONTWAIT); + + if (m_new == NULL) { + printf("re%d: no memory for tx list", sc->re_unit); + return (1); + } + + /* Pad frames to at least 60 bytes. */ + if (m_new->m_pkthdr.len < RE_MIN_FRAMELEN) { /* Case length < 60 bytes */ + /* + * Make security concious people happy: zero out the + * bytes in the pad area, since we don't know what + * this mbuf cluster buffer's previous user might + * have left in it. + */ + bzero(mtod(m_new, char *) + m_new->m_pkthdr.len, + RE_MIN_FRAMELEN - m_new->m_pkthdr.len); + m_new->m_pkthdr.len = RE_MIN_FRAMELEN; + m_new->m_len = m_new->m_pkthdr.len; + } + + *m_head = m_new; + + return(0); +} + +#define MIN_IPV4_PATCH_PKT_LEN (121) +#define MIN_IPV6_PATCH_PKT_LEN (147) +static int re_8125_pad(struct re_softc *sc,struct mbuf *m_head) +{ + uint32_t min_pkt_len; + uint16_t ether_type; + + if ((m_head->m_pkthdr.csum_flags & (CSUM_TCP | CSUM_UDP)) != 0) + goto out; + + ether_type = re_get_eth_type(m_head); + min_pkt_len = RE_MIN_FRAMELEN; + if (ether_type == ETHERTYPE_IP) { + struct ip *ip = (struct ip *)mtodo(m_head, ETHER_HDR_LEN); + if (ip->ip_p == IPPROTO_UDP) + min_pkt_len = MIN_IPV4_PATCH_PKT_LEN; + } else if (ether_type == ETHERTYPE_IPV6) { + struct ip6_hdr *ip6 = (struct ip6_hdr *)mtodo(m_head, ETHER_HDR_LEN); + if (ip6->ip6_nxt == IPPROTO_UDP) + min_pkt_len = MIN_IPV6_PATCH_PKT_LEN; + } + + if (m_head->m_pkthdr.len < min_pkt_len) { + static const uint8_t pad[MIN_IPV4_PATCH_PKT_LEN]; + uint16_t pad_len = min_pkt_len - m_head->m_pkthdr.len; + if (!m_append(m_head, pad_len, pad)) + return (1); + + if (ether_type == ETHERTYPE_IP && + m_head->m_pkthdr.csum_flags & CSUM_IP) { + struct ip *ip; + m_head->m_data += ETHER_HDR_LEN; + ip = mtod(m_head, struct ip *); + ip->ip_sum = in_cksum(m_head, ip->ip_hl << 2); + m_head->m_data -= ETHER_HDR_LEN; + m_head->m_pkthdr.csum_flags &= ~CSUM_IP; + } + } + +out: + return(0); +} + +static void WritePacket(struct re_softc *sc, bus_dma_segment_t *segs, int fs, int ls, uint32_t opts2, uint32_t opts1, uint32_t entry) +{ + union TxDesc *txptr; + uint32_t status; + + txptr = &(sc->re_desc.tx_desc[entry]); + + status = RL_TDESC_CMD_OWN | opts1 | segs->ds_len; + + if (fs) + status |= RL_TDESC_CMD_SOF; + if (ls) + status |= RL_TDESC_CMD_EOF; + if (entry == (RE_TX_BUF_NUM - 1)) + status |= RL_TDESC_CMD_EOR; + + txptr->so1.TxBuff = htole64(segs->ds_addr); + + txptr->ul[1] = htole32(opts2); + /* make sure opts2 is set before opts1 */ + wmb(); + txptr->ul[0] = htole32(status); +} + +static uint32_t CountFreeTxDescNum(struct re_descriptor *desc) +{ + uint32_t ret=desc->tx_last_index + RE_TX_BUF_NUM - desc->tx_cur_index; + + return ret; +} + +/* +static int CountMbufNum(struct mbuf *m_head) +{ + int ret=0; + struct mbuf *ptr = m_head; + + while (ptr!=NULL) { + if (ptr->m_len >0) + ret++; + ptr=ptr->m_next; + } + + return ret; +} +*/ + +#ifdef RE_FIXUP_RX +static __inline void re_fixup_rx(struct mbuf *m) +{ + int i; + uint16_t *src, *dst; + + src = mtod(m, uint16_t *); + dst = src - (RE_ETHER_ALIGN - ETHER_ALIGN) / sizeof *src; + + for (i = 0; i < (m->m_len / sizeof(uint16_t) + 1); i++) + *dst++ = *src++; + + m->m_data -= RE_ETHER_ALIGN - ETHER_ALIGN; +} +#endif + +/* + * A frame was downloaded to the chip. It's safe for us to clean up + * the list buffers. + */ +static void re_txeof(struct re_softc *sc) /* Transmit OK/ERR handler */ +{ + union TxDesc *txptr; + struct ifnet *ifp; + u_int32_t txstat; + u_int32_t entry; + u_int32_t tx_cur_index; + u_int32_t tx_last_index; + + /* printf("X");*/ + + ifp = RE_GET_IFNET(sc); + +#if OS_VER < VERSION(9,0) + /* Clear the timeout timer. */ + ifp->if_timer = 0; +#endif + tx_cur_index = sc->re_desc.tx_cur_index; + tx_last_index = sc->re_desc.tx_last_index; + /* No packet to complete. */ + if (tx_cur_index == tx_last_index) + return; + + bus_dmamap_sync(sc->re_desc.tx_desc_tag, + sc->re_desc.tx_desc_dmamap, + BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE); + + while (tx_cur_index != tx_last_index) { + entry = tx_last_index % RE_TX_BUF_NUM; + txptr=&(sc->re_desc.tx_desc[entry]); + txstat = le32toh(txptr->ul[0]); + if (txstat & RL_TDESC_STAT_OWN) + break; +#ifdef _DEBUG_ + printf("**** Tx OK ****\n"); +#endif + if (sc->re_desc.tx_buf[entry]!=NULL) { + bus_dmamap_sync(sc->re_desc.re_tx_mtag, + sc->re_desc.re_tx_dmamap[entry], + BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(sc->re_desc.re_tx_mtag, + sc->re_desc.re_tx_dmamap[entry]); + /* Free Current MBuf in a Mbuf list*/ + m_freem(sc->re_desc.tx_buf[entry]); + sc->re_desc.tx_buf[entry] = NULL; + } + + tx_last_index++; + } + + if (sc->re_desc.tx_last_index != tx_last_index) { + sc->re_desc.tx_last_index = tx_last_index; + ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; + } + + /* prevent tx stop. */ + if (tx_cur_index != tx_last_index) + _re_start_tx(sc); + + return; +} + +#if defined(INET) || defined(INET6) +static int +re_lro_rx(struct re_softc *sc, struct mbuf *m) +{ + struct lro_ctrl *lro; + + lro = &sc->re_lro; + + if (lro->lro_mbuf_max != 0) { + tcp_lro_queue_mbuf(lro, m); + return (0); + } + + return (tcp_lro_rx(lro, m, 0)); +} +#endif + +static void +re_rxq_input(struct re_softc *sc, struct mbuf *m, bool lro_able) +{ + struct ifnet *ifp; + + ifp = RE_GET_IFNET(sc); + +#if defined(INET) || defined(INET6) + if ((ifp->if_capenable & IFCAP_LRO) && lro_able) { + if (re_lro_rx(sc, m) == 0) + return; + } +#endif + + /*#if OS_VER < VERSION(5, 1)*/ +#if OS_VER < VERSION(4,9) + /* Remove header from mbuf and pass it on. */ + m_adj(m, sizeof(struct ether_header)); + ether_input(ifp, eh, m); +#else + (*ifp->if_input)(ifp, m); +#endif +} + +static void +re_drain_soft_lro(struct re_softc *sc) +{ +#if defined(INET) || defined(INET6) +#if OS_VER >= VERSION(11,0) + tcp_lro_flush_all(&sc->re_lro); +#else + struct lro_entry *queued; + + while ((!SLIST_EMPTY(&lro->lro_active))) { + queued = SLIST_FIRST(&lro->lro_active); + SLIST_REMOVE_HEAD(&lro->lro_active, next); + tcp_lro_flush(lro, queued); + } +#endif //OS_VER >= VERSION(11,0) +#endif //defined(INET) || defined(INET6) +} + +/* + * A frame has been uploaded: pass the resulting mbuf chain up to + * the higher level protocols. + * + * You know there's something wrong with a PCI bus-master chip design + * when you have to use m_devget(). + * + * The receive operation is badly documented in the datasheet, so I'll + * attempt to document it here. The driver provides a buffer area and + * places its base address in the RX buffer start address register. + * The chip then begins copying frames into the RX buffer. Each frame + * is preceeded by a 32-bit RX status word which specifies the length + * of the frame and certain other status bits. Each frame (starting with + * the status word) is also 32-bit aligned. The frame length is in the + * first 16 bits of the status word; the lower 15 bits correspond with + * the 'rx status register' mentioned in the datasheet. + * + * Note: to make the Alpha happy, the frame payload needs to be aligned + * on a 32-bit boundary. To achieve this, we cheat a bit by copying from + * the ring buffer starting at an address two bytes before the actual + * data location. We can then shave off the first two bytes using m_adj(). + * The reason we do this is because m_devget() doesn't let us specify an + * offset into the mbuf storage space, so we have to artificially create + * one. The ring is allocated in such a way that there are a few unused + * bytes of space preceecing it so that it will be safe for us to do the + * 2-byte backstep even if reading from the ring at offset 0. + */ +static int re_rxeof(struct re_softc *sc) /* Receive Data OK/ERR handler */ +{ + struct mbuf *m; + struct ifnet *ifp; + union RxDesc *rxptr; + struct mbuf *buf; + int size; + int maxpkt = RE_RX_BUDGET; + u_int32_t entry; + u_int32_t pkt_size; + u_int32_t rx_cur_index; + u_int32_t opts2,opts1,status; + bool lro_able; + + /* RE_LOCK_ASSERT(sc);*/ + + ifp = RE_GET_IFNET(sc); + + bus_dmamap_sync(sc->re_desc.rx_desc_tag, + sc->re_desc.rx_desc_dmamap, + BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE); + + rx_cur_index = sc->re_desc.rx_cur_index; + while (maxpkt > 0) { + entry = rx_cur_index % RE_RX_BUF_NUM; + rxptr=&(sc->re_desc.rx_desc[entry]); + opts1 = le32toh(rxptr->ul[0]); + lro_able = false; + + /* Check Receive OK */ + if (opts1&RL_RDESC_STAT_OWN) + break; + + /* Check if this packet is received correctly*/ + if (opts1&RL_RDESC_RES) /*Check RES bit*/ + goto drop_packet; + + pkt_size = (opts1&RL_RDESC_STAT_GFRAGLEN)-ETHER_CRC_LEN; + if (pkt_size > sc->re_rx_mbuf_sz) + goto drop_packet; + + /* Wait other fields is dmaed */ + rmb(); + + opts2 = le32toh(rxptr->ul[1]); + + //buf = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR); /* Alloc a new mbuf */ + + if (sc->re_rx_mbuf_sz <= MCLBYTES) + size = MCLBYTES; + else if (sc->re_rx_mbuf_sz <= MJUMPAGESIZE) + size = MJUMPAGESIZE; + else + size = MJUM9BYTES; + + buf = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, size); + if (buf==NULL) + goto drop_packet; + + buf->m_len = buf->m_pkthdr.len = size; +#ifdef RE_FIXUP_RX + /* + * This is part of an evil trick to deal with non-x86 platforms. + * The RealTek chip requires RX buffers to be aligned on 64-bit + * boundaries, but that will hose non-x86 machines. To get around + * this, we leave some empty space at the start of each buffer + * and for non-x86 hosts, we copy the buffer back six bytes + * to achieve word alignment. This is slightly more efficient + * than allocating a new buffer, copying the contents, and + * discarding the old buffer. + */ + m_adj(buf, RE_ETHER_ALIGN); +#endif + + bus_dmamap_sync(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[entry], + BUS_DMASYNC_POSTREAD); + bus_dmamap_unload(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[entry]); + + m = sc->re_desc.rx_buf[entry]; + sc->re_desc.rx_buf[entry] = buf; + m->m_pkthdr.len = m->m_len = pkt_size; + m->m_pkthdr.rcvif = ifp; + +#ifdef RE_FIXUP_RX + re_fixup_rx(m); +#endif + + //vlan + if (opts2 & RL_RDESC_VLANCTL_TAG) { + m->m_pkthdr.ether_vtag = + bswap16((opts2 & RL_RDESC_VLANCTL_DATA)); + m->m_flags |= M_VLANTAG; + } + if (ifp->if_capenable & IFCAP_RXCSUM) { + if ((sc->re_if_flags & RL_FLAG_DESCV2) == 0) { + u_int32_t proto = opts1 & RL_ProtoMASK; + + if (proto != 0) + m->m_pkthdr.csum_flags |= CSUM_IP_CHECKED; + if (!(opts1 & RL_IPF)) + m->m_pkthdr.csum_flags |= CSUM_IP_VALID; + if (((proto == RL_ProtoTCP) && !(opts1 & RL_TCPF)) || + ((proto == RL_ProtoUDP) && !(opts1 & RL_UDPF))) { + m->m_pkthdr.csum_flags |= CSUM_DATA_VALID|CSUM_PSEUDO_HDR; + m->m_pkthdr.csum_data = 0xffff; + if (proto == RL_ProtoTCP) + lro_able = true; + } + } else { + /* + * RTL8168C/RTL816CP/RTL8111C/RTL8111CP + */ + if (opts2 & RL_V4F) + m->m_pkthdr.csum_flags |= CSUM_IP_CHECKED; + if ((opts2 & RL_V4F) && !(opts1 & RL_IPF)) + m->m_pkthdr.csum_flags |= CSUM_IP_VALID; + if (((opts1 & RL_TCPT) && !(opts1 & RL_TCPF)) || + ((opts1 & RL_UDPT) && !(opts1 & RL_UDPF))) { + m->m_pkthdr.csum_flags |= CSUM_DATA_VALID|CSUM_PSEUDO_HDR; + m->m_pkthdr.csum_data = 0xffff; + if (opts1 & RL_TCPT) + lro_able = true; + } + } + } + +#if OS_VER < VERSION(11,0) + ifp->if_ipackets++; +#else + if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1); +#endif +#ifdef _DEBUG_ + printf("Rcv Packet, Len=%d \n", m->m_len); +#endif + + RE_UNLOCK(sc); + + re_rxq_input(sc, m, lro_able); + + RE_LOCK(sc); + + /* Load the map for rx buffer. */ + bus_dmamap_load(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[entry], + sc->re_desc.rx_buf[entry]->m_data, + sc->re_rx_desc_buf_sz, + re_rx_dma_map_buf, rxptr, + 0); + bus_dmamap_sync(sc->re_desc.re_rx_mtag, + sc->re_desc.re_rx_dmamap[entry], + BUS_DMASYNC_PREREAD); +update_desc: + status = RL_RDESC_CMD_OWN | sc->re_rx_desc_buf_sz; + if (entry == (RE_RX_BUF_NUM - 1)) + status |= RL_RDESC_CMD_EOR; + + rxptr->ul[1]=0; + /* make sure desc is all set before releasing it */ + wmb(); + rxptr->ul[0] = htole32(status); + + rx_cur_index++; + + maxpkt--; + + continue; +drop_packet: +#if OS_VER < VERSION(11,0) + ifp->if_ierrors++; +#else + if_inc_counter(ifp, IFCOUNTER_IERRORS, 1); +#endif + goto update_desc; + } + + if (sc->re_desc.rx_cur_index != rx_cur_index) { + if (ifp->if_capenable & IFCAP_LRO) { + RE_UNLOCK(sc); + re_drain_soft_lro(sc); + RE_LOCK(sc); + } + sc->re_desc.rx_cur_index = rx_cur_index; + bus_dmamap_sync(sc->re_desc.rx_desc_tag, + sc->re_desc.rx_desc_dmamap, + BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE); + } + + return (RE_RX_BUDGET - maxpkt); +} + +#if OS_VER < VERSION(7,0) +static void re_intr(void *arg) /* Interrupt Handler */ +#else +static int re_intr(void *arg) /* Interrupt Handler */ +#endif //OS_VER < VERSION(7,0) +{ + struct re_softc *sc; + + sc = arg; + + if ((sc->re_if_flags & (RL_FLAG_MSI | RL_FLAG_MSIX)) == 0) { + if ((CSR_READ_2(sc, RE_ISR) & RE_INTRS) == 0) { +#if OS_VER < VERSION(7,0) + return; +#else + return (FILTER_STRAY); +#endif + } + } + + /* Disable interrupts. */ + CSR_WRITE_2(sc, RE_IMR, 0x0000); + +#if OS_VER < VERSION(7,0) + re_int_task(arg, 0); +#else //OS_VER < VERSION(7,0) +#if OS_VER < VERSION(11,0) + taskqueue_enqueue_fast(sc->re_tq, &sc->re_inttask); +#else ////OS_VER < VERSION(11,0) + taskqueue_enqueue(sc->re_tq, &sc->re_inttask); +#endif //OS_VER < VERSION(11,0) + return (FILTER_HANDLED); +#endif //OS_VER < VERSION(7,0) +} + +#if OS_VER < VERSION(7,0) +static void re_intr_8125(void *arg) /* Interrupt Handler */ +#else +static int re_intr_8125(void *arg) /* Interrupt Handler */ +#endif //OS_VER < VERSION(7,0) +{ + struct re_softc *sc; + + sc = arg; + + if ((sc->re_if_flags & (RL_FLAG_MSI | RL_FLAG_MSIX)) == 0) { + if ((CSR_READ_4(sc, RE_ISR0_8125) & RE_INTRS) == 0) { +#if OS_VER < VERSION(7,0) + return; +#else + return (FILTER_STRAY); +#endif + } + } + + /* Disable interrupts. */ + CSR_WRITE_4(sc, RE_IMR0_8125, 0x00000000); + +#if OS_VER < VERSION(7,0) + re_int_task_8125(arg, 0); +#else //OS_VER < VERSION(7,0) +#if OS_VER < VERSION(11,0) + taskqueue_enqueue_fast(sc->re_tq, &sc->re_inttask); +#else ////OS_VER < VERSION(11,0) + taskqueue_enqueue(sc->re_tq, &sc->re_inttask); +#endif //OS_VER < VERSION(11,0) + return (FILTER_HANDLED); +#endif //OS_VER < VERSION(7,0) +} + +static void re_int_task_poll(void *arg, int npending) +{ + struct re_softc *sc; + struct ifnet *ifp; + int done; + + sc = arg; + + RE_LOCK(sc); + + ifp = RE_GET_IFNET(sc); + + if (sc->suspended || + (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { + RE_UNLOCK(sc); + return; + } + + done = re_rxeof(sc); + + re_txeof(sc); + + if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) + re_start_locked(ifp); + + RE_UNLOCK(sc); + +#if OS_VER>=VERSION(7,0) + if (done >= RE_RX_BUDGET) { +#if OS_VER < VERSION(11,0) + taskqueue_enqueue_fast(sc->re_tq, &sc->re_inttask_poll); +#else ////OS_VER < VERSION(11,0) + taskqueue_enqueue(sc->re_tq, &sc->re_inttask_poll); +#endif //OS_VER < VERSION(11,0) + return; + } +#endif //OS_VER>=VERSION(7,0) + + /* Re-enable interrupts. */ + CSR_WRITE_2(sc, RE_IMR, RE_INTRS); +} + +static void re_int_task(void *arg, int npending) +{ + struct re_softc *sc; + struct ifnet *ifp; + int done; + u_int32_t status; + + sc = arg; + + RE_LOCK(sc); + + ifp = RE_GET_IFNET(sc); + + status = CSR_READ_2(sc, RE_ISR); + + if (status) { + CSR_WRITE_2(sc, RE_ISR, status & ~RE_ISR_FIFO_OFLOW); + } + + if (sc->suspended || + (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { + RE_UNLOCK(sc); + return; + } + + done = re_rxeof(sc); + + if (sc->re_type == MACFG_21) { + if (status & RE_ISR_FIFO_OFLOW) { + sc->rx_fifo_overflow = 1; + CSR_WRITE_2(sc, RE_IntrMitigate, 0x0000); + CSR_WRITE_4(sc, RE_TIMERCNT, 0x4000); + CSR_WRITE_4(sc, RE_TIMERINT, 0x4000); + } else { + sc->rx_fifo_overflow = 0; + CSR_WRITE_4(sc,RE_CPlusCmd, 0x51512082); + } + + if (status & RE_ISR_PCS_TIMEOUT) { + if ((status & RE_ISR_FIFO_OFLOW) && + (!(status & (RE_ISR_RX_OK | RE_ISR_TX_OK | RE_ISR_RX_OVERRUN)))) { + re_reset(sc); + re_init_locked(sc); + sc->rx_fifo_overflow = 0; + CSR_WRITE_2(sc, RE_ISR, RE_ISR_FIFO_OFLOW); + } + } + } + + re_txeof(sc); + + if (status & RE_ISR_SYSTEM_ERR) { + re_reset(sc); + re_init_locked(sc); + } + + if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) + re_start_locked(ifp); + + RE_UNLOCK(sc); + +#if OS_VER>=VERSION(7,0) + if (done >= RE_RX_BUDGET) { +#if OS_VER < VERSION(11,0) + taskqueue_enqueue_fast(sc->re_tq, &sc->re_inttask_poll); +#else ////OS_VER < VERSION(11,0) + taskqueue_enqueue(sc->re_tq, &sc->re_inttask_poll); +#endif //OS_VER < VERSION(11,0) + return; + } +#endif //OS_VER>=VERSION(7,0) + + /* Re-enable interrupts. */ + CSR_WRITE_2(sc, RE_IMR, RE_INTRS); +} + +static void re_int_task_8125_poll(void *arg, int npending) +{ + struct re_softc *sc; + struct ifnet *ifp; + int done; + + sc = arg; + + RE_LOCK(sc); + + ifp = RE_GET_IFNET(sc); + + if (sc->suspended || + (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { + RE_UNLOCK(sc); + return; + } + + done = re_rxeof(sc); + + re_txeof(sc); + + if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) + re_start_locked(ifp); + + RE_UNLOCK(sc); + +#if OS_VER>=VERSION(7,0) + if (done >= RE_RX_BUDGET) { +#if OS_VER < VERSION(11,0) + taskqueue_enqueue_fast(sc->re_tq, &sc->re_inttask_poll); +#else ////OS_VER < VERSION(11,0) + taskqueue_enqueue(sc->re_tq, &sc->re_inttask_poll); +#endif //OS_VER < VERSION(11,0) + return; + } +#endif //OS_VER>=VERSION(7,0) + + /* Re-enable interrupts. */ + CSR_WRITE_4(sc, RE_IMR0_8125, RE_INTRS); +} + +static void re_int_task_8125(void *arg, int npending) +{ + struct re_softc *sc; + struct ifnet *ifp; + int done; + u_int32_t status; + + sc = arg; + + RE_LOCK(sc); + + ifp = RE_GET_IFNET(sc); + + status = CSR_READ_4(sc, RE_ISR0_8125); + + if (status) { + CSR_WRITE_4(sc, RE_ISR0_8125, status & ~RE_ISR_FIFO_OFLOW); + } + + if (sc->suspended || + (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { + RE_UNLOCK(sc); + return; + } + + done = re_rxeof(sc); + + re_txeof(sc); + + if (status & RE_ISR_SYSTEM_ERR) { + re_reset(sc); + re_init_locked(sc); + } + + if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) + re_start_locked(ifp); + + RE_UNLOCK(sc); + +#if OS_VER>=VERSION(7,0) + if (done >= RE_RX_BUDGET) { +#if OS_VER < VERSION(11,0) + taskqueue_enqueue_fast(sc->re_tq, &sc->re_inttask_poll); +#else ////OS_VER < VERSION(11,0) + taskqueue_enqueue(sc->re_tq, &sc->re_inttask_poll); +#endif //OS_VER < VERSION(11,0) + return; + } +#endif //OS_VER>=VERSION(7,0) + + /* Re-enable interrupts. */ + CSR_WRITE_4(sc, RE_IMR0_8125, RE_INTRS); +} + +static void re_set_multicast_reg(struct re_softc *sc, u_int32_t mask0, + u_int32_t mask4) +{ + u_int8_t enable_cfg_reg_write = 0; + + if (sc->re_type == MACFG_5 || sc->re_type == MACFG_6) + enable_cfg_reg_write = 1; + + if (enable_cfg_reg_write) + re_enable_cfg9346_write(sc); + CSR_WRITE_4(sc, RE_MAR0, mask0); + CSR_WRITE_4(sc, RE_MAR4, mask4); + if (enable_cfg_reg_write) + re_disable_cfg9346_write(sc); + + return; +} + +#endif // _WIN32 + +static void re_clear_all_rx_packet_filter(struct re_softc *sc) +{ + CSR_WRITE_4(sc, RE_RXCFG, CSR_READ_4(sc, RE_RXCFG) & + ~(RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_INDIV | RE_RXCFG_RX_MULTI | + RE_RXCFG_RX_BROAD | RE_RXCFG_RX_RUNT | RE_RXCFG_RX_ERRPKT)); +} + +#ifndef _WIN32 + +static void re_set_rx_packet_filter_in_sleep_state(struct re_softc *sc) +{ + u_int32_t rxfilt; + + rxfilt = CSR_READ_4(sc, RE_RXCFG); + + rxfilt &= ~(RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_INDIV | RE_RXCFG_RX_MULTI | RE_RXCFG_RX_BROAD | RE_RXCFG_RX_RUNT | RE_RXCFG_RX_ERRPKT); + rxfilt |= (RE_RXCFG_RX_INDIV | RE_RXCFG_RX_MULTI | RE_RXCFG_RX_BROAD); + + CSR_WRITE_4(sc, RE_RXCFG, rxfilt); + + re_set_multicast_reg(sc, 0xFFFFFFFF, 0xFFFFFFFF); + + return; +} + +#endif // !_WIN32 + +#ifdef _WIN32 +void re_set_rx_packet_filter(struct re_softc* sc) +#else // _WIN32 +static void re_set_rx_packet_filter(struct re_softc *sc) +#endif // _WIN32 +{ +#ifndef _WIN32 + struct ifnet *ifp; +#endif // !_WIN32 + + u_int32_t rxfilt; + +#ifndef _WIN32 + ifp = RE_GET_IFNET(sc); +#endif // !_WIN32 + + rxfilt = CSR_READ_4(sc, RE_RXCFG); + +#ifdef _WIN32 + rxfilt &= ~(RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_INDIV | + RE_RXCFG_RX_MULTI | RE_RXCFG_RX_BROAD | + RE_RXCFG_RX_RUNT | RE_RXCFG_RX_ERRPKT); + + NET_PACKET_FILTER_FLAGS flags = sc->dev->PacketFilterFlags; + + if (flags & NetPacketFilterFlagPromiscuous) { + rxfilt |= ( + RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_INDIV | + RE_RXCFG_RX_MULTI | RE_RXCFG_RX_BROAD | + RE_RXCFG_RX_RUNT | RE_RXCFG_RX_ERRPKT + ); + } + else { + rxfilt |= ((flags & NetPacketFilterFlagAllMulticast) ? (RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_MULTI) : 0); + rxfilt |= ((flags & NetPacketFilterFlagMulticast) ? (RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_MULTI) : 0); + rxfilt |= ((flags & NetPacketFilterFlagBroadcast) ? RE_RXCFG_RX_BROAD : 0); + rxfilt |= ((flags & NetPacketFilterFlagDirected) ? RE_RXCFG_RX_INDIV : 0); + } +#else // _WIN32 + rxfilt |= RE_RXCFG_RX_INDIV; + + if (ifp->if_flags & (IFF_MULTICAST | IFF_ALLMULTI | IFF_PROMISC)) { + rxfilt |= (RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_MULTI); + } else { + rxfilt &= ~(RE_RXCFG_RX_MULTI); + } + + if (ifp->if_flags & IFF_PROMISC) { + rxfilt |= (RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_RUNT | RE_RXCFG_RX_ERRPKT); + } else { + rxfilt &= ~(RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_RUNT | RE_RXCFG_RX_ERRPKT); + } + + if (ifp->if_flags & (IFF_BROADCAST | IFF_PROMISC)) { + rxfilt |= RE_RXCFG_RX_BROAD; + } else { + rxfilt &= ~RE_RXCFG_RX_BROAD; + } +#endif // _WIN32 + + CSR_WRITE_4(sc, RE_RXCFG, rxfilt); + +#ifdef _WIN32 + typedef union { + struct { + uint32_t mask0; + uint32_t mask4; + }; + uint8_t bytes[32]; + } MarRegs; + + MarRegs regs = { 0 }; + + if (flags & (NetPacketFilterFlagPromiscuous | NetPacketFilterFlagAllMulticast)) { + regs.mask0 = 0xffffffff; + regs.mask4 = 0xffffffff; + } + else { + for (UINT i = 0; i < sc->dev->MCAddressCount; i++) { + UCHAR byte, bit; + NET_ADAPTER_LINK_LAYER_ADDRESS address = sc->dev->MCList[i]; + GetMulticastBit(&sc->dev->MCList[i], &byte, &bit); + regs.bytes[byte] |= bit; + } + } + + u_int8_t enable_cfg_reg_write = 0; + + if (sc->re_type == MACFG_5 || sc->re_type == MACFG_6) + enable_cfg_reg_write = 1; + + if (enable_cfg_reg_write) + re_enable_cfg9346_write(sc); + + CSR_WRITE_4(sc, RE_MAR0, regs.mask0); + CSR_WRITE_4(sc, RE_MAR4, regs.mask4); + + if (enable_cfg_reg_write) + re_disable_cfg9346_write(sc); +#else // _WIN32 + re_setmulti(sc); +#endif // _WIN32 + + return; +} + +#ifndef _WIN32 + +#if OS_VER >= VERSION(13,0) +static u_int +re_hash_maddr(void *arg, struct sockaddr_dl *sdl, u_int cnt) +{ + uint32_t h, *hashes = arg; + + h = ether_crc32_be(LLADDR(sdl), ETHER_ADDR_LEN) >> 26; + if (h < 32) + hashes[0] |= (1 << h); + else + hashes[1] |= (1 << (h - 32)); + + return (1); +} +#endif + +/* + * Program the 64-bit multicast hash filter. + */ +static void re_setmulti(struct re_softc *sc) +{ + struct ifnet *ifp; + int h = 0; + u_int32_t hashes[2] = { 0, 0 }; +#if OS_VER < VERSION(13,0) + struct ifmultiaddr *ifma; +#endif + u_int32_t rxfilt; + int mcnt = 0; + + ifp = RE_GET_IFNET(sc); + + rxfilt = CSR_READ_4(sc, RE_RXCFG); + + if (ifp->if_flags & IFF_ALLMULTI || ifp->if_flags & IFF_PROMISC) { + rxfilt |= RE_RXCFG_RX_MULTI; + CSR_WRITE_4(sc, RE_RXCFG, rxfilt); + re_set_multicast_reg(sc, 0xFFFFFFFF, 0xFFFFFFFF); + + return; + } + + /* now program new ones */ +#if OS_VER >= VERSION(13,0) + mcnt = if_foreach_llmaddr(ifp, re_hash_maddr, hashes); +#else +#if OS_VER >= VERSION(12,0) + if_maddr_rlock(ifp); +#elif OS_VER > VERSION(6,0) + IF_ADDR_LOCK(ifp); +#endif +#if OS_VER < VERSION(4,9) + for (ifma = ifp->if_multiaddrs.lh_first; ifma != NULL; + ifma = ifma->ifma_link.le_next) +#elif OS_VER < VERSION(12,0) + TAILQ_FOREACH(ifma,&ifp->if_multiaddrs,ifma_link) +#else + CK_STAILQ_FOREACH(ifma,&ifp->if_multiaddrs,ifma_link) +#endif + { + if (ifma->ifma_addr->sa_family != AF_LINK) + continue; + h = ether_crc32_be(LLADDR((struct sockaddr_dl *) + ifma->ifma_addr), ETHER_ADDR_LEN) >> 26; + if (h < 32) + hashes[0] |= (1 << h); + else + hashes[1] |= (1 << (h - 32)); + mcnt++; + } +#if OS_VER >= VERSION(12,0) + if_maddr_runlock(ifp); +#elif OS_VER > VERSION(6,0) + IF_ADDR_UNLOCK(ifp); +#endif +#endif + + if (mcnt) { + if ((sc->re_if_flags & RL_FLAG_PCIE) != 0) { + h = bswap32(hashes[0]); + hashes[0] = bswap32(hashes[1]); + hashes[1] = h; + } + rxfilt |= RE_RXCFG_RX_MULTI; + } else + rxfilt &= ~RE_RXCFG_RX_MULTI; + + CSR_WRITE_4(sc, RE_RXCFG, rxfilt); + re_set_multicast_reg(sc, hashes[0], hashes[1]); + + return; +} + +static int re_ioctl(struct ifnet *ifp, u_long command, caddr_t data) +{ + struct re_softc *sc = ifp->if_softc; + struct ifreq *ifr = (struct ifreq *) data; + /*int s;*/ + int error = 0; + int mask, reinit; + /*s = splimp();*/ + + switch(command) { + case SIOCSIFADDR: + case SIOCGIFADDR: + error = ether_ioctl(ifp, command, data); + + break; + case SIOCSIFMTU: + + //printf("before mtu =%d\n",(int)ifp->if_mtu); + if (ifr->ifr_mtu > sc->max_jumbo_frame_size) { + error = EINVAL; + break; + } + RE_LOCK(sc); + if (ifp->if_mtu != ifr->ifr_mtu) { + ifp->if_mtu = ifr->ifr_mtu; + //if running + if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + //printf("set mtu when running\n"); + re_stop(sc); + + re_release_buf(sc); + set_rxbufsize(sc); + error = re_alloc_buf(sc); + + if (error == 0) { + re_init_locked(sc); + } + } else { + //if not running + re_release_buf(sc); + set_rxbufsize(sc); + error = re_alloc_buf(sc); + if (error == 0) { + /* Init descriptors. */ + re_var_init(sc); + } + + } + + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~(IFCAP_TSO | + IFCAP_VLAN_HWTSO); + ifp->if_hwassist &= ~CSUM_TSO; + } + // printf("after mtu =%d\n",(int)ifp->if_mtu); + } + RE_UNLOCK(sc); + break; + case SIOCSIFFLAGS: + RE_LOCK(sc); + if (ifp->if_flags & IFF_UP) { + re_init_locked(sc); + } else if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + re_stop(sc); + } + error = 0; + RE_UNLOCK(sc); + break; + case SIOCADDMULTI: + case SIOCDELMULTI: + RE_LOCK(sc); + re_set_rx_packet_filter(sc); + RE_UNLOCK(sc); + error = 0; + break; + case SIOCGIFMEDIA: + case SIOCSIFMEDIA: + error = ifmedia_ioctl(ifp, ifr, &sc->media, command); + break; + case SIOCSIFCAP: + mask = ifr->ifr_reqcap ^ ifp->if_capenable; + reinit = 0; + + if ((mask & IFCAP_TXCSUM) != 0 && (ifp->if_capabilities & IFCAP_TXCSUM) != 0) { + ifp->if_capenable ^= IFCAP_TXCSUM; + if ((ifp->if_capenable & IFCAP_TXCSUM) != 0) { + if ((sc->re_type == MACFG_24) || (sc->re_type == MACFG_25) || (sc->re_type == MACFG_26)) + ifp->if_hwassist |= CSUM_TCP | CSUM_UDP; + else + ifp->if_hwassist |= RE_CSUM_FEATURES_IPV4; + } else + ifp->if_hwassist &= ~RE_CSUM_FEATURES_IPV4; + reinit = 1; + } + + if ((mask & IFCAP_TXCSUM_IPV6) != 0 && (ifp->if_capabilities & IFCAP_TXCSUM_IPV6) != 0) { + ifp->if_capenable ^= IFCAP_TXCSUM_IPV6; + if ((ifp->if_capenable & IFCAP_TXCSUM_IPV6) != 0) { + ifp->if_hwassist |= RE_CSUM_FEATURES_IPV6; + } else + ifp->if_hwassist &= ~RE_CSUM_FEATURES_IPV6; + + if (!((sc->re_if_flags & RL_FLAG_DESCV2) && + (sc->re_if_flags & RL_FLAG_8168G_PLUS))) + ifp->if_hwassist &= ~RE_CSUM_FEATURES_IPV6; + reinit = 1; + } + + if ((mask & IFCAP_RXCSUM) != 0 && + (ifp->if_capabilities & IFCAP_RXCSUM) != 0) { + ifp->if_capenable ^= IFCAP_RXCSUM; + reinit = 1; + } + + if ((mask & IFCAP_RXCSUM_IPV6) != 0 && + (ifp->if_capabilities & IFCAP_RXCSUM_IPV6) != 0) { + ifp->if_capenable ^= IFCAP_RXCSUM_IPV6; + reinit = 1; + } - if (sc->re_type == MACFG_60) { - data16 = MP_ReadMcuAccessRegWord(sc, 0xD3C0); - data16 &= 0xF000; - data16 |= 0x0FFF; - MP_WriteMcuAccessRegWord(sc, 0xD3C0, data16); + if ((ifp->if_mtu <= ETHERMTU) || ((sc->re_type>= MACFG_3) &&(sc->re_type <=MACFG_6)) || ((sc->re_type>= MACFG_21) && (sc->re_type <=MACFG_23))) { + if (ifp->if_capenable & IFCAP_TXCSUM) + sc->re_tx_cstag = 1; + else + sc->re_tx_cstag = 0; - data16 = MP_ReadMcuAccessRegWord(sc, 0xD3C2); - data16 &= 0xFF00; - MP_WriteMcuAccessRegWord(sc, 0xD3C2, data16); + if (ifp->if_capenable & (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6)) + sc->re_rx_cstag = 1; + else + sc->re_rx_cstag = 0; + } - data16 = MP_ReadMcuAccessRegWord(sc, 0xD3C4); - data16 |= (BIT_0); - MP_WriteMcuAccessRegWord(sc, 0xD3C4, data16); + if ((mask & IFCAP_TSO4) != 0 && + (ifp->if_capabilities & IFCAP_TSO4) != 0) { + ifp->if_capenable ^= IFCAP_TSO4; + if ((IFCAP_TSO4 & ifp->if_capenable) != 0) + ifp->if_hwassist |= CSUM_IP_TSO; + else + ifp->if_hwassist &= ~CSUM_IP_TSO; + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~IFCAP_TSO4; + ifp->if_hwassist &= ~CSUM_IP_TSO; + } + } + /* + if ((mask & IFCAP_TSO6) != 0 && + (ifp->if_capabilities & IFCAP_TSO6) != 0) { + ifp->if_capenable ^= IFCAP_TSO6; + if ((IFCAP_TSO6 & ifp->if_capenable) != 0) + ifp->if_hwassist |= CSUM_IP6_TSO; + else + ifp->if_hwassist &= ~CSUM_IP6_TSO; + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~IFCAP_TSO6; + ifp->if_hwassist &= ~CSUM_IP6_TSO; + } + if (ifp->if_mtu > ETHERMTU) { + ifp->if_capenable &= ~IFCAP_TSO6; + ifp->if_hwassist &= ~CSUM_IP6_TSO; + } + } + */ + if ((mask & IFCAP_VLAN_HWTSO) != 0 && + (ifp->if_capabilities & IFCAP_VLAN_HWTSO) != 0) + ifp->if_capenable ^= IFCAP_VLAN_HWTSO; + if ((mask & IFCAP_VLAN_HWTAGGING) != 0 && + (ifp->if_capabilities & IFCAP_VLAN_HWTAGGING) != 0) { + ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING; + /* TSO over VLAN requires VLAN hardware tagging. */ + //if ((ifp->if_capenable & IFCAP_VLAN_HWTAGGING) == 0) + // ifp->if_capenable &= ~IFCAP_VLAN_HWTSO; + reinit = 1; + } + if (mask & IFCAP_LRO) + ifp->if_capenable ^= IFCAP_LRO; + + if ((mask & IFCAP_WOL) != 0 && + (ifp->if_capabilities & IFCAP_WOL) != 0) { + if ((mask & IFCAP_WOL_UCAST) != 0) + ifp->if_capenable ^= IFCAP_WOL_UCAST; + if ((mask & IFCAP_WOL_MCAST) != 0) + ifp->if_capenable ^= IFCAP_WOL_MCAST; + if ((mask & IFCAP_WOL_MAGIC) != 0) + ifp->if_capenable ^= IFCAP_WOL_MAGIC; + } + if (reinit && ifp->if_drv_flags & IFF_DRV_RUNNING) { + ifp->if_drv_flags &= ~IFF_DRV_RUNNING; + re_init(sc); + } + VLAN_CAPABILITIES(ifp); + break; + default: + error = EINVAL; + break; } - else if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || - sc->re_type == MACFG_76) { - if (sc->RequireAdjustUpsTxLinkPulseTiming) { - data16 = MP_ReadMcuAccessRegWord(sc, 0xD412); - data16 &= ~(0x0FFF); - data16 |= sc->SwrCnt1msIni; - MP_WriteMcuAccessRegWord(sc, 0xD412, data16); - } - data16 = MP_ReadMcuAccessRegWord(sc, 0xE056); - data16 &= ~(BIT_7 | BIT_6 | BIT_5 | BIT_4); - MP_WriteMcuAccessRegWord(sc, 0xE056, data16); + /*(void)splx(s);*/ - data16 = MP_ReadMcuAccessRegWord(sc, 0xE052); - data16 &= ~(BIT_15 | BIT_14 | BIT_13 | BIT_3); - data16 |= BIT_15; - MP_WriteMcuAccessRegWord(sc, 0xE052, data16); + return(error); +} - data16 = MP_ReadMcuAccessRegWord(sc, 0xD420); - data16 &= ~(BIT_11 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0); - data16 |= 0x45F; - MP_WriteMcuAccessRegWord(sc, 0xD420, data16); +#endif // !_WIN32 - data16 = MP_ReadMcuAccessRegWord(sc, 0xE0D6); - data16 &= ~(BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0); - data16 |= 0x17F; - MP_WriteMcuAccessRegWord(sc, 0xE0D6, data16); +#ifdef _WIN32 +void re_link_on_patch(struct re_softc *sc) +#else // _WIN32 +static void re_link_on_patch(struct re_softc *sc) +#endif // _WIN32 +{ + struct ifnet *ifp; + + ifp = RE_GET_IFNET(sc); + + if (sc->re_type == MACFG_50 || sc->re_type == MACFG_51 || sc->re_type == MACFG_52) { + if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_1000MF) { + re_eri_write(sc, 0x1bc, 4, 0x00000011, ERIAR_ExGMAC); + re_eri_write(sc, 0x1dc, 4, 0x0000001f, ERIAR_ExGMAC); + } else if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_100M) { + re_eri_write(sc, 0x1bc, 4, 0x0000001f, ERIAR_ExGMAC); + re_eri_write(sc, 0x1dc, 4, 0x0000001f, ERIAR_ExGMAC); + } else { + re_eri_write(sc, 0x1bc, 4, 0x0000001f, ERIAR_ExGMAC); + re_eri_write(sc, 0x1dc, 4, 0x0000002d, ERIAR_ExGMAC); + } +#ifdef _WIN32 + } else if ((sc->re_type == MACFG_38 || sc->re_type == MACFG_39)) { +#else + } else if ((sc->re_type == MACFG_38 || sc->re_type == MACFG_39) && (ifp->if_flags & IFF_UP)) { +#endif // _WIN32 + if (sc->re_type == MACFG_38 && (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_10M)) { + CSR_WRITE_4(sc, RE_RXCFG, CSR_READ_4(sc, RE_RXCFG) | RE_RXCFG_RX_ALLPHYS); + } else if (sc->re_type == MACFG_39) { + if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_1000MF) { + re_eri_write(sc, 0x1bc, 4, 0x00000011, ERIAR_ExGMAC); + re_eri_write(sc, 0x1dc, 4, 0x00000005, ERIAR_ExGMAC); + } else if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_100M) { + re_eri_write(sc, 0x1bc, 4, 0x0000001f, ERIAR_ExGMAC); + re_eri_write(sc, 0x1dc, 4, 0x00000005, ERIAR_ExGMAC); + } else { + re_eri_write(sc, 0x1bc, 4, 0x0000001f, ERIAR_ExGMAC); + re_eri_write(sc, 0x1dc, 4, 0x0000003f, ERIAR_ExGMAC); + } + } +#ifdef _WIN32 + } else if ((sc->re_type == MACFG_36 || sc->re_type == MACFG_37) && sc->eee_enable == 1) { +#else // _WIN32 + } else if ((sc->re_type == MACFG_36 || sc->re_type == MACFG_37) && eee_enable == 1) { +#endif // _WIN32 + /*Full -Duplex mode*/ + if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_FULL_DUP) { + re_mdio_write(sc, 0x1F, 0x0006); + re_mdio_write(sc, 0x00, 0x5a30); + re_mdio_write(sc, 0x1F, 0x0000); + if (CSR_READ_1(sc, RE_PHY_STATUS) & (RL_PHY_STATUS_10M | RL_PHY_STATUS_100M)) + CSR_WRITE_4(sc, RE_TXCFG, (CSR_READ_4(sc, RE_TXCFG) & ~BIT_19) | BIT_25); + + } else { + re_mdio_write(sc, 0x1F, 0x0006); + re_mdio_write(sc, 0x00, 0x5a00); + re_mdio_write(sc, 0x1F, 0x0000); + if (CSR_READ_1(sc, RE_PHY_STATUS) & (RL_PHY_STATUS_10M | RL_PHY_STATUS_100M)) + CSR_WRITE_4(sc, RE_TXCFG, (CSR_READ_4(sc, RE_TXCFG) & ~BIT_19) | RE_TXCFG_IFG); + } + } else if ((sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || + sc->re_type == MACFG_58 || sc->re_type == MACFG_59 || + sc->re_type == MACFG_60 || sc->re_type == MACFG_61 || + sc->re_type == MACFG_62 || sc->re_type == MACFG_67 || + sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || + sc->re_type == MACFG_72 || sc->re_type == MACFG_73 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || + sc->re_type == MACFG_76 || sc->re_type == MACFG_80 || + sc->re_type == MACFG_81 || sc->re_type == MACFG_82 || + sc->re_type == MACFG_83 || sc->re_type == MACFG_84 || + sc->re_type == MACFG_85 || sc->re_type == MACFG_86 || + sc->re_type == MACFG_87 || sc->re_type == MACFG_90 || + sc->re_type == MACFG_91 || sc->re_type == MACFG_92) && +#ifdef _WIN32 + true) { +#else // _WIN32 + (ifp->if_flags & IFF_UP)) { +#endif // _WIN32 + if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_FULL_DUP) + CSR_WRITE_4(sc, RE_TXCFG, (CSR_READ_4(sc, RE_TXCFG) | (BIT_24 | BIT_25)) & ~BIT_19); + else + CSR_WRITE_4(sc, RE_TXCFG, (CSR_READ_4(sc, RE_TXCFG) | BIT_25) & ~(BIT_19 | BIT_24)); } - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || + sc->re_type == MACFG_61 || sc->re_type == MACFG_62) { + /*half mode*/ + if (!(CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_FULL_DUP)) { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, MII_ANAR, re_mdio_read(sc, MII_ANAR)&~(ANAR_FC |ANAR_PAUSE_ASYM)); + } + } - CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_6); - CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_6); + if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_10M) { + if (sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || + sc->re_type == MACFG_72 || sc->re_type == MACFG_73) { + uint32_t Data32; + + Data32 = re_eri_read(sc, 0x1D0, 1, ERIAR_ExGMAC); + Data32 |= BIT_1; + re_eri_write(sc, 0x1D0, 1, Data32, ERIAR_ExGMAC); + } else if (sc->re_type == MACFG_80 || sc->re_type == MACFG_81 || + sc->re_type == MACFG_82 || sc->re_type == MACFG_83 || + sc->re_type == MACFG_84 || sc->re_type == MACFG_85 || + sc->re_type == MACFG_90 || sc->re_type == MACFG_91 || + sc->re_type == MACFG_92) { + re_mac_ocp_write(sc, 0xE080, re_mac_ocp_read(sc, 0xE080)|BIT_1); + } + } - CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~BIT_3); + if (sc->RequiredPfmPatch) + re_set_pfm_patch(sc, (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_10M) ? 1 : 0); - if (sc->mtu > ETHERMTU) - CSR_WRITE_1(sc, RE_MTPS, 0x27); +#ifndef _WIN32 + re_init_unlock(sc); +#endif // !_WIN32 +} - if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || - sc->re_type == MACFG_58 || sc->re_type == MACFG_59) { - MP_WriteMcuAccessRegWord(sc, 0xC140, 0xFFFF); - } - else if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || - sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || - sc->re_type == MACFG_76) { - MP_WriteMcuAccessRegWord(sc, 0xC140, 0xFFFF); - MP_WriteMcuAccessRegWord(sc, 0xC142, 0xFFFF); - } +#ifndef _WIN32 - if (sc->mtu > ETHERMTU) { - ifp->if_capenable &= ~IFCAP_HWCSUM; - ifp->if_hwassist &= ~RE_CSUM_FEATURES; +static void re_link_down_patch(struct re_softc *sc) +{ + if (sc->RequiredPfmPatch) + re_set_pfm_patch(sc, 1); + + re_txeof(sc); + re_rxeof(sc); + re_stop(sc); +} + +/* + * Check Link Status. + */ +static void re_check_link_status(struct re_softc *sc) +{ + u_int8_t link_state; + struct ifnet *ifp; + + ifp = RE_GET_IFNET(sc); + + if (re_link_ok(sc)) { + link_state = LINK_STATE_UP; + } else { + link_state = LINK_STATE_DOWN; } - else { - if (sc->re_tx_cstag) { - ifp->if_capenable |= IFCAP_TXCSUM; - ifp->if_hwassist |= RE_CSUM_FEATURES; - } - if (sc->re_rx_cstag) { - ifp->if_capenable |= IFCAP_RXCSUM; - } + + if (link_state != sc->link_state) { + sc->link_state = link_state; + if (link_state == LINK_STATE_UP) { + re_link_on_patch(sc); + re_link_state_change(ifp, LINK_STATE_UP); + } else { + re_link_state_change(ifp, LINK_STATE_DOWN); + re_link_down_patch(sc); + } } - } - else if (macver == 0x50000000) { - /*set configuration space offset 0x70f to 0x17*/ - re_set_offset70f(sc, 0x27); +} + +static void re_init_timer(struct re_softc *sc) +{ +#ifdef RE_USE_NEW_CALLOUT_FUN + callout_init(&sc->re_stat_ch, CALLOUT_MPSAFE); +#else + callout_handle_init(&sc->re_stat_ch); +#endif +} + +static void re_stop_timer(struct re_softc *sc) +{ +#ifdef RE_USE_NEW_CALLOUT_FUN + callout_stop(&sc->re_stat_ch); +#else + untimeout(re_tick, sc, sc->re_stat_ch); +#endif +} + +static void re_start_timer(struct re_softc *sc) +{ +#ifdef RE_USE_NEW_CALLOUT_FUN + callout_reset(&sc->re_stat_ch, hz, re_tick, sc); +#else + re_stop_timer(sc); + sc->re_stat_ch = timeout(re_tick, sc, hz); +#endif +} + +static void re_tick(void *xsc) +{ + /*called per second*/ + struct re_softc *sc; + int s; + + s = splimp(); - re_set_offset79(sc, 0x40); + sc = xsc; + /*mii = device_get_softc(sc->re_miibus); - Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); - Data32 |= BIT_7 | BIT_8 | BIT_9 | BIT_10 | BIT_11 | BIT_12; - re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); + mii_tick(mii);*/ - re_eri_write(sc, 0xC8, 4, 0x00080002, ERIAR_ExGMAC); - re_eri_write(sc, 0xCC, 1, 0x2F, ERIAR_ExGMAC); - re_eri_write(sc, 0xD0, 1, 0x5F, ERIAR_ExGMAC); - re_eri_write(sc, 0xE8, 4, 0x00100006, ERIAR_ExGMAC); + splx(s); + + RE_LOCK(sc); - if (sc->re_type == MACFG_62 || sc->re_type == MACFG_67) { - OOB_mutex_lock(sc); - re_eri_write(sc, 0x5F0, 4, 0x4F87, ERIAR_ExGMAC); - OOB_mutex_unlock(sc); + if (sc->re_link_chg_det == 1) { + re_check_link_status(sc); + re_start_timer(sc); } - Data32 = re_eri_read(sc, 0xdc, 4, ERIAR_ExGMAC); - Data32 &= ~BIT_0; - re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); - Data32 |= BIT_0; - re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); + RE_UNLOCK(sc); + + return; +} + +#if OS_VER < VERSION(7,0) +static void re_watchdog(ifp) +struct ifnet *ifp; +{ + struct re_softc *sc; - Data32 = re_eri_read(sc, 0x2FC, 4, ERIAR_ExGMAC); - Data32 &= ~(BIT_0 | BIT_1 | BIT_2); - Data32 |= (BIT_0 | BIT_1); - re_eri_write(sc, 0x2FC, 4, Data32, ERIAR_ExGMAC); + sc = ifp->if_softc; - Data32 = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); - Data32 &= ~BIT_12; - re_eri_write(sc, 0x1B0, 4, Data32, ERIAR_ExGMAC); + printf("re%d: watchdog timeout\n", sc->re_unit); +#if OS_VER < VERSION(11,0) + ifp->if_oerrors++; +#else + if_inc_counter(ifp, IFCOUNTER_OERRORS, 1); +#endif - CSR_WRITE_4(sc, RE_TXCFG, CSR_READ_4(sc, RE_TXCFG) | BIT_7); - CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); - CSR_WRITE_1(sc, 0x1B, CSR_READ_1(sc, 0x1B) & ~0x07); + re_txeof(sc); + re_rxeof(sc); + re_init(sc); - CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); + return; +} +#endif - if (sc->re_type == MACFG_61) { - MP_WriteEPhyUshort(sc, 0x00, 0x10AB); - MP_WriteEPhyUshort(sc, 0x06, 0xF030); - MP_WriteEPhyUshort(sc, 0x08, 0x2006); - MP_WriteEPhyUshort(sc, 0x0D, 0x1666); - ClearPCIePhyBit(sc, 0x0C, (BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4)); +#endif !_WIN32 + +/* + * Set media options. + */ +#ifdef _WIN32 +int re_ifmedia_upd(struct re_softc* sc) +#else // _WIN32 +static int re_ifmedia_upd(struct ifnet *ifp) +#endif // _WIN32 +{ +#ifndef _WIN32 + struct re_softc *sc = ifp->if_softc; + struct ifmedia *ifm = &sc->media; +#endif // !_WIN32 + + int anar; + int gbcr; + +#ifndef _WIN32 + if (IFM_TYPE(ifm->ifm_media) != IFM_ETHER) + return(EINVAL); +#endif // !_WIN32 + + if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || + sc->re_type == MACFG_72 || sc->re_type == MACFG_73 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75) { + //Disable Giga Lite + re_mdio_write(sc, 0x1F, 0x0A42); + re_clear_eth_phy_bit(sc, 0x14, BIT_9); + if (sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || + sc->re_type == MACFG_72 || sc->re_type == MACFG_73) + re_clear_eth_phy_bit(sc, 0x14, BIT_7); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); } - else if (sc->re_type == MACFG_62) { - MP_WriteEPhyUshort(sc, 0x00, 0x10A3); - MP_WriteEPhyUshort(sc, 0x19, 0xFC00); - MP_WriteEPhyUshort(sc, 0x1E, 0x20EA); + +#ifdef _WIN32 + gbcr = re_mdio_read(sc, MII_100T2CR) & + ~(GTCR_ADV_1000TFDX | GTCR_ADV_1000THDX); + anar = re_mdio_read(sc, MII_ANAR) & + ~(ANAR_10 | ANAR_10_FD | ANAR_TX | ANAR_TX_FD | ANAR_FC | ANAR_PAUSE_ASYM); + + switch (sc->dev->SpeedDuplex) { + case RtSpeedDuplexModeAutoNegotiation: + anar = (ANAR_10 | ANAR_10_FD | ANAR_TX | ANAR_TX_FD); + gbcr |= (GTCR_ADV_1000TFDX | GTCR_ADV_1000THDX); + break; + case RtSpeedDuplexMode1GFullDuplex: + gbcr |= GTCR_ADV_1000TFDX; + break; + case RtSpeedDuplexMode1GHalfDuplex: + gbcr |= GTCR_ADV_1000THDX; + break; + case RtSpeedDuplexMode100MFullDuplex: + anar |= ANAR_TX_FD; + break; + case RtSpeedDuplexMode100MHalfDuplex: + anar |= ANAR_TX; + break; + case RtSpeedDuplexMode10MFullDuplex: + anar |= ANAR_10_FD; + break; + case RtSpeedDuplexMode10MHalfDuplex: + anar |= ANAR_10; + break; + default: + DBGPRINT(sc, "Unsupported media type\n"); + return(0); } - else if (sc->re_type == MACFG_67) { - MP_WriteEPhyUshort(sc, 0x00, 0x10AB); - MP_WriteEPhyUshort(sc, 0x19, 0xFC00); - MP_WriteEPhyUshort(sc, 0x1E, 0x20EB); - MP_WriteEPhyUshort(sc, 0x0D, 0x1666); - ClearPCIePhyBit(sc, 0x0B, BIT_0); - SetPCIePhyBit(sc, 0x1D, BIT_14); - ClearAndSetPCIePhyBit(sc, - 0x0C, - BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_8 | BIT_7 | BIT_6 | BIT_5, - BIT_9 | BIT_4 - ); + + if (sc->dev->SpeedDuplex == RtSpeedDuplexMode10MFullDuplex || + sc->dev->SpeedDuplex == RtSpeedDuplexMode10MHalfDuplex) { + if (sc->re_type == MACFG_13) { + re_mdio_write(sc, MII_BMCR, 0x8000); + } } - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); + if (sc->re_device_id == RT_DEVICEID_8162) + re_clear_eth_ocp_phy_bit(sc, 0xA5D4, RTK_ADVERTISE_2500FULL); - CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_6); - CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_6); + re_mdio_write(sc, 0x1F, 0x0000); + if (sc->re_device_id == RT_DEVICEID_8169 || sc->re_device_id == RT_DEVICEID_8169SC || + sc->re_device_id == RT_DEVICEID_8168 || sc->re_device_id == RT_DEVICEID_8161 || + sc->re_device_id == RT_DEVICEID_8162) { + switch (sc->dev->FlowControl) { + case FlowControlTxOnly: + anar |= ANAR_PAUSE_ASYM; + break; + case FlowControlRxOnly: + anar |= ANAR_FC; + break; + case FlowControlTxRx: + anar |= (ANAR_FC | ANAR_PAUSE_ASYM); + break; + } - CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~BIT_3); + re_mdio_write(sc, MII_ANAR, anar); + re_mdio_write(sc, MII_100T2CR, gbcr); + re_mdio_write(sc, MII_BMCR, BMCR_RESET | BMCR_AUTOEN | BMCR_STARTNEG); + } + else if (sc->re_type == MACFG_36) { + switch (sc->dev->FlowControl) { + case FlowControlTxOnly: + anar |= ANAR_PAUSE_ASYM; + break; + case FlowControlRxOnly: + anar |= ANAR_FC; + break; + case FlowControlTxRx: + anar |= (ANAR_FC | ANAR_PAUSE_ASYM); + break; + } - if (sc->mtu > ETHERMTU) - CSR_WRITE_1(sc, RE_MTPS, 0x27); + re_mdio_write(sc, MII_ANAR, anar); + re_mdio_write(sc, MII_BMCR, BMCR_RESET | BMCR_AUTOEN | BMCR_STARTNEG); + } + else { + re_mdio_write(sc, MII_ANAR, anar | 1); + re_mdio_write(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); + } +#else // _WIN32 + switch (IFM_SUBTYPE(ifm->ifm_media)) { + case IFM_AUTO: + anar = ANAR_TX_FD | + ANAR_TX | + ANAR_10_FD | + ANAR_10; + gbcr = GTCR_ADV_1000TFDX | + GTCR_ADV_1000THDX; + break; + case IFM_1000_SX: +#if OS_VER < 500000 + case IFM_1000_TX: +#else + case IFM_1000_T: +#endif + anar = ANAR_TX_FD | + ANAR_TX | + ANAR_10_FD | + ANAR_10; + gbcr = GTCR_ADV_1000TFDX | + GTCR_ADV_1000THDX; + break; + case IFM_100_TX: + gbcr = re_mdio_read(sc, MII_100T2CR) & + ~(GTCR_ADV_1000TFDX | GTCR_ADV_1000THDX); + if ((ifm->ifm_media & IFM_GMASK) == IFM_FDX) { + anar = ANAR_TX_FD | + ANAR_TX | + ANAR_10_FD | + ANAR_10; + } else { + anar = ANAR_TX | + ANAR_10_FD | + ANAR_10; + } + break; + case IFM_10_T: + gbcr = re_mdio_read(sc, MII_100T2CR) & + ~(GTCR_ADV_1000TFDX | GTCR_ADV_1000THDX); + if ((ifm->ifm_media & IFM_GMASK) == IFM_FDX) { + anar = ANAR_10_FD | + ANAR_10; + } else { + anar = ANAR_10; + } - if (sc->re_type == MACFG_67) { - data16 = MP_ReadMcuAccessRegWord(sc, 0xD3E2); - data16 &= 0xF000; - data16 |= 0xAFD; - MP_WriteMcuAccessRegWord(sc, 0xD3E2, data16); + if (sc->re_type == MACFG_13) { + re_mdio_write(sc, MII_BMCR, 0x8000); + } - data16 = MP_ReadMcuAccessRegWord(sc, 0xD3E4); - data16 &= 0xFF00; - MP_WriteMcuAccessRegWord(sc, 0xD3E4, data16); + break; + default: + printf("re%d: Unsupported media type\n", sc->re_unit); + return(0); + } - data16 = MP_ReadMcuAccessRegWord(sc, 0xE860); - data16 |= BIT_7; - MP_WriteMcuAccessRegWord(sc, 0xE860, data16); + if (sc->re_device_id==RT_DEVICEID_8162) + re_clear_eth_ocp_phy_bit(sc, 0xA5D4, RTK_ADVERTISE_2500FULL); + + re_mdio_write(sc, 0x1F, 0x0000); + if (sc->re_device_id==RT_DEVICEID_8169 || sc->re_device_id==RT_DEVICEID_8169SC || + sc->re_device_id==RT_DEVICEID_8168 || sc->re_device_id==RT_DEVICEID_8161 || + sc->re_device_id==RT_DEVICEID_8162) { + re_mdio_write(sc, MII_ANAR, anar | ANAR_FC | ANAR_PAUSE_ASYM); + re_mdio_write(sc, MII_100T2CR, gbcr); + re_mdio_write(sc, MII_BMCR, BMCR_RESET | BMCR_AUTOEN | BMCR_STARTNEG); + } else if (sc->re_type == MACFG_36) { + re_mdio_write(sc, MII_ANAR, anar | ANAR_FC | ANAR_PAUSE_ASYM); + re_mdio_write(sc, MII_BMCR, BMCR_RESET | BMCR_AUTOEN | BMCR_STARTNEG); + } else { + re_mdio_write(sc, MII_ANAR, anar | 1); + re_mdio_write(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); } +#endif // _WIN32 - MP_WriteMcuAccessRegWord(sc, 0xC140, 0xFFFF); - MP_WriteMcuAccessRegWord(sc, 0xC142, 0xFFFF); + return(0); +} - if (sc->mtu > ETHERMTU) { - ifp->if_capenable &= ~IFCAP_HWCSUM; - ifp->if_hwassist &= ~RE_CSUM_FEATURES; - } - else { - if (sc->re_tx_cstag) { - ifp->if_capenable |= IFCAP_TXCSUM; - ifp->if_hwassist |= RE_CSUM_FEATURES; +#ifdef _WIN32 +int re_ifmedia_upd_8125(struct re_softc *sc) +#else // _WIN32 +static int re_ifmedia_upd_8125(struct ifnet *ifp) +#endif // _WIN32 +{ +#ifndef _WIN32 + struct re_softc *sc = ifp->if_softc; + struct ifmedia *ifm = &sc->media; +#endif // !_WIN32 + + int anar; + int gbcr; + int cr2500; + +#ifndef _WIN32 + if (IFM_TYPE(ifm->ifm_media) != IFM_ETHER) + return(EINVAL); +#endif // !_WIN32 + + //Disable Giga Lite + re_clear_eth_ocp_phy_bit(sc, 0xA428, BIT_9); + re_clear_eth_ocp_phy_bit(sc, 0xA5EA, BIT_0); + if (sc->re_device_id == RT_DEVICEID_8126) + re_clear_eth_ocp_phy_bit(sc, 0xB5EA, BIT_1); + + cr2500 = re_real_ocp_phy_read(sc, 0xA5D4) & + ~(RTK_ADVERTISE_2500FULL | RTK_ADVERTISE_5000FULL); + gbcr = re_mdio_read(sc, MII_100T2CR) & + ~(GTCR_ADV_1000TFDX | GTCR_ADV_1000THDX); + anar = re_mdio_read(sc, MII_ANAR) & + ~(ANAR_10 | ANAR_10_FD | ANAR_TX | ANAR_TX_FD | ANAR_FC | ANAR_PAUSE_ASYM); + +#ifdef _WIN32 + switch (sc->dev->SpeedDuplex) { + case RtSpeedDuplexModeAutoNegotiation: + if (sc->re_device_id == RT_DEVICEID_8126) + cr2500 |= RTK_ADVERTISE_5000FULL; + cr2500 |= RTK_ADVERTISE_2500FULL; + anar = (ANAR_10 | ANAR_10_FD | ANAR_TX | ANAR_TX_FD); + gbcr |= (GTCR_ADV_1000TFDX | GTCR_ADV_1000THDX); + break; + case RtSpeedDuplexMode5GFullDuplex: + if (sc->re_device_id == RT_DEVICEID_8126) { + cr2500 |= RTK_ADVERTISE_5000FULL; + break; } - if (sc->re_rx_cstag) { - ifp->if_capenable |= IFCAP_RXCSUM; + /* FALLTHROUGH in case not 5000 supported */ + case RtSpeedDuplexMode2GFullDuplex: + cr2500 |= RTK_ADVERTISE_2500FULL; + break; + case RtSpeedDuplexMode1GFullDuplex: + gbcr |= GTCR_ADV_1000TFDX; + break; + case RtSpeedDuplexMode1GHalfDuplex: + gbcr |= GTCR_ADV_1000THDX; + break; + case RtSpeedDuplexMode100MFullDuplex: + anar |= ANAR_TX_FD; + break; + case RtSpeedDuplexMode100MHalfDuplex: + anar |= ANAR_TX; + break; + case RtSpeedDuplexMode10MFullDuplex: + anar |= ANAR_10_FD; + break; + case RtSpeedDuplexMode10MHalfDuplex: + anar |= ANAR_10; + break; + default: + DBGPRINT(sc, "Unsupported media type\n"); + return(0); + } + + if (sc->dev->SpeedDuplex == RtSpeedDuplexMode10MFullDuplex || + sc->dev->SpeedDuplex == RtSpeedDuplexMode10MHalfDuplex) { + if (sc->re_type == MACFG_13) { + re_mdio_write(sc, MII_BMCR, 0x8000); } } - } - else if (macver == 0x54800000) { - MP_WriteMcuAccessRegWord(sc, 0xE098, 0xC302); - MP_WriteMcuAccessRegWord(sc, 0xD400, MP_ReadMcuAccessRegWord(sc, 0xD400) & ~(BIT_0)); + switch (sc->dev->FlowControl) { + case FlowControlTxOnly: + anar |= ANAR_PAUSE_ASYM; + break; + case FlowControlRxOnly: + anar |= ANAR_FC; + break; + case FlowControlTxRx: + anar |= (ANAR_FC | ANAR_PAUSE_ASYM); + break; + } +#else // _WIN32 + switch (IFM_SUBTYPE(ifm->ifm_media)) { + case IFM_AUTO: + case IFM_5000_T: + if (sc->re_device_id == RT_DEVICEID_8126) + cr2500 |= RTK_ADVERTISE_5000FULL; + /* FALLTHROUGH */ + case IFM_2500_SX: + case IFM_2500_X: + case IFM_2500_T: + cr2500 |= RTK_ADVERTISE_2500FULL; + /* FALLTHROUGH */ + case MACFG_80: + case IFM_1000_SX: +#if OS_VER < 500000 + case IFM_1000_TX: +#else + case IFM_1000_T: +#endif + gbcr |= GTCR_ADV_1000TFDX; + anar |= ANAR_TX_FD; + /* FALLTHROUGH */ + case IFM_100_TX: + anar |= ANAR_TX | ANAR_10_FD; + if ((ifm->ifm_media & IFM_GMASK) == IFM_FDX) + anar |= ANAR_TX_FD; + /* FALLTHROUGH */ + case IFM_10_T: + anar |= ANAR_10; + if ((ifm->ifm_media & IFM_GMASK) == IFM_FDX) + anar |= ANAR_10_FD; - if (sc->RequireAdjustUpsTxLinkPulseTiming) { - data16 = MP_ReadMcuAccessRegWord(sc, 0xD412); - data16 &= ~(0x0FFF); - data16 |= sc->SwrCnt1msIni; - MP_WriteMcuAccessRegWord(sc, 0xD412, data16); + if (sc->re_type == MACFG_13) { + re_mdio_write(sc, MII_BMCR, 0x8000); + } + break; + default: + printf("re%d: Unsupported media type\n", sc->re_unit); + return(0); } +#endif // _WIN32 + + re_mdio_write(sc, 0x1F, 0x0000); + re_real_ocp_phy_write(sc, 0xA5D4, cr2500); +#ifdef _WIN32 + re_mdio_write(sc, MII_ANAR, anar); +#else // _WIN32 + re_mdio_write(sc, MII_ANAR, anar | ANAR_FC | ANAR_PAUSE_ASYM); +#endif // _WIN32 + re_mdio_write(sc, MII_100T2CR, gbcr); + re_mdio_write(sc, MII_BMCR, BMCR_RESET | BMCR_AUTOEN | BMCR_STARTNEG); - data16 = MP_ReadMcuAccessRegWord(sc, 0xE056); - data16 &= ~(BIT_7 | BIT_6 | BIT_5 | BIT_4); - if (sc->HwPkgDet == 0x0F) - data16 |= (BIT_6 | BIT_5 | BIT_4); - MP_WriteMcuAccessRegWord(sc, 0xE056, data16); - if (FALSE == HW_SUPP_SERDES_PHY(sc)) - MP_WriteMcuAccessRegWord(sc, 0xEA80, 0x0003); - else - MP_WriteMcuAccessRegWord(sc, 0xEA80, 0x0000); - - OOB_mutex_lock(sc); - data16 = MP_ReadMcuAccessRegWord(sc, 0xE052); - data16 &= ~(BIT_3 | BIT_0); - if (sc->HwPkgDet == 0x0F) - data16 |= BIT_0; - MP_WriteMcuAccessRegWord(sc, 0xE052, data16); - OOB_mutex_unlock(sc); - - data16 = MP_ReadMcuAccessRegWord(sc, 0xD420); - data16 &= ~(BIT_11 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0); - data16 |= 0x45F; - MP_WriteMcuAccessRegWord(sc, 0xD420, data16); - - CSR_WRITE_1(sc, RE_TDFNR, 0x4); - - data16 = MP_ReadMcuAccessRegWord(sc, 0xE63E); - data16 &= ~(BIT_3 | BIT_2 | BIT_1); - MP_WriteMcuAccessRegWord(sc, 0xE63E, data16); - data16 |= (BIT_0); - MP_WriteMcuAccessRegWord(sc, 0xE63E, data16); - data16 &= ~(BIT_0); - MP_WriteMcuAccessRegWord(sc, 0xE63E, data16); - MP_WriteMcuAccessRegWord(sc, 0xC094, 0x0); - MP_WriteMcuAccessRegWord(sc, 0xC09E, 0x0); - - /*set configuration space offset 0x70f to 0x27*/ - re_set_offset70f(sc, 0x27); - - re_set_offset79(sc, 0x40); - - Data32 = re_eri_read(sc, 0xD4, 4, ERIAR_ExGMAC); - Data32 |= BIT_7 | BIT_8 | BIT_9 | BIT_10 | BIT_11 | BIT_12; - if (sc->re_type == MACFG_71 || sc->re_type == MACFG_72 || - sc->re_type == MACFG_73) - Data32 |= BIT_4; - re_eri_write(sc, 0xD4, 4, Data32, ERIAR_ExGMAC); - - Data32 = re_eri_read(sc, 0xDC, 4, ERIAR_ExGMAC); - Data32 |= (BIT_2 | BIT_3); - re_eri_write(sc, 0xDC, 4, Data32, ERIAR_ExGMAC); - - re_eri_write(sc, 0xC8, 4, 0x00080002, ERIAR_ExGMAC); - re_eri_write(sc, 0xCC, 1, 0x2F, ERIAR_ExGMAC); - re_eri_write(sc, 0xD0, 1, 0x5F, ERIAR_ExGMAC); - re_eri_write(sc, 0xE8, 4, 0x00100006, ERIAR_ExGMAC); - - OOB_mutex_lock(sc); - if (sc->HwPkgDet == 0x0F) - re_eri_write(sc, 0x5F0, 2, 0x4F00, ERIAR_ExGMAC); - else - re_eri_write(sc, 0x5F0, 2, 0x4000, ERIAR_ExGMAC); - OOB_mutex_unlock(sc); + return(0); +} - Data32 = re_eri_read(sc, 0xdc, 4, ERIAR_ExGMAC); - Data32 &= ~BIT_0; - re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); - Data32 |= BIT_0; - re_eri_write(sc, 0xdc, 1, Data32, ERIAR_ExGMAC); +#ifndef _WIN32 - Data32 = re_eri_read(sc, 0x2FC, 4, ERIAR_ExGMAC); - Data32 &= ~(BIT_0 | BIT_1); - Data32 |= (BIT_0); - re_eri_write(sc, 0x2FC, 4, Data32, ERIAR_ExGMAC); +/* + * Report current media status. + */ +static void re_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr) +{ + struct re_softc *sc; - Data32 = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); - Data32 &= ~BIT_12; - re_eri_write(sc, 0x1B0, 4, Data32, ERIAR_ExGMAC); + sc = ifp->if_softc; - Data32 = re_eri_read(sc, 0x1D0, 1, ERIAR_ExGMAC); - Data32 &= ~BIT_1; - re_eri_write(sc, 0x1D0, 1, Data32, ERIAR_ExGMAC); + RE_LOCK(sc); - re_eri_write(sc, 0xC0, 2, 0x0000, ERIAR_ExGMAC); - re_eri_write(sc, 0xB8, 4, 0x00000000, ERIAR_ExGMAC); + ifmr->ifm_status = IFM_AVALID; + ifmr->ifm_active = IFM_ETHER; - CSR_WRITE_4(sc, RE_TXCFG, CSR_READ_4(sc, RE_TXCFG) | BIT_7); - CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) & ~BIT_7); - CSR_WRITE_1(sc, 0x1B, CSR_READ_1(sc, 0x1B) & ~0x07); + if (re_link_ok(sc)) { + unsigned char msr; - CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); + ifmr->ifm_status |= IFM_ACTIVE; - ClearAndSetPCIePhyBit(sc, - 0x19, - BIT_6, - (BIT_12 | BIT_8) - ); - ClearAndSetPCIePhyBit(sc, - 0x59, - BIT_6, - (BIT_12 | BIT_8) - ); - ClearPCIePhyBit(sc, 0x0C, BIT_4); - ClearPCIePhyBit(sc, 0x4C, BIT_4); - ClearPCIePhyBit(sc, 0x0B, BIT_0); - - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_0); - - if (FALSE == HW_SUPP_SERDES_PHY(sc)) { - CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_6); - CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) | BIT_6); - CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_7); + msr = CSR_READ_1(sc, RE_PHY_STATUS); + if (msr & RL_PHY_STATUS_FULL_DUP) + ifmr->ifm_active |= IFM_FDX; + else + ifmr->ifm_active |= IFM_HDX; + + if (msr & RL_PHY_STATUS_10M) + ifmr->ifm_active |= IFM_10_T; + else if (msr & RL_PHY_STATUS_100M) + ifmr->ifm_active |= IFM_100_TX; + else if (msr & RL_PHY_STATUS_1000MF) + ifmr->ifm_active |= IFM_1000_T; } - else { - CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) & ~BIT_6); - CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~BIT_6); - CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) & ~BIT_7); + + RE_UNLOCK(sc); + + return; +} + +static void re_ifmedia_sts_8125(struct ifnet *ifp, struct ifmediareq *ifmr) +{ + struct re_softc *sc; + + sc = ifp->if_softc; + + RE_LOCK(sc); + + ifmr->ifm_status = IFM_AVALID; + ifmr->ifm_active = IFM_ETHER; + + if (re_link_ok(sc)) { + u_int32_t msr; + + ifmr->ifm_status |= IFM_ACTIVE; + + msr = CSR_READ_4(sc, RE_PHY_STATUS); + + if (msr & RL_PHY_STATUS_FULL_DUP) + ifmr->ifm_active |= IFM_FDX; + else + ifmr->ifm_active |= IFM_HDX; + + if (msr & RL_PHY_STATUS_10M) + ifmr->ifm_active |= IFM_10_T; + else if (msr & RL_PHY_STATUS_100M) + ifmr->ifm_active |= IFM_100_TX; + else if (msr & RL_PHY_STATUS_1000MF) + ifmr->ifm_active |= IFM_1000_T; + else if (msr & RL_PHY_STATUS_500MF) + ifmr->ifm_active |= IFM_1000_T; + else if (msr & RL_PHY_STATUS_1250MF) + ifmr->ifm_active |= IFM_1000_T; + else if (msr & RL_PHY_STATUS_2500MF) + ifmr->ifm_active |= IFM_2500_T; + else if (msr & RL_PHY_STATUS_5000MF_LITE) + ifmr->ifm_active |= IFM_2500_T; + else if (msr & RL_PHY_STATUS_5000MF) + ifmr->ifm_active |= IFM_5000_T; } - CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~BIT_3); + RE_UNLOCK(sc); - if (sc->mtu > ETHERMTU) - CSR_WRITE_1(sc, RE_MTPS, 0x27); + return; +} - MP_WriteMcuAccessRegWord(sc, 0xC140, 0xFFFF); - MP_WriteMcuAccessRegWord(sc, 0xC142, 0xFFFF); +#endif // !_WIN32 - if (sc->mtu > ETHERMTU) { - ifp->if_capenable &= ~IFCAP_HWCSUM; - ifp->if_hwassist &= ~RE_CSUM_FEATURES; +static bool re_is_advanced_eee_enabled(struct re_softc *sc) +{ + switch (sc->re_type) { + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + if (re_real_ocp_phy_read(sc, 0xA430) & BIT_15) + return true; + break; + default: + break; } - else { - if (sc->re_tx_cstag) { - ifp->if_capenable |= IFCAP_TXCSUM; - ifp->if_hwassist |= RE_CSUM_FEATURES; - } - if (sc->re_rx_cstag) { - ifp->if_capenable |= IFCAP_RXCSUM; - } + + return false; +} + +static void _re_disable_advanced_eee(struct re_softc *sc) +{ + u_int16_t data; + bool lock; + + if (re_is_advanced_eee_enabled(sc)) + lock = true; + else + lock = false; + + if (lock) + re_set_phy_mcu_patch_request(sc); + + switch (sc->re_type) { + case MACFG_59: + re_eri_write(sc, 0x1EA, 1, 0x00, ERIAR_ExGMAC); + + re_mdio_write(sc, 0x1F, 0x0A42); + data = re_mdio_read(sc, 0x16); + data &= ~(BIT_1); + re_mdio_write(sc, 0x16, data); + re_mdio_write(sc, 0x1F, 0x0000); + break; + case MACFG_60: + data = re_mac_ocp_read(sc, 0xE052); + data &= ~(BIT_0); + re_mac_ocp_write(sc, 0xE052, data); + + re_mdio_write(sc, 0x1F, 0x0A42); + data = re_mdio_read(sc, 0x16); + data &= ~(BIT_1); + re_mdio_write(sc, 0x16, data); + re_mdio_write(sc, 0x1F, 0x0000); + break; + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + data = re_mac_ocp_read(sc, 0xE052); + data &= ~(BIT_0); + re_mac_ocp_write(sc, 0xE052, data); + break; + case MACFG_68: + case MACFG_69: + case MACFG_74: + case MACFG_75: + data = re_mac_ocp_read(sc, 0xE052); + data &= ~(BIT_0); + re_mac_ocp_write(sc, 0xE052, data); + + re_mdio_write(sc, 0x1F, 0x0A43); + data = re_mdio_read(sc, 0x10) & ~(BIT_15); + re_mdio_write(sc, 0x10, data); + + re_mdio_write(sc, 0x1F, 0x0A44); + data = re_mdio_read(sc, 0x11) & ~(BIT_12 | BIT_13 | BIT_14); + re_mdio_write(sc, 0x11, data); + re_mdio_write(sc, 0x1f, 0x0000); + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_clear_mac_ocp_bit(sc, 0xE052, BIT_0); + re_clear_eth_ocp_phy_bit(sc, 0xA442, BIT_12 | BIT_13); + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_15); + break; } - } - if (!((sc->re_if_flags & RL_FLAG_DESCV2) && - (sc->re_if_flags & RL_FLAG_8168G_PLUS))) - ifp->if_hwassist &= ~(CSUM_TCP_IPV6 | CSUM_UDP_IPV6); - - //clear io_rdy_l23 - switch (sc->re_type) { - case MACFG_42: - case MACFG_43: - case MACFG_52: - case MACFG_53: - case MACFG_54: - case MACFG_55: - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_1); - break; - } - - switch (sc->re_type) { - case MACFG_36: - case MACFG_37: - case MACFG_38: - case MACFG_39: - case MACFG_42: - case MACFG_43: - case MACFG_50: - case MACFG_51: - case MACFG_52: - case MACFG_53: - case MACFG_54: - case MACFG_55: - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - _re_enable_aspm_clkreq_lock(sc, 1); - re_enable_force_clkreq(sc, 0); - break; - } -#if DISABLED_CODE - //clear wol - re_clrwol(sc); -#endif + if (lock) + re_clear_phy_mcu_patch_request(sc); +} + +static void re_disable_advanced_eee(struct re_softc *sc) +{ + if (sc->HwSuppDashVer > 1) + OOB_mutex_lock(sc); - data16 = CSR_READ_2(sc, RE_CPlusCmd); - if ((ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0) - data16 |= RL_CPLUSCMD_VLANSTRIP; - else - data16 &= ~RL_CPLUSCMD_VLANSTRIP; + _re_disable_advanced_eee(sc); - if ((ifp->if_capenable & IFCAP_RXCSUM) != 0) - data16 |= RL_RxChkSum; - else - data16 &= ~RL_RxChkSum; - CSR_WRITE_2(sc, RE_CPlusCmd, data16); + if (sc->HwSuppDashVer > 1) + OOB_mutex_unlock(sc); +} - re_disable_cfg9346_write(sc); - //CSR_WRITE_1(sc, 0xec, 0x3f); +static int re_enable_eee(struct re_softc *sc) +{ + int ret; + u_int16_t data; - if (sc->re_device_id == RT_DEVICEID_8169 || sc->re_device_id == RT_DEVICEID_8169SC) { - /* Enable transmit and receive.*/ - CSR_WRITE_1(sc, RE_COMMAND, RE_CMD_TX_ENB | RE_CMD_RX_ENB); + ret = 0; + switch (sc->re_type) { + case MACFG_42: + case MACFG_43: + re_eri_write(sc, 0x1B0, 2, 0xED03, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0004); + if (CSR_READ_1(sc, 0xEF) & 0x02) { + re_mdio_write(sc, 0x10, 0x731F); + re_mdio_write(sc, 0x19, 0x7630); + } else { + re_mdio_write(sc, 0x10, 0x711F); + re_mdio_write(sc, 0x19, 0x7030); + } + re_mdio_write(sc, 0x1A, 0x1506); + re_mdio_write(sc, 0x1B, 0x0551); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0002); + re_mdio_write(sc, 0x0D, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0003); + re_mdio_write(sc, 0x0E, 0x0015); + re_mdio_write(sc, 0x0D, 0x4003); + re_mdio_write(sc, 0x0E, 0x0002); + re_mdio_write(sc, 0x0D, 0x0000); + + re_mdio_write(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); + break; - /* Set the initial TX configuration.*/ - CSR_WRITE_4(sc, RE_TXCFG, RE_TXCFG_CONFIG); + case MACFG_53: + case MACFG_54: + case MACFG_55: + re_eri_write(sc, 0x1B0, 2, 0xED03, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x10, 0x731F); + re_mdio_write(sc, 0x19, 0x7630); + re_mdio_write(sc, 0x1A, 0x1506); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0002); + re_mdio_write(sc, 0x0D, 0x0000); + + re_mdio_write(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); + break; - /* Set the initial RX configuration.*/ - /* - * Program the multicast filter, if necessary. - */ - re_set_rx_packet_filter(sc); - } - else { - /* Set the initial RX configuration.*/ - /* - * Program the multicast filter, if necessary. - */ - re_set_rx_packet_filter(sc); + case MACFG_36: + case MACFG_37: + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0020); + data = re_mdio_read(sc, 0x15) | 0x0100; + re_mdio_write(sc, 0x15, data); + re_mdio_write(sc, 0x1F, 0x0006); + re_mdio_write(sc, 0x00, 0x5A30); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0006); + re_mdio_write(sc, 0x0D, 0x0000); + if ((CSR_READ_1(sc, RE_CFG4)&RL_CFG4_CUSTOMIZED_LED) && (CSR_READ_1(sc, RE_MACDBG) & BIT_7)) { + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8AC8); + re_mdio_write(sc, 0x06, CSR_READ_1(sc, RE_CUSTOM_LED)); + re_mdio_write(sc, 0x05, 0x8B82); + data = re_mdio_read(sc, 0x06) | 0x0010; + re_mdio_write(sc, 0x05, 0x8B82); + re_mdio_write(sc, 0x06, data); + re_mdio_write(sc, 0x1F, 0x0000); + } + break; - /* Enable transmit and receive.*/ - CSR_WRITE_1(sc, RE_COMMAND, RE_CMD_TX_ENB | RE_CMD_RX_ENB); - } + case MACFG_50: + case MACFG_51: + case MACFG_52: + data = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC) | 0x0003; + re_eri_write(sc, 0x1B0, 4, data, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0020); + data = re_mdio_read(sc, 0x15)|0x0100; + re_mdio_write(sc, 0x15, data); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + data = re_mdio_read(sc, 0x06)|0x2000; + re_mdio_write(sc, 0x06, data); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0006); + re_mdio_write(sc, 0x1D, 0x0000); + break; -#if DISABLED_CODE - ifp->if_drv_flags |= IFF_DRV_RUNNING; - ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; -#endif + case MACFG_38: + case MACFG_39: + data = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + data |= BIT_1 | BIT_0; + re_eri_write(sc, 0x1B0, 4, data, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1e, 0x0020); + data = re_mdio_read(sc, 0x15); + data |= BIT_8; + re_mdio_write(sc, 0x15, data); + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + data = re_mdio_read(sc, 0x06); + data |= BIT_13; + re_mdio_write(sc, 0x06, data); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0006); + re_mdio_write(sc, 0x0D, 0x0000); + break; - /* - * Enable interrupts. - */ - CSR_WRITE_2(sc, RE_IMR, RE_INTRS); -} + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + data = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + data |= BIT_1 | BIT_0; + re_eri_write(sc, 0x1B0, 4, data, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0A43); + data = re_mdio_read(sc, 0x11); + re_mdio_write(sc, 0x11, data | BIT_4); + re_mdio_write(sc, 0x1F, 0x0A5D); + re_mdio_write(sc, 0x10, 0x0006); + re_mdio_write(sc, 0x1F, 0x0000); + break; -void re_hw_start_unlock_8125(struct re_softc* sc) -{ - u_int32_t macver; - u_int16_t data16 = 0; + case MACFG_80: + case MACFG_81: + re_set_mac_ocp_bit(sc, 0xE040, (BIT_1|BIT_0)); + re_set_mac_ocp_bit(sc, 0xEB62, (BIT_2|BIT_1)); - re_enable_cfg9346_write(sc); + re_set_eth_ocp_phy_bit(sc, 0xA432, BIT_4); + re_set_eth_ocp_phy_bit(sc, 0xA5D0, (BIT_2 | BIT_1)); + re_clear_eth_ocp_phy_bit(sc, 0xA6D4, BIT_0); - _re_enable_aspm_clkreq_lock(sc, 0); - re_enable_force_clkreq(sc, 0);; + re_clear_eth_ocp_phy_bit(sc, 0xA6D8, BIT_4); + re_clear_eth_ocp_phy_bit(sc, 0xA428, BIT_7); + re_clear_eth_ocp_phy_bit(sc, 0xA4A2, BIT_9); + break; - re_set_eee_lpi_timer(sc); + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + re_set_mac_ocp_bit(sc, 0xE040, (BIT_1|BIT_0)); - CSR_WRITE_2(sc, RE_CPlusCmd, 0x2060); + re_set_eth_ocp_phy_bit(sc, 0xA432, BIT_4); - /* Set the initial TX configuration.*/ - CSR_WRITE_4(sc, RE_TXCFG, RE_TXCFG_CONFIG); + re_set_eth_ocp_phy_bit(sc, 0xA5D0, (BIT_2 | BIT_1)); + re_clear_eth_ocp_phy_bit(sc, 0xA6D4, BIT_0); - macver = CSR_READ_4(sc, RE_TXCFG) & 0xFC800000; - if (macver == 0x60800000 || macver == 0x64000000 || - macver == 0x64800000) { - CSR_WRITE_1(sc, RE_CFG2, CSR_READ_1(sc, RE_CFG2) | BIT_5); + re_clear_eth_ocp_phy_bit(sc, 0xA6D8, BIT_4); + re_clear_eth_ocp_phy_bit(sc, 0xA428, BIT_7); + re_clear_eth_ocp_phy_bit(sc, 0xA4A2, BIT_9); + break; - MP_WriteMcuAccessRegWord(sc, 0xE098, 0xC302); + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_set_mac_ocp_bit(sc, 0xE040, (BIT_1|BIT_0)); - /*set configuration space offset 0x70f to 0x17*/ - if (macver == 0x64800000) - re_set_offset70f(sc, 0x17); - else - re_set_offset70f(sc, 0x27); - - re_set_offset79(sc, 0x40); - - if (macver == 0x60800000 || macver == 0x64000000) - CSR_WRITE_2(sc, 0x382, 0x221B); - - CSR_WRITE_1(sc, 0x4500, 0x00); - CSR_WRITE_2(sc, 0x4800, 0x0000); - - CSR_WRITE_1(sc, RE_CFG1, CSR_READ_1(sc, RE_CFG1) & ~0x10); - - CSR_WRITE_1(sc, 0xF2, CSR_READ_1(sc, 0xF2) & ~BIT_3); - - CSR_WRITE_1(sc, RE_TDFNR, 0x10); - - if (sc->re_type == MACFG_80) { - MP_WriteEPhyUshort(sc, 0x01, 0xA812); - MP_WriteEPhyUshort(sc, 0x09, 0x520C); - MP_WriteEPhyUshort(sc, 0x04, 0xD000); - MP_WriteEPhyUshort(sc, 0x0D, 0xF702); - MP_WriteEPhyUshort(sc, 0x0A, 0x8653); - MP_WriteEPhyUshort(sc, 0x06, 0x001E); - MP_WriteEPhyUshort(sc, 0x08, 0x3595); - MP_WriteEPhyUshort(sc, 0x20, 0x9455); - MP_WriteEPhyUshort(sc, 0x21, 0x99FF); - MP_WriteEPhyUshort(sc, 0x02, 0x6046); - MP_WriteEPhyUshort(sc, 0x29, 0xFE00); - MP_WriteEPhyUshort(sc, 0x23, 0xAB62); - ClearPCIePhyBit(sc, 0x24, BIT_11); - - MP_WriteEPhyUshort(sc, 0x41, 0xA80C); - MP_WriteEPhyUshort(sc, 0x49, 0x520C); - MP_WriteEPhyUshort(sc, 0x44, 0xD000); - MP_WriteEPhyUshort(sc, 0x4D, 0xF702); - MP_WriteEPhyUshort(sc, 0x4A, 0x8653); - MP_WriteEPhyUshort(sc, 0x46, 0x001E); - MP_WriteEPhyUshort(sc, 0x48, 0x3595); - MP_WriteEPhyUshort(sc, 0x60, 0x9455); - MP_WriteEPhyUshort(sc, 0x61, 0x99FF); - MP_WriteEPhyUshort(sc, 0x42, 0x6046); - MP_WriteEPhyUshort(sc, 0x69, 0xFE00); - MP_WriteEPhyUshort(sc, 0x63, 0xAB62); - ClearPCIePhyBit(sc, 0x64, BIT_11); - } - else if (sc->re_type == MACFG_81) { - MP_WriteEPhyUshort(sc, 0x04, 0xD000); - MP_WriteEPhyUshort(sc, 0x0A, 0x8653); - MP_WriteEPhyUshort(sc, 0x23, 0xAB66); - MP_WriteEPhyUshort(sc, 0x20, 0x9455); - MP_WriteEPhyUshort(sc, 0x21, 0x99FF); - MP_WriteEPhyUshort(sc, 0x29, 0xFE04); - - MP_WriteEPhyUshort(sc, 0x44, 0xD000); - MP_WriteEPhyUshort(sc, 0x4A, 0x8653); - MP_WriteEPhyUshort(sc, 0x63, 0xAB66); - MP_WriteEPhyUshort(sc, 0x60, 0x9455); - MP_WriteEPhyUshort(sc, 0x61, 0x99FF); - MP_WriteEPhyUshort(sc, 0x69, 0xFE04); - - ClearAndSetPCIePhyBit(sc, - 0x2A, - (BIT_14 | BIT_13 | BIT_12), - (BIT_13 | BIT_12) - ); - ClearPCIePhyBit(sc, 0x19, BIT_6); - SetPCIePhyBit(sc, 0x1B, (BIT_11 | BIT_10 | BIT_9)); - ClearPCIePhyBit(sc, 0x1B, (BIT_14 | BIT_13 | BIT_12)); - MP_WriteEPhyUshort(sc, 0x02, 0x6042); - MP_WriteEPhyUshort(sc, 0x06, 0x0014); - - ClearAndSetPCIePhyBit(sc, - 0x6A, - (BIT_14 | BIT_13 | BIT_12), - (BIT_13 | BIT_12) - ); - ClearPCIePhyBit(sc, 0x59, BIT_6); - SetPCIePhyBit(sc, 0x5B, (BIT_11 | BIT_10 | BIT_9)); - ClearPCIePhyBit(sc, 0x5B, (BIT_14 | BIT_13 | BIT_12)); - MP_WriteEPhyUshort(sc, 0x42, 0x6042); - MP_WriteEPhyUshort(sc, 0x46, 0x0014); - } - else if (sc->re_type == MACFG_82) { - MP_WriteEPhyUshort(sc, 0x06, 0x001F); - MP_WriteEPhyUshort(sc, 0x0A, 0xB66B); - MP_WriteEPhyUshort(sc, 0x01, 0xA852); - MP_WriteEPhyUshort(sc, 0x24, 0x0008); - MP_WriteEPhyUshort(sc, 0x2F, 0x6052); - MP_WriteEPhyUshort(sc, 0x0D, 0xF716); - MP_WriteEPhyUshort(sc, 0x20, 0xD477); - MP_WriteEPhyUshort(sc, 0x21, 0x4477); - MP_WriteEPhyUshort(sc, 0x22, 0x0013); - MP_WriteEPhyUshort(sc, 0x23, 0xBB66); - MP_WriteEPhyUshort(sc, 0x0B, 0xA909); - MP_WriteEPhyUshort(sc, 0x29, 0xFF04); - MP_WriteEPhyUshort(sc, 0x1B, 0x1EA0); - - MP_WriteEPhyUshort(sc, 0x46, 0x001F); - MP_WriteEPhyUshort(sc, 0x4A, 0xB66B); - MP_WriteEPhyUshort(sc, 0x41, 0xA84A); - MP_WriteEPhyUshort(sc, 0x64, 0x000C); - MP_WriteEPhyUshort(sc, 0x6F, 0x604A); - MP_WriteEPhyUshort(sc, 0x4D, 0xF716); - MP_WriteEPhyUshort(sc, 0x60, 0xD477); - MP_WriteEPhyUshort(sc, 0x61, 0x4477); - MP_WriteEPhyUshort(sc, 0x62, 0x0013); - MP_WriteEPhyUshort(sc, 0x63, 0xBB66); - MP_WriteEPhyUshort(sc, 0x4B, 0xA909); - MP_WriteEPhyUshort(sc, 0x69, 0xFF04); - MP_WriteEPhyUshort(sc, 0x5B, 0x1EA0); - } - else if (sc->re_type == MACFG_83) { - MP_WriteEPhyUshort(sc, 0x0B, 0xA908); - MP_WriteEPhyUshort(sc, 0x1E, 0x20EB); - MP_WriteEPhyUshort(sc, 0x22, 0x0023); - MP_WriteEPhyUshort(sc, 0x02, 0x60C2); - MP_WriteEPhyUshort(sc, 0x29, 0xFF00); - - MP_WriteEPhyUshort(sc, 0x4B, 0xA908); - MP_WriteEPhyUshort(sc, 0x5E, 0x28EB); - MP_WriteEPhyUshort(sc, 0x62, 0x0023); - MP_WriteEPhyUshort(sc, 0x42, 0x60C2); - MP_WriteEPhyUshort(sc, 0x69, 0xFF00); - } - - MP_WriteMcuAccessRegWord(sc, 0xC140, 0xFFFF); - MP_WriteMcuAccessRegWord(sc, 0xC142, 0xFFFF); - - //old tx desc format - data16 = MP_ReadMcuAccessRegWord(sc, 0xEB58); - if (sc->re_type == MACFG_91 || sc->re_type == MACFG_92) - data16 &= ~(BIT_0 | BIT_1); - else - data16 &= ~(BIT_0); - MP_WriteMcuAccessRegWord(sc, 0xEB58, data16); - - if (sc->re_type == MACFG_91 || sc->re_type == MACFG_92) - CSR_WRITE_1(sc, 0xD8, CSR_READ_1(sc, 0xD8) & ~BIT_1); - - data16 = MP_ReadMcuAccessRegWord(sc, 0xE614); - data16 &= ~(BIT_10 | BIT_9 | BIT_8); - if (sc->re_type == MACFG_82 || sc->re_type == MACFG_83) - data16 |= (2 << 8); - else if (sc->re_type == MACFG_90 || sc->re_type == MACFG_91 || - sc->re_type == MACFG_92) - data16 |= (4 << 8); - else - data16 |= (3 << 8); - MP_WriteMcuAccessRegWord(sc, 0xE614, data16); - - data16 = MP_ReadMcuAccessRegWord(sc, 0xE63E); - data16 &= ~(BIT_11 | BIT_10); - data16 |= ((0 & 0x03) << 10); - MP_WriteMcuAccessRegWord(sc, 0xE63E, data16); - - data16 = MP_ReadMcuAccessRegWord(sc, 0xE63E); - data16 &= ~(BIT_5 | BIT_4); - if (sc->re_type == MACFG_80 || sc->re_type == MACFG_81 || - sc->re_type == MACFG_90 || sc->re_type == MACFG_91 || - sc->re_type == MACFG_92) - data16 |= ((0x02 & 0x03) << 4); - MP_WriteMcuAccessRegWord(sc, 0xE63E, data16); - - data16 = MP_ReadMcuAccessRegWord(sc, 0xC0B4); - data16 |= (BIT_3 | BIT_2); - MP_WriteMcuAccessRegWord(sc, 0xC0B4, data16); - - data16 = MP_ReadMcuAccessRegWord(sc, 0xEB6A); - data16 &= ~(BIT_7 | BIT_6 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0); - data16 |= (BIT_5 | BIT_4 | BIT_1 | BIT_0); - MP_WriteMcuAccessRegWord(sc, 0xEB6A, data16); - - data16 = MP_ReadMcuAccessRegWord(sc, 0xEB50); - data16 &= ~(BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_5); - data16 |= (BIT_6); - MP_WriteMcuAccessRegWord(sc, 0xEB50, data16); - - data16 = MP_ReadMcuAccessRegWord(sc, 0xE056); - data16 &= ~(BIT_7 | BIT_6 | BIT_5 | BIT_4); - //data16 |= (BIT_4 | BIT_5); - MP_WriteMcuAccessRegWord(sc, 0xE056, data16); - - CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | BIT_7); - - data16 = MP_ReadMcuAccessRegWord(sc, 0xE040); - data16 &= ~(BIT_12); - MP_WriteMcuAccessRegWord(sc, 0xE040, data16); - - data16 = MP_ReadMcuAccessRegWord(sc, 0xEA1C); - data16 &= ~(BIT_1 | BIT_0); - data16 |= (BIT_0); - MP_WriteMcuAccessRegWord(sc, 0xEA1C, data16); - - MP_WriteMcuAccessRegWord(sc, 0xE0C0, 0x4000); - - SetMcuAccessRegBit(sc, 0xE052, (BIT_6 | BIT_5)); - ClearMcuAccessRegBit(sc, 0xE052, BIT_3 | BIT_7); - - data16 = MP_ReadMcuAccessRegWord(sc, 0xC0AC); - data16 |= (BIT_7 | BIT_8 | BIT_9 | BIT_10 | BIT_11 | BIT_12); - if (macver == 0x60800000) - data16 &= ~(BIT_7); - MP_WriteMcuAccessRegWord(sc, 0xC0AC, data16); - - data16 = MP_ReadMcuAccessRegWord(sc, 0xD430); - data16 &= ~(BIT_11 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0); - data16 |= 0x45F; - MP_WriteMcuAccessRegWord(sc, 0xD430, data16); - - //MP_WriteMcuAccessRegWord(sc, 0xE0C0, 0x4F87); - CSR_WRITE_1(sc, 0xD0, CSR_READ_1(sc, 0xD0) | (BIT_6 | BIT_7)); - - if (sc->re_type == MACFG_80 || sc->re_type == MACFG_81) - CSR_WRITE_1(sc, 0xD3, CSR_READ_1(sc, 0xD3) | BIT_0); - - MP_WriteMcuAccessRegWord(sc, 0xE080, MP_ReadMcuAccessRegWord(sc, 0xE080) & ~BIT_1); - - data16 = MP_ReadMcuAccessRegWord(sc, 0xEA1C); - if (sc->re_type == MACFG_91 || sc->re_type == MACFG_92) - data16 &= ~(BIT_9 | BIT_8); - else - data16 &= ~(BIT_2); - MP_WriteMcuAccessRegWord(sc, 0xEA1C, data16); + re_set_eth_ocp_phy_bit(sc, 0xA5D0, (BIT_2 | BIT_1)); + re_clear_eth_ocp_phy_bit(sc, 0xA6D4, (BIT_1|BIT_0)); - SetMcuAccessRegBit(sc, 0xEB54, BIT_0); - DELAY(1); - ClearMcuAccessRegBit(sc, 0xEB54, BIT_0); - CSR_WRITE_2(sc, 0x1880, CSR_READ_2(sc, 0x1880) & ~(BIT_4 | BIT_5)); + re_clear_eth_ocp_phy_bit(sc, 0xA428, BIT_7); + re_clear_eth_ocp_phy_bit(sc, 0xA4A2, BIT_9); + break; - if (macver == 0x60800000) { - for (int i = 0xA00; i < 0xB00; i += 4) - CSR_WRITE_4(sc, i, 0x0000); + default: + ret = -EOPNOTSUPP; + break; } - else { - for (int i = 0xA00; i < 0xA80; i += 4) - CSR_WRITE_4(sc, i, 0x0000); - - if (sc->re_type == MACFG_91 || sc->re_type == MACFG_92) { - CSR_WRITE_1(sc, RE_INT_CFG0_8125, - CSR_READ_1(sc, RE_INT_CFG0_8125) & - ~(RTL8125_INT_CFG0_ENABLE_8125 | - RTL8125_INT_CFG0_TIMEOUT0_BYPASS | - RTL8125_INT_CFG0_MITIGATION_BYPASS | - RTL8126_INT_CFG0_RDU_BYPASS)); - } - else { - CSR_WRITE_1(sc, RE_INT_CFG0_8125, - CSR_READ_1(sc, RE_INT_CFG0_8125) & - ~(RTL8125_INT_CFG0_ENABLE_8125 | - RTL8125_INT_CFG0_TIMEOUT0_BYPASS | - RTL8125_INT_CFG0_MITIGATION_BYPASS)); - } - CSR_WRITE_2(sc, RE_INT_CFG1_8125, 0x0000); + switch (sc->re_type) { + case MACFG_68: + case MACFG_69: + case MACFG_74: + case MACFG_75: + re_mdio_write(sc, 0x1F, 0x0A4A); + re_set_eth_phy_bit(sc, 0x11, BIT_9); + re_mdio_write(sc, 0x1F, 0x0A42); + re_set_eth_phy_bit(sc, 0x14, BIT_7); + re_mdio_write(sc, 0x1F, 0x0000); + break; } - if (sc->re_tx_cstag) { - sc->if_capenable |= IFCAP_TXCSUM; - sc->if_hwassist |= RE_CSUM_FEATURES; - } - if (sc->re_rx_cstag) { - sc->if_capenable |= IFCAP_RXCSUM; - } - } + /*Advanced EEE*/ + re_disable_advanced_eee(sc); - //clear io_rdy_l23 - CSR_WRITE_1(sc, RE_CFG3, CSR_READ_1(sc, RE_CFG3) & ~BIT_1); + return ret; +} - _re_enable_aspm_clkreq_lock(sc, 1); - re_enable_force_clkreq(sc, 0);; +static int re_disable_eee(struct re_softc *sc) +{ + int ret; + u_int16_t data; -#if DISABLED_CODE - //clear wol - re_clrwol(sc); -#endif + ret = 0; + switch (sc->re_type) { + case MACFG_42: + case MACFG_43: + re_eri_write(sc, 0x1B0, 2, 0, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x10, 0x401F); + re_mdio_write(sc, 0x19, 0x7030); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0003); + re_mdio_write(sc, 0x0E, 0x0015); + re_mdio_write(sc, 0x0D, 0x4003); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + + re_mdio_write(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); + break; - //Interrupt Mitigation - CSR_WRITE_4(sc, 0x0A00, 0x00630063); + case MACFG_53: + re_eri_write(sc, 0x1B0, 2, 0, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x10, 0x401F); + re_mdio_write(sc, 0x19, 0x7030); - if ((sc->if_capenable & IFCAP_VLAN_HWTAGGING) != 0) - CSR_WRITE_4(sc, RE_RXCFG, CSR_READ_4(sc, RE_RXCFG) | (BIT_22 | BIT_23)); - else - CSR_WRITE_4(sc, RE_RXCFG, CSR_READ_4(sc, RE_RXCFG) & ~(BIT_22 | BIT_23)); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); - data16 = CSR_READ_2(sc, RE_CPlusCmd); - if ((sc->if_capenable & IFCAP_RXCSUM) != 0) - data16 |= RL_RxChkSum; - else - data16 &= ~RL_RxChkSum; - CSR_WRITE_2(sc, RE_CPlusCmd, data16); + re_mdio_write(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); + break; - re_disable_cfg9346_write(sc); + case MACFG_54: + case MACFG_55: + re_eri_write(sc, 0x1B0, 2, 0, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x10, 0xC07F); + re_mdio_write(sc, 0x19, 0x7030); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + + re_mdio_write(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); + break; - /* Set the initial RX configuration.*/ - /* - * Program the multicast filter, if necessary. - */ - re_set_rx_packet_filter(sc); + case MACFG_36: + case MACFG_37: + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0020); + data = re_mdio_read(sc, 0x15) & ~0x0100; + re_mdio_write(sc, 0x15, data); + re_mdio_write(sc, 0x1F, 0x0006); + re_mdio_write(sc, 0x00, 0x5A00); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + if (CSR_READ_1(sc, RE_CFG4) & RL_CFG4_CUSTOMIZED_LED) { + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B82); + data = re_mdio_read(sc, 0x06) & ~0x0010; + re_mdio_write(sc, 0x05, 0x8B82); + re_mdio_write(sc, 0x06, data); + re_mdio_write(sc, 0x1F, 0x0000); + } + break; - /* Enable transmit and receive.*/ - CSR_WRITE_1(sc, RE_COMMAND, RE_CMD_TX_ENB | RE_CMD_RX_ENB); + case MACFG_50: + case MACFG_51: + case MACFG_52: + data = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC)& ~0x0003; + re_eri_write(sc, 0x1B0, 4, data, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + data = re_mdio_read(sc, 0x06) & ~0x2000; + re_mdio_write(sc, 0x06, data); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0020); + data = re_mdio_read(sc, 0x15) & ~0x0100; + re_mdio_write(sc, 0x15, data); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + break; -#if DISABLED_CODE - ifp->if_drv_flags |= IFF_DRV_RUNNING; - ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; -#endif + case MACFG_38: + case MACFG_39: + data = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + data &= ~(BIT_1 | BIT_0); + re_eri_write(sc, 0x1B0, 4, data, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + data = re_mdio_read(sc, 0x06); + data &= ~BIT_13; + re_mdio_write(sc, 0x06, data); + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1e, 0x0020); + data = re_mdio_read(sc, 0x15); + data &= ~BIT_8; + re_mdio_write(sc, 0x15, data); + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + break; - /* - * Enable interrupts. - */ - CSR_WRITE_4(sc, RE_IMR0_8125, RE_INTRS); -} + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + data = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); + data &= ~(BIT_1 | BIT_0); + re_eri_write(sc, 0x1B0, 4, data, ERIAR_ExGMAC); + re_mdio_write(sc, 0x1F, 0x0A43); + data = re_mdio_read(sc, 0x11); + if (sc->re_type == MACFG_75) + re_mdio_write(sc, 0x11, data | BIT_4); + else + re_mdio_write(sc, 0x11, data & ~BIT_4); + re_mdio_write(sc, 0x1F, 0x0A5D); + re_mdio_write(sc, 0x10, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + break; -void re_reset(struct re_softc* sc) -{ - register int i; + case MACFG_80: + case MACFG_81: + re_clear_mac_ocp_bit(sc, 0xE040, (BIT_1|BIT_0)); + re_clear_mac_ocp_bit(sc, 0xEB62, (BIT_2|BIT_1)); - CSR_WRITE_4(sc, RE_RXCFG, CSR_READ_4(sc, RE_RXCFG) & ~0x3F); + re_clear_eth_ocp_phy_bit(sc, 0xA432, BIT_4); + re_clear_eth_ocp_phy_bit(sc, 0xA5D0, (BIT_2 | BIT_1)); + re_clear_eth_ocp_phy_bit(sc, 0xA6D4, BIT_0); - switch (sc->re_type) { - case MACFG_3: - case MACFG_4: - case MACFG_5: - case MACFG_6: - DELAY(10000); - break; - case MACFG_11: - case MACFG_12: - case MACFG_13: - case MACFG_14: - case MACFG_15: - case MACFG_16: - case MACFG_17: - case MACFG_18: - case MACFG_19: - case MACFG_21: - case MACFG_22: - case MACFG_23: - case MACFG_24: - case MACFG_25: - case MACFG_26: - case MACFG_27: - case MACFG_28: - case MACFG_31: - case MACFG_32: - case MACFG_33: - case MACFG_36: - case MACFG_37: - case MACFG_41: - case MACFG_42: - case MACFG_43: - case MACFG_54: - case MACFG_55: - case MACFG_63: - case MACFG_64: - case MACFG_65: - case MACFG_66: - CSR_WRITE_1(sc, RE_COMMAND, 0x8C); - break; - case MACFG_38: - case MACFG_39: - case MACFG_50: - case MACFG_51: - case MACFG_52: - case MACFG_53: - CSR_WRITE_1(sc, RE_COMMAND, 0x8C); - while (!(CSR_READ_4(sc, RE_TXCFG) & BIT_11)) DELAY(100); - break; - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - DELAY(2000); - break; - default: - DELAY(10000); - break; - } - DELAY(200); - CSR_WRITE_1(sc, RE_COMMAND, RE_CMD_RESET); + re_clear_eth_ocp_phy_bit(sc, 0xA6D8, BIT_4); + re_clear_eth_ocp_phy_bit(sc, 0xA428, BIT_7); + re_clear_eth_ocp_phy_bit(sc, 0xA4A2, BIT_9); + break; - for (i = 0; i < RE_TIMEOUT; i++) { - DELAY(10); - if (!(CSR_READ_1(sc, RE_COMMAND) & RE_CMD_RESET)) - break; - } + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + re_clear_mac_ocp_bit(sc, 0xE040, (BIT_1|BIT_0)); - if (i == RE_TIMEOUT) - device_printf(sc->dev, "reset never completed!\n"); + re_set_eth_ocp_phy_bit(sc, 0xA432, BIT_4); - return; -} + re_clear_eth_ocp_phy_bit(sc, 0xA5D0, (BIT_2 | BIT_1)); + re_clear_eth_ocp_phy_bit(sc, 0xA6D4, BIT_0); -u_int8_t re_link_ok(struct re_softc* sc) -{ - u_int8_t retval; + re_clear_eth_ocp_phy_bit(sc, 0xA6D8, BIT_4); + re_clear_eth_ocp_phy_bit(sc, 0xA428, BIT_7); + re_clear_eth_ocp_phy_bit(sc, 0xA4A2, BIT_9); + break; - retval = (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_LINK_STS) ? 1 : 0; + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_clear_mac_ocp_bit(sc, 0xE040, (BIT_1|BIT_0)); - return retval; -} + re_clear_eth_ocp_phy_bit(sc, 0xA5D0, (BIT_2 | BIT_1)); + re_clear_eth_ocp_phy_bit(sc, 0xA6D4, (BIT_0 | BIT_1)); -u_int8_t re_link_autoneg(struct re_softc* sc) { - MP_WritePhyUshort(sc, 0x1F, 0x0000); - u_int16_t aner = MP_ReadPhyUshort(sc, MII_ANER); - u_int16_t bmsr = MP_ReadPhyUshort(sc, MII_BMSR); + re_clear_eth_ocp_phy_bit(sc, 0xA428, BIT_7); + re_clear_eth_ocp_phy_bit(sc, 0xA4A2, BIT_9); + break; - return ((aner & ANER_LPAN) && (bmsr & BMSR_ACOMP)) ? 1 : 0; + default: + ret = -EOPNOTSUPP; + break; + } + + switch (sc->re_type) { + case MACFG_68: + case MACFG_69: + case MACFG_74: + case MACFG_75: + re_mdio_write(sc, 0x1F, 0x0A42); + re_clear_eth_phy_bit(sc, 0x14, BIT_7); + re_mdio_write(sc, 0x1F, 0x0A4A); + re_clear_eth_phy_bit(sc, 0x11, BIT_9); + re_mdio_write(sc, 0x1F, 0x0000); + break; + } + + /*Advanced EEE*/ + re_disable_advanced_eee(sc); + + return ret; } -static void -re_set_wol_linkspeed(struct re_softc* sc) +static int re_phy_ram_code_check(struct re_softc *sc) { - u_int8_t wol_link_speed; + u_int16_t PhyRegValue; + int retval = TRUE; + + switch(sc->re_type) { + case MACFG_56: + re_mdio_write(sc, 0x1f, 0x0A40); + PhyRegValue = re_mdio_read(sc, 0x10); + PhyRegValue &= ~(BIT_11); + re_mdio_write(sc, 0x10, PhyRegValue); + + + re_mdio_write(sc, 0x1f, 0x0A00); + PhyRegValue = re_mdio_read(sc, 0x10); + PhyRegValue &= ~(BIT_12 | BIT_13 | BIT_14 | BIT_15); + re_mdio_write(sc, 0x10, PhyRegValue); + + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8010); + PhyRegValue = re_mdio_read(sc, 0x14); + PhyRegValue &= ~(BIT_11); + re_mdio_write(sc, 0x14, PhyRegValue); + + re_set_phy_mcu_patch_request(sc); + + re_mdio_write(sc, 0x1f, 0x0A40); + re_mdio_write(sc, 0x10, 0x0140); + + re_mdio_write(sc, 0x1f, 0x0A4A); + PhyRegValue = re_mdio_read(sc, 0x13); + PhyRegValue &= ~(BIT_6); + PhyRegValue |= (BIT_7); + re_mdio_write(sc, 0x13, PhyRegValue); + + re_mdio_write(sc, 0x1f, 0x0A44); + PhyRegValue = re_mdio_read(sc, 0x14); + PhyRegValue |= (BIT_2); + re_mdio_write(sc, 0x14, PhyRegValue); + + re_mdio_write(sc, 0x1f, 0x0A50); + PhyRegValue = re_mdio_read(sc, 0x11); + PhyRegValue |= (BIT_11|BIT_12); + re_mdio_write(sc, 0x11, PhyRegValue); + + re_clear_phy_mcu_patch_request(sc); + + re_mdio_write(sc, 0x1f, 0x0A40); + re_mdio_write(sc, 0x10, 0x1040); + + re_mdio_write(sc, 0x1f, 0x0A4A); + PhyRegValue = re_mdio_read(sc, 0x13); + PhyRegValue &= ~(BIT_6|BIT_7); + re_mdio_write(sc, 0x13, PhyRegValue); + + re_mdio_write(sc, 0x1f, 0x0A44); + PhyRegValue = re_mdio_read(sc, 0x14); + PhyRegValue &= ~(BIT_2); + re_mdio_write(sc, 0x14, PhyRegValue); + + re_mdio_write(sc, 0x1f, 0x0A50); + PhyRegValue = re_mdio_read(sc, 0x11); + PhyRegValue &= ~(BIT_11|BIT_12); + re_mdio_write(sc, 0x11, PhyRegValue); + + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8010); + PhyRegValue = re_mdio_read(sc, 0x14); + PhyRegValue |= (BIT_11); + re_mdio_write(sc, 0x14, PhyRegValue); + + re_set_phy_mcu_patch_request(sc); + + re_mdio_write(sc, 0x1f, 0x0A20); + PhyRegValue = re_mdio_read(sc, 0x13); + if (PhyRegValue & BIT_11) { + if (PhyRegValue & BIT_10) { + retval = FALSE; + } + } - if (HW_SUPP_SERDES_PHY(sc)) return; + re_clear_phy_mcu_patch_request(sc); -#ifdef ENABLE_FIBER_SUPPORT - if (HW_FIBER_MODE_ENABLED(sc)) - return; -#endif //ENABLE_FIBER_SUPPORT + //delay 2ms + DELAY(2000); + break; + default: + break; + } - MP_WritePhyUshort(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); - wol_link_speed = RE_WOL_LINK_SPEED_100M_FIRST; - if (!sc->re_dash) { - u_int16_t anlpar; + return retval; +} - anlpar = sc->phy_reg_anlpar; +static void re_set_phy_ram_code_check_fail_flag(struct re_softc *sc) +{ + u_int16_t TmpUshort; - if ((anlpar & ANLPAR_10_FD) || (anlpar & ANLPAR_10)) { - wol_link_speed = RE_WOL_LINK_SPEED_10M_FIRST; - } - else { - wol_link_speed = RE_WOL_LINK_SPEED_100M_FIRST; + switch(sc->re_type) { + case MACFG_56: + TmpUshort = re_mac_ocp_read(sc, 0xD3C0); + TmpUshort |= BIT_0; + re_mac_ocp_write(sc, 0xD3C0, TmpUshort); + break; } - } - - switch (sc->re_device_id) { - case RT_DEVICEID_8126: - ClearEthPhyOcpBit(sc, 0xA5D4, RTK_ADVERTISE_5000FULL); - /* FALLTHROUGH */ - case RT_DEVICEID_8125: - case RT_DEVICEID_3000: - case RT_DEVICEID_8162: - ClearEthPhyOcpBit(sc, 0xA5D4, RTK_ADVERTISE_2500FULL); - /* FALLTHROUGH */ - case RT_DEVICEID_8169: - case RT_DEVICEID_8169SC: - case RT_DEVICEID_8168: - case RT_DEVICEID_8161: - MP_WritePhyUshort(sc, MII_100T2CR, MP_ReadPhyUshort(sc, MII_100T2CR) & ~(GTCR_ADV_1000TFDX | GTCR_ADV_1000THDX)); - /* FALLTHROUGH */ - default: - if (wol_link_speed == RE_WOL_LINK_SPEED_10M_FIRST) - MP_WritePhyUshort(sc, MII_ANAR, MP_ReadPhyUshort(sc, MII_ANAR) & ~(ANAR_TX_FD | ANAR_TX)); - break; - } - - switch (sc->re_device_id) { - case RT_DEVICEID_8126: - case RT_DEVICEID_8125: - case RT_DEVICEID_3000: - case RT_DEVICEID_8162: - case RT_DEVICEID_8169: - case RT_DEVICEID_8169SC: - case RT_DEVICEID_8168: - case RT_DEVICEID_8161: - MP_WritePhyUshort(sc, MII_BMCR, BMCR_RESET | BMCR_AUTOEN | BMCR_STARTNEG); - break; - default: - if (sc->re_type == MACFG_36) - MP_WritePhyUshort(sc, MII_BMCR, BMCR_RESET | BMCR_AUTOEN | BMCR_STARTNEG); - else - MP_WritePhyUshort(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); - break; - } } -void re_link_on_patch(struct re_softc* sc) +static int re_hw_phy_mcu_code_ver_matched(struct re_softc *sc) { - if (sc->re_type == MACFG_50 || sc->re_type == MACFG_51 || sc->re_type == MACFG_52) { - if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_1000MF) { - re_eri_write(sc, 0x1bc, 4, 0x00000011, ERIAR_ExGMAC); - re_eri_write(sc, 0x1dc, 4, 0x0000001f, ERIAR_ExGMAC); - } - else if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_100M) { - re_eri_write(sc, 0x1bc, 4, 0x0000001f, ERIAR_ExGMAC); - re_eri_write(sc, 0x1dc, 4, 0x0000001f, ERIAR_ExGMAC); - } - else { - re_eri_write(sc, 0x1bc, 4, 0x0000001f, ERIAR_ExGMAC); - re_eri_write(sc, 0x1dc, 4, 0x0000002d, ERIAR_ExGMAC); - } - } - else if ((sc->re_type == MACFG_38 || sc->re_type == MACFG_39)/* && (ifp->if_flags & IFF_UP)*/) { - if (sc->re_type == MACFG_38 && (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_10M)) { - CSR_WRITE_4(sc, RE_RXCFG, CSR_READ_4(sc, RE_RXCFG) | RE_RXCFG_RX_ALLPHYS); - } - else if (sc->re_type == MACFG_39) { - if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_1000MF) { - re_eri_write(sc, 0x1bc, 4, 0x00000011, ERIAR_ExGMAC); - re_eri_write(sc, 0x1dc, 4, 0x00000005, ERIAR_ExGMAC); - } - else if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_100M) { - re_eri_write(sc, 0x1bc, 4, 0x0000001f, ERIAR_ExGMAC); - re_eri_write(sc, 0x1dc, 4, 0x00000005, ERIAR_ExGMAC); - } - else { - re_eri_write(sc, 0x1bc, 4, 0x0000001f, ERIAR_ExGMAC); - re_eri_write(sc, 0x1dc, 4, 0x0000003f, ERIAR_ExGMAC); - } - } - } - else if ((sc->re_type == MACFG_36 || sc->re_type == MACFG_37) && sc->eee_enable == 1) { - /*Full -Duplex mode*/ - if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_FULL_DUP) { - MP_WritePhyUshort(sc, 0x1F, 0x0006); - MP_WritePhyUshort(sc, 0x00, 0x5a30); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - if (CSR_READ_1(sc, RE_PHY_STATUS) & (RL_PHY_STATUS_10M | RL_PHY_STATUS_100M)) - CSR_WRITE_4(sc, RE_TXCFG, (CSR_READ_4(sc, RE_TXCFG) & ~BIT_19) | BIT_25); + int ram_code_ver_match = 0; + switch (sc->re_type) { + case MACFG_36: + case MACFG_37: + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B60); + sc->re_hw_ram_code_ver = re_mdio_read(sc, 0x06); + re_mdio_write(sc, 0x1F, 0x0000); + break; + case MACFG_38: + case MACFG_39: + case MACFG_50: + case MACFG_51: + case MACFG_52: + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B30); + sc->re_hw_ram_code_ver = re_mdio_read(sc, 0x06); + re_mdio_write(sc, 0x1F, 0x0000); + break; + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x801E); + sc->re_hw_ram_code_ver = re_mdio_read(sc, 0x14); + re_mdio_write(sc, 0x1F, 0x0000); + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_real_ocp_phy_write(sc, 0xA436, 0x801E); + sc->re_hw_ram_code_ver = re_real_ocp_phy_read(sc, 0xA438); + break; + default: + sc->re_hw_ram_code_ver = ~0; + break; } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0006); - MP_WritePhyUshort(sc, 0x00, 0x5a00); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - if (CSR_READ_1(sc, RE_PHY_STATUS) & (RL_PHY_STATUS_10M | RL_PHY_STATUS_100M)) - CSR_WRITE_4(sc, RE_TXCFG, (CSR_READ_4(sc, RE_TXCFG) & ~BIT_19) | RE_TXCFG_IFG); - } - } - else if ((sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || - sc->re_type == MACFG_58 || sc->re_type == MACFG_59 || - sc->re_type == MACFG_60 || sc->re_type == MACFG_61 || - sc->re_type == MACFG_62 || sc->re_type == MACFG_67 || - sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || - sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || - sc->re_type == MACFG_72 || sc->re_type == MACFG_73 || - sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || - sc->re_type == MACFG_76 || sc->re_type == MACFG_80 || - sc->re_type == MACFG_81 || sc->re_type == MACFG_82 || - sc->re_type == MACFG_83 || sc->re_type == MACFG_90 || - sc->re_type == MACFG_91 || sc->re_type == MACFG_92)/* && - (ifp->if_flags & IFF_UP)*/) { - if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_FULL_DUP) - CSR_WRITE_4(sc, RE_TXCFG, (CSR_READ_4(sc, RE_TXCFG) | (BIT_24 | BIT_25)) & ~BIT_19); - else - CSR_WRITE_4(sc, RE_TXCFG, (CSR_READ_4(sc, RE_TXCFG) | BIT_25) & ~(BIT_19 | BIT_24)); - } - if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || - sc->re_type == MACFG_61 || sc->re_type == MACFG_62) { - /*half mode*/ - if (!(CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_FULL_DUP)) { - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, MII_ANAR, MP_ReadPhyUshort(sc, MII_ANAR) & ~(ANAR_FC | ANAR_PAUSE_ASYM)); - } - } + if (sc->re_hw_ram_code_ver == sc->re_sw_ram_code_ver) + ram_code_ver_match = 1; - if (CSR_READ_1(sc, RE_PHY_STATUS) & RL_PHY_STATUS_10M) { - if (sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || - sc->re_type == MACFG_72 || sc->re_type == MACFG_73) { - uint32_t Data32; + return ram_code_ver_match; +} - Data32 = re_eri_read(sc, 0x1D0, 1, ERIAR_ExGMAC); - Data32 |= BIT_1; - re_eri_write(sc, 0x1D0, 1, Data32, ERIAR_ExGMAC); - } - else if (sc->re_type == MACFG_80 || sc->re_type == MACFG_81 || - sc->re_type == MACFG_82 || sc->re_type == MACFG_83 || - sc->re_type == MACFG_90 || sc->re_type == MACFG_91 || - sc->re_type == MACFG_92) { - MP_WriteMcuAccessRegWord(sc, 0xE080, MP_ReadMcuAccessRegWord(sc, 0xE080) | BIT_1); +static void re_write_hw_phy_mcu_code_ver(struct re_softc *sc) +{ + switch (sc->re_type) { + case MACFG_36: + case MACFG_37: + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B60); + re_mdio_write(sc, 0x06, sc->re_sw_ram_code_ver); + re_mdio_write(sc, 0x1F, 0x0000); + sc->re_hw_ram_code_ver = sc->re_sw_ram_code_ver; + break; + case MACFG_38: + case MACFG_39: + case MACFG_50: + case MACFG_51: + case MACFG_52: + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B30); + re_mdio_write(sc, 0x06, sc->re_sw_ram_code_ver); + re_mdio_write(sc, 0x1F, 0x0000); + sc->re_hw_ram_code_ver = sc->re_sw_ram_code_ver; + break; + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x801E); + re_mdio_write(sc, 0x14, sc->re_sw_ram_code_ver); + re_mdio_write(sc, 0x1F, 0x0000); + sc->re_hw_ram_code_ver = sc->re_sw_ram_code_ver; + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_real_ocp_phy_write(sc, 0xA436, 0x801E); + re_real_ocp_phy_write(sc, 0xA438, sc->re_sw_ram_code_ver); + sc->re_hw_ram_code_ver = sc->re_sw_ram_code_ver; + break; } - } } -void re_stop(struct re_softc* sc) { - /* - * Disable accepting frames to put RX MAC into idle state. - * Otherwise it's possible to get frames while stop command - * execution is in progress and controller can DMA the frame - * to already freed RX buffer during that period. - */ - CSR_WRITE_4(sc, RE_RXCFG, CSR_READ_4(sc, RE_RXCFG) & - ~(RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_INDIV | RE_RXCFG_RX_MULTI | - RE_RXCFG_RX_BROAD | RE_RXCFG_RX_RUNT | RE_RXCFG_RX_ERRPKT)); - - switch (sc->re_type) { - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - CSR_WRITE_4(sc, RE_IMR0_8125, 0x00000000); - CSR_WRITE_4(sc, RE_ISR0_8125, 0xffffffff); - break; - default: - CSR_WRITE_2(sc, RE_IMR, 0x0000); - CSR_WRITE_2(sc, RE_ISR, 0xffff); - break; - } - - switch (sc->re_type) { - case MACFG_50: - case MACFG_51: - case MACFG_52: - re_eri_write(sc, 0x1bc, 4, 0x0000001f, ERIAR_ExGMAC); - re_eri_write(sc, 0x1dc, 4, 0x0000002d, ERIAR_ExGMAC); - break; - case MACFG_38: - re_eri_write(sc, 0x1bc, 4, 0x0000001f, ERIAR_ExGMAC); - re_eri_write(sc, 0x1dc, 4, 0x0000003f, ERIAR_ExGMAC); - break; - } - - switch (sc->re_type) { - case MACFG_74: - case MACFG_75: - SetMcuAccessRegBit(sc, 0xD438, BIT_3); - SetMcuAccessRegBit(sc, 0xD438, BIT_2); - ClearMcuAccessRegBit(sc, 0xDE28, (BIT_1 | BIT_0)); - SetMcuAccessRegBit(sc, 0xD438, (BIT_1 | BIT_0)); - break; - } +static void +re_acquire_phy_mcu_patch_key_lock(struct re_softc *sc) +{ + u_int16_t PatchKey; + + switch (sc->re_type) { + case MACFG_80: + PatchKey = 0x8600; + break; + case MACFG_81: + PatchKey = 0x8601; + break; + case MACFG_82: + PatchKey = 0x3700; + break; + case MACFG_83: + PatchKey = 0x3701; + break; + default: + return; + } + re_real_ocp_phy_write(sc, 0xA436, 0x8024); + re_real_ocp_phy_write(sc, 0xA438, PatchKey); + re_real_ocp_phy_write(sc, 0xA436, 0xB82E); + re_real_ocp_phy_write(sc, 0xA438, 0x0001); +} - re_reset(sc); +static void +re_release_phy_mcu_patch_key_lock(struct re_softc *sc) +{ + switch (sc->re_type) { + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + re_real_ocp_phy_write(sc, 0xA436, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_clear_eth_ocp_phy_bit(sc, 0xB82E, BIT_0); + re_real_ocp_phy_write(sc, 0xA436, 0x8024); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + break; + default: + break; + } } -void re_set_rx_packet_filter(struct re_softc* sc) { - u_int32_t rxfilt; - - rxfilt = CSR_READ_4(sc, RE_RXCFG); +bool +re_set_phy_mcu_patch_request(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + u_int16_t WaitCount = 0; + bool bSuccess = TRUE; - rxfilt &= ~(RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_INDIV | - RE_RXCFG_RX_MULTI | RE_RXCFG_RX_BROAD | - RE_RXCFG_RX_RUNT | RE_RXCFG_RX_ERRPKT); + switch (sc->re_type) { + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + re_mdio_write(sc, 0x1f, 0x0B82); + re_set_eth_phy_bit(sc, 0x10, BIT_4); - NET_PACKET_FILTER_FLAGS flags = sc->dev->PacketFilterFlags; + re_mdio_write(sc, 0x1f, 0x0B80); + WaitCount = 0; + do { + PhyRegValue = re_mdio_read(sc, 0x10); + DELAY(50); + DELAY(50); + WaitCount++; + } while (!(PhyRegValue & BIT_6) && (WaitCount < 1000)); - if (flags & NetPacketFilterFlagPromiscuous) { - rxfilt |= ( - RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_INDIV | - RE_RXCFG_RX_MULTI | RE_RXCFG_RX_BROAD | - RE_RXCFG_RX_RUNT | RE_RXCFG_RX_ERRPKT - ); - } - else { - rxfilt |= ((flags & NetPacketFilterFlagAllMulticast) ? (RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_MULTI) : 0); - rxfilt |= ((flags & NetPacketFilterFlagMulticast) ? (RE_RXCFG_RX_ALLPHYS | RE_RXCFG_RX_MULTI) : 0); - rxfilt |= ((flags & NetPacketFilterFlagBroadcast) ? RE_RXCFG_RX_BROAD : 0); - rxfilt |= ((flags & NetPacketFilterFlagDirected) ? RE_RXCFG_RX_INDIV : 0); - } - - CSR_WRITE_4(sc, RE_RXCFG, rxfilt); - - typedef union { - struct { - uint32_t mask0; - uint32_t mask4; - }; - uint8_t bytes[32]; - } MarRegs; + if (!(PhyRegValue & BIT_6) && (WaitCount == 1000)) bSuccess = FALSE; - MarRegs regs = { 0 }; + re_mdio_write(sc, 0x1f, 0x0000); + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_set_eth_ocp_phy_bit(sc, 0xB820, BIT_4); + + WaitCount = 0; + do { + PhyRegValue = re_real_ocp_phy_read(sc, 0xB800); + DELAY(50); + DELAY(50); + WaitCount++; + } while (!(PhyRegValue & BIT_6) && (WaitCount < 1000)); + + if (!(PhyRegValue & BIT_6) && (WaitCount == 1000)) bSuccess = FALSE; - if (flags & (NetPacketFilterFlagPromiscuous | NetPacketFilterFlagAllMulticast)) { - regs.mask0 = 0xffffffff; - regs.mask4 = 0xffffffff; - } - else { - for (UINT i = 0; i < sc->dev->MCAddressCount; i++) { - UCHAR byte, bit; - NET_ADAPTER_LINK_LAYER_ADDRESS address = sc->dev->MCList[i]; - GetMulticastBit(&sc->dev->MCList[i], &byte, &bit); - regs.bytes[byte] |= bit; + break; } - } - - u_int8_t enable_cfg_reg_write = 0; - - if (sc->re_type == MACFG_5 || sc->re_type == MACFG_6) - enable_cfg_reg_write = 1; - - if (enable_cfg_reg_write) - re_enable_cfg9346_write(sc); - - CSR_WRITE_4(sc, RE_MAR0, regs.mask0); - CSR_WRITE_4(sc, RE_MAR4, regs.mask4); - if (enable_cfg_reg_write) - re_disable_cfg9346_write(sc); + return bSuccess; } -/* - * Set media options. - */ -int re_ifmedia_upd(struct re_softc* sc) +bool +re_clear_phy_mcu_patch_request(struct re_softc *sc) { - int anar; - int gbcr; + u_int16_t PhyRegValue; + u_int16_t WaitCount = 0; + bool bSuccess = TRUE; - if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || - sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || - sc->re_type == MACFG_72 || sc->re_type == MACFG_73 || - sc->re_type == MACFG_74 || sc->re_type == MACFG_75) { - //Disable Giga Lite - MP_WritePhyUshort(sc, 0x1F, 0x0A42); - ClearEthPhyBit(sc, 0x14, BIT_9); - if (sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || - sc->re_type == MACFG_72 || sc->re_type == MACFG_73) - ClearEthPhyBit(sc, 0x14, BIT_7); - MP_WritePhyUshort(sc, 0x1F, 0x0A40); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - - gbcr = MP_ReadPhyUshort(sc, MII_100T2CR) & - ~(GTCR_ADV_1000TFDX | GTCR_ADV_1000THDX); - anar = MP_ReadPhyUshort(sc, MII_ANAR) & - ~(ANAR_10 | ANAR_10_FD | ANAR_TX | ANAR_TX_FD | ANAR_FC | ANAR_PAUSE_ASYM); - - switch (sc->dev->SpeedDuplex) { - case RtSpeedDuplexModeAutoNegotiation: - anar = (ANAR_10 | ANAR_10_FD | ANAR_TX | ANAR_TX_FD); - gbcr |= (GTCR_ADV_1000TFDX | GTCR_ADV_1000THDX); - break; - case RtSpeedDuplexMode1GFullDuplex: - gbcr |= GTCR_ADV_1000TFDX; - break; - case RtSpeedDuplexMode1GHalfDuplex: - gbcr |= GTCR_ADV_1000THDX; - break; - case RtSpeedDuplexMode100MFullDuplex: - anar |= ANAR_TX_FD; - break; - case RtSpeedDuplexMode100MHalfDuplex: - anar |= ANAR_TX; - break; - case RtSpeedDuplexMode10MFullDuplex: - anar |= ANAR_10_FD; - break; - case RtSpeedDuplexMode10MHalfDuplex: - anar |= ANAR_10; - break; - default: - DBGPRINT1(sc, "Unsupported media type\n"); - return(0); - } + switch (sc->re_type) { + case MACFG_56: + case MACFG_57: + case MACFG_58: + case MACFG_59: + case MACFG_60: + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + re_mdio_write(sc, 0x1f, 0x0B82); + re_clear_eth_phy_bit(sc, 0x10, BIT_4); - if (sc->dev->SpeedDuplex == RtSpeedDuplexMode10MFullDuplex || - sc->dev->SpeedDuplex == RtSpeedDuplexMode10MHalfDuplex) { - if (sc->re_type == MACFG_13) { - MP_WritePhyUshort(sc, MII_BMCR, 0x8000); - } - } + re_mdio_write(sc, 0x1f, 0x0B80); + WaitCount = 0; + do { + PhyRegValue = re_mdio_read(sc, 0x10); + DELAY(50); + DELAY(50); + WaitCount++; + } while ((PhyRegValue & BIT_6) && (WaitCount < 1000)); - if (sc->re_device_id == RT_DEVICEID_8162) - ClearEthPhyOcpBit(sc, 0xA5D4, RTK_ADVERTISE_2500FULL); + if ((PhyRegValue & BIT_6) && (WaitCount == 1000)) bSuccess = FALSE; - MP_WritePhyUshort(sc, 0x1F, 0x0000); - if (sc->re_device_id == RT_DEVICEID_8169 || sc->re_device_id == RT_DEVICEID_8169SC || - sc->re_device_id == RT_DEVICEID_8168 || sc->re_device_id == RT_DEVICEID_8161 || - sc->re_device_id == RT_DEVICEID_8162) { - switch (sc->dev->FlowControl) { - case FlowControlTxOnly: - anar |= ANAR_PAUSE_ASYM; - break; - case FlowControlRxOnly: - anar |= ANAR_FC; - break; - case FlowControlTxRx: - anar |= (ANAR_FC | ANAR_PAUSE_ASYM); - break; - } + re_mdio_write(sc, 0x1f, 0x0000); + break; + case MACFG_80: + case MACFG_81: + case MACFG_82: + case MACFG_83: + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_clear_eth_ocp_phy_bit(sc, 0xB820, BIT_4); + + WaitCount = 0; + do { + PhyRegValue = re_real_ocp_phy_read(sc, 0xB800); + DELAY(50); + DELAY(50); + WaitCount++; + } while ((PhyRegValue & BIT_6) && (WaitCount < 1000)); + + if ((PhyRegValue & BIT_6) && (WaitCount == 1000)) bSuccess = FALSE; - MP_WritePhyUshort(sc, MII_ANAR, anar); - MP_WritePhyUshort(sc, MII_100T2CR, gbcr); - MP_WritePhyUshort(sc, MII_BMCR, BMCR_RESET | BMCR_AUTOEN | BMCR_STARTNEG); - } - else if (sc->re_type == MACFG_36) { - switch (sc->dev->FlowControl) { - case FlowControlTxOnly: - anar |= ANAR_PAUSE_ASYM; - break; - case FlowControlRxOnly: - anar |= ANAR_FC; - break; - case FlowControlTxRx: - anar |= (ANAR_FC | ANAR_PAUSE_ASYM); - break; + break; } - MP_WritePhyUshort(sc, MII_ANAR, anar); - MP_WritePhyUshort(sc, MII_BMCR, BMCR_RESET | BMCR_AUTOEN | BMCR_STARTNEG); - } - else { - MP_WritePhyUshort(sc, MII_ANAR, anar | 1); - MP_WritePhyUshort(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); - } - - return(0); + return bSuccess; } -int re_ifmedia_upd_8125(struct re_softc* sc) +static void +re_set_phy_mcu_ram_code(struct re_softc *sc, const u_int16_t *ramcode, u_int16_t codesize) { - int anar; - int gbcr; - int cr2500; - - //Disable Giga Lite - ClearEthPhyOcpBit(sc, 0xA428, BIT_9); - ClearEthPhyOcpBit(sc, 0xA5EA, BIT_0); - if (sc->re_device_id == RT_DEVICEID_8126) - ClearEthPhyOcpBit(sc, 0xB5EA, BIT_1); + u_int16_t i; + u_int16_t addr; + u_int16_t val; - cr2500 = MP_RealReadPhyOcpRegWord(sc, 0xA5D4) & - ~(RTK_ADVERTISE_2500FULL | RTK_ADVERTISE_5000FULL); - gbcr = MP_ReadPhyUshort(sc, MII_100T2CR) & - ~(GTCR_ADV_1000TFDX | GTCR_ADV_1000THDX); - anar = MP_ReadPhyUshort(sc, MII_ANAR) & - ~(ANAR_10 | ANAR_10_FD | ANAR_TX | ANAR_TX_FD | ANAR_FC | ANAR_PAUSE_ASYM); - - switch (sc->dev->SpeedDuplex) { - case RtSpeedDuplexModeAutoNegotiation: - if (sc->re_device_id == RT_DEVICEID_8126) - cr2500 |= RTK_ADVERTISE_5000FULL; - cr2500 |= RTK_ADVERTISE_2500FULL; - anar = (ANAR_10 | ANAR_10_FD | ANAR_TX | ANAR_TX_FD); - gbcr |= (GTCR_ADV_1000TFDX | GTCR_ADV_1000THDX); - break; - case RtSpeedDuplexMode5GFullDuplex: - if (sc->re_device_id == RT_DEVICEID_8126) { - cr2500 |= RTK_ADVERTISE_5000FULL; - break; + if (ramcode == NULL || codesize % 2) { + goto out; } - /* FALLTHROUGH in case not 5000 supported */ - case RtSpeedDuplexMode2GFullDuplex: - cr2500 |= RTK_ADVERTISE_2500FULL; - break; - case RtSpeedDuplexMode1GFullDuplex: - gbcr |= GTCR_ADV_1000TFDX; - break; - case RtSpeedDuplexMode1GHalfDuplex: - gbcr |= GTCR_ADV_1000THDX; - break; - case RtSpeedDuplexMode100MFullDuplex: - anar |= ANAR_TX_FD; - break; - case RtSpeedDuplexMode100MHalfDuplex: - anar |= ANAR_TX; - break; - case RtSpeedDuplexMode10MFullDuplex: - anar |= ANAR_10_FD; - break; - case RtSpeedDuplexMode10MHalfDuplex: - anar |= ANAR_10; - break; - default: - DBGPRINT1(sc, "Unsupported media type\n"); - return(0); - } - if (sc->dev->SpeedDuplex == RtSpeedDuplexMode10MFullDuplex || - sc->dev->SpeedDuplex == RtSpeedDuplexMode10MHalfDuplex) { - if (sc->re_type == MACFG_13) { - MP_WritePhyUshort(sc, MII_BMCR, 0x8000); + for (i = 0; i < codesize; i += 2) { + addr = ramcode[i]; + val = ramcode[i + 1]; + if (addr == 0xFFFF && val == 0xFFFF) { + break; + } + re_real_ocp_phy_write(sc, addr, val); } - } - - switch (sc->dev->FlowControl) { - case FlowControlTxOnly: - anar |= ANAR_PAUSE_ASYM; - break; - case FlowControlRxOnly: - anar |= ANAR_FC; - break; - case FlowControlTxRx: - anar |= (ANAR_FC | ANAR_PAUSE_ASYM); - break; - } - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA5D4, cr2500); - MP_WritePhyUshort(sc, MII_ANAR, anar); - MP_WritePhyUshort(sc, MII_100T2CR, gbcr); - MP_WritePhyUshort(sc, MII_BMCR, BMCR_RESET | BMCR_AUTOEN | BMCR_STARTNEG); - return(0); +out: + return; } - -static int re_enable_EEE(struct re_softc* sc) +static void re_set_phy_mcu_8168e_1(struct re_softc *sc) { - int ret; - u_int16_t data; + u_int16_t PhyRegValue; + int i; - ret = 0; - switch (sc->re_type) { - case MACFG_42: - case MACFG_43: - re_eri_write(sc, 0x1B0, 2, 0xED03, ERIAR_ExGMAC); - MP_WritePhyUshort(sc, 0x1F, 0x0004); - if (CSR_READ_1(sc, 0xEF) & 0x02) { - MP_WritePhyUshort(sc, 0x10, 0x731F); - MP_WritePhyUshort(sc, 0x19, 0x7630); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x17, 0x0117); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1E, 0x002C); + re_mdio_write(sc, 0x1B, 0x5000); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x16, 0x4104); + for (i=0; i<200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x1E); + PhyRegValue &= 0x03FF; + if (PhyRegValue== 0x000C) + break; } - else { - MP_WritePhyUshort(sc, 0x10, 0x711F); - MP_WritePhyUshort(sc, 0x19, 0x7030); - } - MP_WritePhyUshort(sc, 0x1A, 0x1506); - MP_WritePhyUshort(sc, 0x1B, 0x0551); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0007); - MP_WritePhyUshort(sc, 0x0E, 0x003C); - MP_WritePhyUshort(sc, 0x0D, 0x4007); - MP_WritePhyUshort(sc, 0x0E, 0x0002); - MP_WritePhyUshort(sc, 0x0D, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0003); - MP_WritePhyUshort(sc, 0x0E, 0x0015); - MP_WritePhyUshort(sc, 0x0D, 0x4003); - MP_WritePhyUshort(sc, 0x0E, 0x0002); - MP_WritePhyUshort(sc, 0x0D, 0x0000); - - MP_WritePhyUshort(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); - break; - - case MACFG_53: - case MACFG_54: - case MACFG_55: - re_eri_write(sc, 0x1B0, 2, 0xED03, ERIAR_ExGMAC); - MP_WritePhyUshort(sc, 0x1F, 0x0004); - MP_WritePhyUshort(sc, 0x10, 0x731F); - MP_WritePhyUshort(sc, 0x19, 0x7630); - MP_WritePhyUshort(sc, 0x1A, 0x1506); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0007); - MP_WritePhyUshort(sc, 0x0E, 0x003C); - MP_WritePhyUshort(sc, 0x0D, 0x4007); - MP_WritePhyUshort(sc, 0x0E, 0x0002); - MP_WritePhyUshort(sc, 0x0D, 0x0000); - - MP_WritePhyUshort(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); - break; - - case MACFG_36: - case MACFG_37: - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x0020); - data = MP_ReadPhyUshort(sc, 0x15) | 0x0100; - MP_WritePhyUshort(sc, 0x15, data); - MP_WritePhyUshort(sc, 0x1F, 0x0006); - MP_WritePhyUshort(sc, 0x00, 0x5A30); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0007); - MP_WritePhyUshort(sc, 0x0E, 0x003C); - MP_WritePhyUshort(sc, 0x0D, 0x4007); - MP_WritePhyUshort(sc, 0x0E, 0x0006); - MP_WritePhyUshort(sc, 0x0D, 0x0000); - if ((CSR_READ_1(sc, RE_CFG4) & RL_CFG4_CUSTOMIZED_LED) && (CSR_READ_1(sc, RE_MACDBG) & BIT_7)) { - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8AC8); - MP_WritePhyUshort(sc, 0x06, CSR_READ_1(sc, RE_CUSTOM_LED)); - MP_WritePhyUshort(sc, 0x05, 0x8B82); - data = MP_ReadPhyUshort(sc, 0x06) | 0x0010; - MP_WritePhyUshort(sc, 0x05, 0x8B82); - MP_WritePhyUshort(sc, 0x06, data); - MP_WritePhyUshort(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + for (i=0; i<200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x07); + if ((PhyRegValue&0x0020)==0) + break; + } + PhyRegValue = re_mdio_read(sc, 0x07); + if (PhyRegValue & 0x0020) { + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x00a1); + re_mdio_write(sc, 0x17, 0x1000); + re_mdio_write(sc, 0x17, 0x0000); + re_mdio_write(sc, 0x17, 0x2000); + re_mdio_write(sc, 0x1e, 0x002f); + re_mdio_write(sc, 0x18, 0x9bfb); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x07, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); } - break; - - case MACFG_50: - case MACFG_51: - case MACFG_52: - data = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC) | 0x0003; - re_eri_write(sc, 0x1B0, 4, data, ERIAR_ExGMAC); - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x0020); - data = MP_ReadPhyUshort(sc, 0x15) | 0x0100; - MP_WritePhyUshort(sc, 0x15, data); - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B85); - data = MP_ReadPhyUshort(sc, 0x06) | 0x2000; - MP_WritePhyUshort(sc, 0x06, data); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0007); - MP_WritePhyUshort(sc, 0x0E, 0x003C); - MP_WritePhyUshort(sc, 0x0D, 0x4007); - MP_WritePhyUshort(sc, 0x0E, 0x0006); - MP_WritePhyUshort(sc, 0x1D, 0x0000); - break; - - case MACFG_38: - case MACFG_39: - data = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); - data |= BIT_1 | BIT_0; - re_eri_write(sc, 0x1B0, 4, data, ERIAR_ExGMAC); - MP_WritePhyUshort(sc, 0x1F, 0x0004); - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0020); - data = MP_ReadPhyUshort(sc, 0x15); - data |= BIT_8; - MP_WritePhyUshort(sc, 0x15, data); - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B85); - data = MP_ReadPhyUshort(sc, 0x06); - data |= BIT_13; - MP_WritePhyUshort(sc, 0x06, data); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0007); - MP_WritePhyUshort(sc, 0x0E, 0x003C); - MP_WritePhyUshort(sc, 0x0D, 0x4007); - MP_WritePhyUshort(sc, 0x0E, 0x0006); - MP_WritePhyUshort(sc, 0x0D, 0x0000); - break; - - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - data = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); - data |= BIT_1 | BIT_0; - re_eri_write(sc, 0x1B0, 4, data, ERIAR_ExGMAC); - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - data = MP_ReadPhyUshort(sc, 0x11); - MP_WritePhyUshort(sc, 0x11, data | BIT_4); - MP_WritePhyUshort(sc, 0x1F, 0x0A5D); - MP_WritePhyUshort(sc, 0x10, 0x0006); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - break; - - case MACFG_80: - case MACFG_81: - SetMcuAccessRegBit(sc, 0xE040, (BIT_1 | BIT_0)); - SetMcuAccessRegBit(sc, 0xEB62, (BIT_2 | BIT_1)); - - SetEthPhyOcpBit(sc, 0xA432, BIT_4); - SetEthPhyOcpBit(sc, 0xA5D0, (BIT_2 | BIT_1)); - ClearEthPhyOcpBit(sc, 0xA6D4, BIT_0); - - ClearEthPhyOcpBit(sc, 0xA6D8, BIT_4); - ClearEthPhyOcpBit(sc, 0xA428, BIT_7); - ClearEthPhyOcpBit(sc, 0xA4A2, BIT_9); - break; - - case MACFG_82: - case MACFG_83: - SetMcuAccessRegBit(sc, 0xE040, (BIT_1 | BIT_0)); - - SetEthPhyOcpBit(sc, 0xA5D0, (BIT_2 | BIT_1)); - ClearEthPhyOcpBit(sc, 0xA6D4, BIT_0); - - ClearEthPhyOcpBit(sc, 0xA6D8, BIT_4); - ClearEthPhyOcpBit(sc, 0xA428, BIT_7); - ClearEthPhyOcpBit(sc, 0xA4A2, BIT_9); - break; - - case MACFG_90: - case MACFG_91: - case MACFG_92: - SetMcuAccessRegBit(sc, 0xE040, (BIT_1 | BIT_0)); - - SetEthPhyOcpBit(sc, 0xA5D0, (BIT_2 | BIT_1)); - ClearEthPhyOcpBit(sc, 0xA6D4, (BIT_1 | BIT_0)); - ClearEthPhyOcpBit(sc, 0xA428, BIT_7); - ClearEthPhyOcpBit(sc, 0xA4A2, BIT_9); - break; + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + PhyRegValue = re_mdio_read(sc, 0x00); + PhyRegValue &= ~(BIT_7); + re_mdio_write(sc, 0x00, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0002); + PhyRegValue = re_mdio_read(sc, 0x08); + PhyRegValue &= ~(BIT_7); + re_mdio_write(sc, 0x08, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0307); + re_mdio_write(sc, 0x15, 0x000e); + re_mdio_write(sc, 0x19, 0x000a); + re_mdio_write(sc, 0x15, 0x0010); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x0018); + re_mdio_write(sc, 0x19, 0x4801); + re_mdio_write(sc, 0x15, 0x0019); + re_mdio_write(sc, 0x19, 0x6801); + re_mdio_write(sc, 0x15, 0x001a); + re_mdio_write(sc, 0x19, 0x66a1); + re_mdio_write(sc, 0x15, 0x001f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0020); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0021); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0022); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0023); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0024); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0025); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x0026); + re_mdio_write(sc, 0x19, 0x40ea); + re_mdio_write(sc, 0x15, 0x0027); + re_mdio_write(sc, 0x19, 0x4503); + re_mdio_write(sc, 0x15, 0x0028); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0029); + re_mdio_write(sc, 0x19, 0xa631); + re_mdio_write(sc, 0x15, 0x002a); + re_mdio_write(sc, 0x19, 0x9717); + re_mdio_write(sc, 0x15, 0x002b); + re_mdio_write(sc, 0x19, 0x302c); + re_mdio_write(sc, 0x15, 0x002c); + re_mdio_write(sc, 0x19, 0x4802); + re_mdio_write(sc, 0x15, 0x002d); + re_mdio_write(sc, 0x19, 0x58da); + re_mdio_write(sc, 0x15, 0x002e); + re_mdio_write(sc, 0x19, 0x400d); + re_mdio_write(sc, 0x15, 0x002f); + re_mdio_write(sc, 0x19, 0x4488); + re_mdio_write(sc, 0x15, 0x0030); + re_mdio_write(sc, 0x19, 0x9e00); + re_mdio_write(sc, 0x15, 0x0031); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x0032); + re_mdio_write(sc, 0x19, 0x6481); + re_mdio_write(sc, 0x15, 0x0033); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0034); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0035); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0036); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0037); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0038); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0039); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x003a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x003b); + re_mdio_write(sc, 0x19, 0x63e8); + re_mdio_write(sc, 0x15, 0x003c); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x003d); + re_mdio_write(sc, 0x19, 0x59d4); + re_mdio_write(sc, 0x15, 0x003e); + re_mdio_write(sc, 0x19, 0x63f8); + re_mdio_write(sc, 0x15, 0x0040); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x0041); + re_mdio_write(sc, 0x19, 0x30de); + re_mdio_write(sc, 0x15, 0x0044); + re_mdio_write(sc, 0x19, 0x480f); + re_mdio_write(sc, 0x15, 0x0045); + re_mdio_write(sc, 0x19, 0x6800); + re_mdio_write(sc, 0x15, 0x0046); + re_mdio_write(sc, 0x19, 0x6680); + re_mdio_write(sc, 0x15, 0x0047); + re_mdio_write(sc, 0x19, 0x7c10); + re_mdio_write(sc, 0x15, 0x0048); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x0049); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004b); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004f); + re_mdio_write(sc, 0x19, 0x40ea); + re_mdio_write(sc, 0x15, 0x0050); + re_mdio_write(sc, 0x19, 0x4503); + re_mdio_write(sc, 0x15, 0x0051); + re_mdio_write(sc, 0x19, 0x58ca); + re_mdio_write(sc, 0x15, 0x0052); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x0053); + re_mdio_write(sc, 0x19, 0x63d8); + re_mdio_write(sc, 0x15, 0x0054); + re_mdio_write(sc, 0x19, 0x66a0); + re_mdio_write(sc, 0x15, 0x0055); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0056); + re_mdio_write(sc, 0x19, 0x3000); + re_mdio_write(sc, 0x15, 0x006E); + re_mdio_write(sc, 0x19, 0x9afa); + re_mdio_write(sc, 0x15, 0x00a1); + re_mdio_write(sc, 0x19, 0x3044); + re_mdio_write(sc, 0x15, 0x00ab); + re_mdio_write(sc, 0x19, 0x5820); + re_mdio_write(sc, 0x15, 0x00ac); + re_mdio_write(sc, 0x19, 0x5e04); + re_mdio_write(sc, 0x15, 0x00ad); + re_mdio_write(sc, 0x19, 0xb60c); + re_mdio_write(sc, 0x15, 0x00af); + re_mdio_write(sc, 0x19, 0x000a); + re_mdio_write(sc, 0x15, 0x00b2); + re_mdio_write(sc, 0x19, 0x30b9); + re_mdio_write(sc, 0x15, 0x00b9); + re_mdio_write(sc, 0x19, 0x4408); + re_mdio_write(sc, 0x15, 0x00ba); + re_mdio_write(sc, 0x19, 0x480b); + re_mdio_write(sc, 0x15, 0x00bb); + re_mdio_write(sc, 0x19, 0x5e00); + re_mdio_write(sc, 0x15, 0x00bc); + re_mdio_write(sc, 0x19, 0x405f); + re_mdio_write(sc, 0x15, 0x00bd); + re_mdio_write(sc, 0x19, 0x4448); + re_mdio_write(sc, 0x15, 0x00be); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x00bf); + re_mdio_write(sc, 0x19, 0x4468); + re_mdio_write(sc, 0x15, 0x00c0); + re_mdio_write(sc, 0x19, 0x9c02); + re_mdio_write(sc, 0x15, 0x00c1); + re_mdio_write(sc, 0x19, 0x58a0); + re_mdio_write(sc, 0x15, 0x00c2); + re_mdio_write(sc, 0x19, 0xb605); + re_mdio_write(sc, 0x15, 0x00c3); + re_mdio_write(sc, 0x19, 0xc0d3); + re_mdio_write(sc, 0x15, 0x00c4); + re_mdio_write(sc, 0x19, 0x00e6); + re_mdio_write(sc, 0x15, 0x00c5); + re_mdio_write(sc, 0x19, 0xdaec); + re_mdio_write(sc, 0x15, 0x00c6); + re_mdio_write(sc, 0x19, 0x00fa); + re_mdio_write(sc, 0x15, 0x00c7); + re_mdio_write(sc, 0x19, 0x9df9); + re_mdio_write(sc, 0x15, 0x00c8); + re_mdio_write(sc, 0x19, 0x307a); + re_mdio_write(sc, 0x15, 0x0112); + re_mdio_write(sc, 0x19, 0x6421); + re_mdio_write(sc, 0x15, 0x0113); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0114); + re_mdio_write(sc, 0x19, 0x63f0); + re_mdio_write(sc, 0x15, 0x0115); + re_mdio_write(sc, 0x19, 0x4003); + re_mdio_write(sc, 0x15, 0x0116); + re_mdio_write(sc, 0x19, 0x4418); + re_mdio_write(sc, 0x15, 0x0117); + re_mdio_write(sc, 0x19, 0x9b00); + re_mdio_write(sc, 0x15, 0x0118); + re_mdio_write(sc, 0x19, 0x6461); + re_mdio_write(sc, 0x15, 0x0119); + re_mdio_write(sc, 0x19, 0x64e1); + re_mdio_write(sc, 0x15, 0x011a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0150); + re_mdio_write(sc, 0x19, 0x7c80); + re_mdio_write(sc, 0x15, 0x0151); + re_mdio_write(sc, 0x19, 0x6461); + re_mdio_write(sc, 0x15, 0x0152); + re_mdio_write(sc, 0x19, 0x4003); + re_mdio_write(sc, 0x15, 0x0153); + re_mdio_write(sc, 0x19, 0x4540); + re_mdio_write(sc, 0x15, 0x0154); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0155); + re_mdio_write(sc, 0x19, 0x9d00); + re_mdio_write(sc, 0x15, 0x0156); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0157); + re_mdio_write(sc, 0x19, 0x6421); + re_mdio_write(sc, 0x15, 0x0158); + re_mdio_write(sc, 0x19, 0x7c80); + re_mdio_write(sc, 0x15, 0x0159); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x015a); + re_mdio_write(sc, 0x19, 0x30fe); + re_mdio_write(sc, 0x15, 0x021e); + re_mdio_write(sc, 0x19, 0x5410); + re_mdio_write(sc, 0x15, 0x0225); + re_mdio_write(sc, 0x19, 0x5400); + re_mdio_write(sc, 0x15, 0x023D); + re_mdio_write(sc, 0x19, 0x4050); + re_mdio_write(sc, 0x15, 0x0295); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x02bd); + re_mdio_write(sc, 0x19, 0xa523); + re_mdio_write(sc, 0x15, 0x02be); + re_mdio_write(sc, 0x19, 0x32ca); + re_mdio_write(sc, 0x15, 0x02ca); + re_mdio_write(sc, 0x19, 0x48b3); + re_mdio_write(sc, 0x15, 0x02cb); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x02cc); + re_mdio_write(sc, 0x19, 0x4823); + re_mdio_write(sc, 0x15, 0x02cd); + re_mdio_write(sc, 0x19, 0x4510); + re_mdio_write(sc, 0x15, 0x02ce); + re_mdio_write(sc, 0x19, 0xb63a); + re_mdio_write(sc, 0x15, 0x02cf); + re_mdio_write(sc, 0x19, 0x7dc8); + re_mdio_write(sc, 0x15, 0x02d6); + re_mdio_write(sc, 0x19, 0x9bf8); + re_mdio_write(sc, 0x15, 0x02d8); + re_mdio_write(sc, 0x19, 0x85f6); + re_mdio_write(sc, 0x15, 0x02d9); + re_mdio_write(sc, 0x19, 0x32e0); + re_mdio_write(sc, 0x15, 0x02e0); + re_mdio_write(sc, 0x19, 0x4834); + re_mdio_write(sc, 0x15, 0x02e1); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x02e2); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x02e3); + re_mdio_write(sc, 0x19, 0x4824); + re_mdio_write(sc, 0x15, 0x02e4); + re_mdio_write(sc, 0x19, 0x4520); + re_mdio_write(sc, 0x15, 0x02e5); + re_mdio_write(sc, 0x19, 0x4008); + re_mdio_write(sc, 0x15, 0x02e6); + re_mdio_write(sc, 0x19, 0x4560); + re_mdio_write(sc, 0x15, 0x02e7); + re_mdio_write(sc, 0x19, 0x9d04); + re_mdio_write(sc, 0x15, 0x02e8); + re_mdio_write(sc, 0x19, 0x48c4); + re_mdio_write(sc, 0x15, 0x02e9); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02ea); + re_mdio_write(sc, 0x19, 0x4844); + re_mdio_write(sc, 0x15, 0x02eb); + re_mdio_write(sc, 0x19, 0x7dc8); + re_mdio_write(sc, 0x15, 0x02f0); + re_mdio_write(sc, 0x19, 0x9cf7); + re_mdio_write(sc, 0x15, 0x02f1); + re_mdio_write(sc, 0x19, 0xdf94); + re_mdio_write(sc, 0x15, 0x02f2); + re_mdio_write(sc, 0x19, 0x0002); + re_mdio_write(sc, 0x15, 0x02f3); + re_mdio_write(sc, 0x19, 0x6810); + re_mdio_write(sc, 0x15, 0x02f4); + re_mdio_write(sc, 0x19, 0xb614); + re_mdio_write(sc, 0x15, 0x02f5); + re_mdio_write(sc, 0x19, 0xc42b); + re_mdio_write(sc, 0x15, 0x02f6); + re_mdio_write(sc, 0x19, 0x00d4); + re_mdio_write(sc, 0x15, 0x02f7); + re_mdio_write(sc, 0x19, 0xc455); + re_mdio_write(sc, 0x15, 0x02f8); + re_mdio_write(sc, 0x19, 0x0093); + re_mdio_write(sc, 0x15, 0x02f9); + re_mdio_write(sc, 0x19, 0x92ee); + re_mdio_write(sc, 0x15, 0x02fa); + re_mdio_write(sc, 0x19, 0xefed); + re_mdio_write(sc, 0x15, 0x02fb); + re_mdio_write(sc, 0x19, 0x3312); + re_mdio_write(sc, 0x15, 0x0312); + re_mdio_write(sc, 0x19, 0x49b5); + re_mdio_write(sc, 0x15, 0x0313); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x0314); + re_mdio_write(sc, 0x19, 0x4d00); + re_mdio_write(sc, 0x15, 0x0315); + re_mdio_write(sc, 0x19, 0x6810); + re_mdio_write(sc, 0x15, 0x031e); + re_mdio_write(sc, 0x19, 0x404f); + re_mdio_write(sc, 0x15, 0x031f); + re_mdio_write(sc, 0x19, 0x44c8); + re_mdio_write(sc, 0x15, 0x0320); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x0321); + re_mdio_write(sc, 0x19, 0x00e7); + re_mdio_write(sc, 0x15, 0x0322); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0323); + re_mdio_write(sc, 0x19, 0x8203); + re_mdio_write(sc, 0x15, 0x0324); + re_mdio_write(sc, 0x19, 0x4d48); + re_mdio_write(sc, 0x15, 0x0325); + re_mdio_write(sc, 0x19, 0x3327); + re_mdio_write(sc, 0x15, 0x0326); + re_mdio_write(sc, 0x19, 0x4d40); + re_mdio_write(sc, 0x15, 0x0327); + re_mdio_write(sc, 0x19, 0xc8d7); + re_mdio_write(sc, 0x15, 0x0328); + re_mdio_write(sc, 0x19, 0x0003); + re_mdio_write(sc, 0x15, 0x0329); + re_mdio_write(sc, 0x19, 0x7c20); + re_mdio_write(sc, 0x15, 0x032a); + re_mdio_write(sc, 0x19, 0x4c20); + re_mdio_write(sc, 0x15, 0x032b); + re_mdio_write(sc, 0x19, 0xc8ed); + re_mdio_write(sc, 0x15, 0x032c); + re_mdio_write(sc, 0x19, 0x00f4); + re_mdio_write(sc, 0x15, 0x032d); + re_mdio_write(sc, 0x19, 0x82b3); + re_mdio_write(sc, 0x15, 0x032e); + re_mdio_write(sc, 0x19, 0xd11d); + re_mdio_write(sc, 0x15, 0x032f); + re_mdio_write(sc, 0x19, 0x00b1); + re_mdio_write(sc, 0x15, 0x0330); + re_mdio_write(sc, 0x19, 0xde18); + re_mdio_write(sc, 0x15, 0x0331); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x0332); + re_mdio_write(sc, 0x19, 0x91ee); + re_mdio_write(sc, 0x15, 0x0333); + re_mdio_write(sc, 0x19, 0x3339); + re_mdio_write(sc, 0x15, 0x033a); + re_mdio_write(sc, 0x19, 0x4064); + re_mdio_write(sc, 0x15, 0x0340); + re_mdio_write(sc, 0x19, 0x9e06); + re_mdio_write(sc, 0x15, 0x0341); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0342); + re_mdio_write(sc, 0x19, 0x8203); + re_mdio_write(sc, 0x15, 0x0343); + re_mdio_write(sc, 0x19, 0x4d48); + re_mdio_write(sc, 0x15, 0x0344); + re_mdio_write(sc, 0x19, 0x3346); + re_mdio_write(sc, 0x15, 0x0345); + re_mdio_write(sc, 0x19, 0x4d40); + re_mdio_write(sc, 0x15, 0x0346); + re_mdio_write(sc, 0x19, 0xd11d); + re_mdio_write(sc, 0x15, 0x0347); + re_mdio_write(sc, 0x19, 0x0099); + re_mdio_write(sc, 0x15, 0x0348); + re_mdio_write(sc, 0x19, 0xbb17); + re_mdio_write(sc, 0x15, 0x0349); + re_mdio_write(sc, 0x19, 0x8102); + re_mdio_write(sc, 0x15, 0x034a); + re_mdio_write(sc, 0x19, 0x334d); + re_mdio_write(sc, 0x15, 0x034b); + re_mdio_write(sc, 0x19, 0xa22c); + re_mdio_write(sc, 0x15, 0x034c); + re_mdio_write(sc, 0x19, 0x3397); + re_mdio_write(sc, 0x15, 0x034d); + re_mdio_write(sc, 0x19, 0x91f2); + re_mdio_write(sc, 0x15, 0x034e); + re_mdio_write(sc, 0x19, 0xc218); + re_mdio_write(sc, 0x15, 0x034f); + re_mdio_write(sc, 0x19, 0x00f0); + re_mdio_write(sc, 0x15, 0x0350); + re_mdio_write(sc, 0x19, 0x3397); + re_mdio_write(sc, 0x15, 0x0351); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0364); + re_mdio_write(sc, 0x19, 0xbc05); + re_mdio_write(sc, 0x15, 0x0367); + re_mdio_write(sc, 0x19, 0xa1fc); + re_mdio_write(sc, 0x15, 0x0368); + re_mdio_write(sc, 0x19, 0x3377); + re_mdio_write(sc, 0x15, 0x0369); + re_mdio_write(sc, 0x19, 0x328b); + re_mdio_write(sc, 0x15, 0x036a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0377); + re_mdio_write(sc, 0x19, 0x4b97); + re_mdio_write(sc, 0x15, 0x0378); + re_mdio_write(sc, 0x19, 0x6818); + re_mdio_write(sc, 0x15, 0x0379); + re_mdio_write(sc, 0x19, 0x4b07); + re_mdio_write(sc, 0x15, 0x037a); + re_mdio_write(sc, 0x19, 0x40ac); + re_mdio_write(sc, 0x15, 0x037b); + re_mdio_write(sc, 0x19, 0x4445); + re_mdio_write(sc, 0x15, 0x037c); + re_mdio_write(sc, 0x19, 0x404e); + re_mdio_write(sc, 0x15, 0x037d); + re_mdio_write(sc, 0x19, 0x4461); + re_mdio_write(sc, 0x15, 0x037e); + re_mdio_write(sc, 0x19, 0x9c09); + re_mdio_write(sc, 0x15, 0x037f); + re_mdio_write(sc, 0x19, 0x63da); + re_mdio_write(sc, 0x15, 0x0380); + re_mdio_write(sc, 0x19, 0x5440); + re_mdio_write(sc, 0x15, 0x0381); + re_mdio_write(sc, 0x19, 0x4b98); + re_mdio_write(sc, 0x15, 0x0382); + re_mdio_write(sc, 0x19, 0x7c60); + re_mdio_write(sc, 0x15, 0x0383); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x0384); + re_mdio_write(sc, 0x19, 0x4b08); + re_mdio_write(sc, 0x15, 0x0385); + re_mdio_write(sc, 0x19, 0x63d8); + re_mdio_write(sc, 0x15, 0x0386); + re_mdio_write(sc, 0x19, 0x338d); + re_mdio_write(sc, 0x15, 0x0387); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x0388); + re_mdio_write(sc, 0x19, 0x0080); + re_mdio_write(sc, 0x15, 0x0389); + re_mdio_write(sc, 0x19, 0x820c); + re_mdio_write(sc, 0x15, 0x038a); + re_mdio_write(sc, 0x19, 0xa10b); + re_mdio_write(sc, 0x15, 0x038b); + re_mdio_write(sc, 0x19, 0x9df3); + re_mdio_write(sc, 0x15, 0x038c); + re_mdio_write(sc, 0x19, 0x3395); + re_mdio_write(sc, 0x15, 0x038d); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x038e); + re_mdio_write(sc, 0x19, 0x00f9); + re_mdio_write(sc, 0x15, 0x038f); + re_mdio_write(sc, 0x19, 0xc017); + re_mdio_write(sc, 0x15, 0x0390); + re_mdio_write(sc, 0x19, 0x0005); + re_mdio_write(sc, 0x15, 0x0391); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x0392); + re_mdio_write(sc, 0x19, 0xa103); + re_mdio_write(sc, 0x15, 0x0393); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x0394); + re_mdio_write(sc, 0x19, 0x9df9); + re_mdio_write(sc, 0x15, 0x0395); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x0396); + re_mdio_write(sc, 0x19, 0x3397); + re_mdio_write(sc, 0x15, 0x0399); + re_mdio_write(sc, 0x19, 0x6810); + re_mdio_write(sc, 0x15, 0x03a4); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x03a5); + re_mdio_write(sc, 0x19, 0x8203); + re_mdio_write(sc, 0x15, 0x03a6); + re_mdio_write(sc, 0x19, 0x4d08); + re_mdio_write(sc, 0x15, 0x03a7); + re_mdio_write(sc, 0x19, 0x33a9); + re_mdio_write(sc, 0x15, 0x03a8); + re_mdio_write(sc, 0x19, 0x4d00); + re_mdio_write(sc, 0x15, 0x03a9); + re_mdio_write(sc, 0x19, 0x9bfa); + re_mdio_write(sc, 0x15, 0x03aa); + re_mdio_write(sc, 0x19, 0x33b6); + re_mdio_write(sc, 0x15, 0x03bb); + re_mdio_write(sc, 0x19, 0x4056); + re_mdio_write(sc, 0x15, 0x03bc); + re_mdio_write(sc, 0x19, 0x44e9); + re_mdio_write(sc, 0x15, 0x03bd); + re_mdio_write(sc, 0x19, 0x405e); + re_mdio_write(sc, 0x15, 0x03be); + re_mdio_write(sc, 0x19, 0x44f8); + re_mdio_write(sc, 0x15, 0x03bf); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x03c0); + re_mdio_write(sc, 0x19, 0x0037); + re_mdio_write(sc, 0x15, 0x03c1); + re_mdio_write(sc, 0x19, 0xbd37); + re_mdio_write(sc, 0x15, 0x03c2); + re_mdio_write(sc, 0x19, 0x9cfd); + re_mdio_write(sc, 0x15, 0x03c3); + re_mdio_write(sc, 0x19, 0xc639); + re_mdio_write(sc, 0x15, 0x03c4); + re_mdio_write(sc, 0x19, 0x0011); + re_mdio_write(sc, 0x15, 0x03c5); + re_mdio_write(sc, 0x19, 0x9b03); + re_mdio_write(sc, 0x15, 0x03c6); + re_mdio_write(sc, 0x19, 0x7c01); + re_mdio_write(sc, 0x15, 0x03c7); + re_mdio_write(sc, 0x19, 0x4c01); + re_mdio_write(sc, 0x15, 0x03c8); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x03c9); + re_mdio_write(sc, 0x19, 0x7c20); + re_mdio_write(sc, 0x15, 0x03ca); + re_mdio_write(sc, 0x19, 0x4c20); + re_mdio_write(sc, 0x15, 0x03cb); + re_mdio_write(sc, 0x19, 0x9af4); + re_mdio_write(sc, 0x15, 0x03cc); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03cd); + re_mdio_write(sc, 0x19, 0x4c52); + re_mdio_write(sc, 0x15, 0x03ce); + re_mdio_write(sc, 0x19, 0x4470); + re_mdio_write(sc, 0x15, 0x03cf); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03d0); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03d1); + re_mdio_write(sc, 0x19, 0x33bf); + re_mdio_write(sc, 0x15, 0x03d6); + re_mdio_write(sc, 0x19, 0x4047); + re_mdio_write(sc, 0x15, 0x03d7); + re_mdio_write(sc, 0x19, 0x4469); + re_mdio_write(sc, 0x15, 0x03d8); + re_mdio_write(sc, 0x19, 0x492b); + re_mdio_write(sc, 0x15, 0x03d9); + re_mdio_write(sc, 0x19, 0x4479); + re_mdio_write(sc, 0x15, 0x03da); + re_mdio_write(sc, 0x19, 0x7c09); + re_mdio_write(sc, 0x15, 0x03db); + re_mdio_write(sc, 0x19, 0x8203); + re_mdio_write(sc, 0x15, 0x03dc); + re_mdio_write(sc, 0x19, 0x4d48); + re_mdio_write(sc, 0x15, 0x03dd); + re_mdio_write(sc, 0x19, 0x33df); + re_mdio_write(sc, 0x15, 0x03de); + re_mdio_write(sc, 0x19, 0x4d40); + re_mdio_write(sc, 0x15, 0x03df); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x03e0); + re_mdio_write(sc, 0x19, 0x0017); + re_mdio_write(sc, 0x15, 0x03e1); + re_mdio_write(sc, 0x19, 0xbd17); + re_mdio_write(sc, 0x15, 0x03e2); + re_mdio_write(sc, 0x19, 0x9b03); + re_mdio_write(sc, 0x15, 0x03e3); + re_mdio_write(sc, 0x19, 0x7c20); + re_mdio_write(sc, 0x15, 0x03e4); + re_mdio_write(sc, 0x19, 0x4c20); + re_mdio_write(sc, 0x15, 0x03e5); + re_mdio_write(sc, 0x19, 0x88f5); + re_mdio_write(sc, 0x15, 0x03e6); + re_mdio_write(sc, 0x19, 0xc428); + re_mdio_write(sc, 0x15, 0x03e7); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x03e8); + re_mdio_write(sc, 0x19, 0x9af2); + re_mdio_write(sc, 0x15, 0x03e9); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03ea); + re_mdio_write(sc, 0x19, 0x4c52); + re_mdio_write(sc, 0x15, 0x03eb); + re_mdio_write(sc, 0x19, 0x4470); + re_mdio_write(sc, 0x15, 0x03ec); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03ed); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03ee); + re_mdio_write(sc, 0x19, 0x33da); + re_mdio_write(sc, 0x15, 0x03ef); + re_mdio_write(sc, 0x19, 0x3312); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0300); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x17, 0x2179); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0040); + re_mdio_write(sc, 0x18, 0x0645); + re_mdio_write(sc, 0x19, 0xe200); + re_mdio_write(sc, 0x18, 0x0655); + re_mdio_write(sc, 0x19, 0x9000); + re_mdio_write(sc, 0x18, 0x0d05); + re_mdio_write(sc, 0x19, 0xbe00); + re_mdio_write(sc, 0x18, 0x0d15); + re_mdio_write(sc, 0x19, 0xd300); + re_mdio_write(sc, 0x18, 0x0d25); + re_mdio_write(sc, 0x19, 0xfe00); + re_mdio_write(sc, 0x18, 0x0d35); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x0d45); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x18, 0x0d55); + re_mdio_write(sc, 0x19, 0x1000); + re_mdio_write(sc, 0x18, 0x0d65); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x0d75); + re_mdio_write(sc, 0x19, 0x8200); + re_mdio_write(sc, 0x18, 0x0d85); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x0d95); + re_mdio_write(sc, 0x19, 0x7000); + re_mdio_write(sc, 0x18, 0x0da5); + re_mdio_write(sc, 0x19, 0x0f00); + re_mdio_write(sc, 0x18, 0x0db5); + re_mdio_write(sc, 0x19, 0x0100); + re_mdio_write(sc, 0x18, 0x0dc5); + re_mdio_write(sc, 0x19, 0x9b00); + re_mdio_write(sc, 0x18, 0x0dd5); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x18, 0x0de5); + re_mdio_write(sc, 0x19, 0xe000); + re_mdio_write(sc, 0x18, 0x0df5); + re_mdio_write(sc, 0x19, 0xef00); + re_mdio_write(sc, 0x18, 0x16d5); + re_mdio_write(sc, 0x19, 0xe200); + re_mdio_write(sc, 0x18, 0x16e5); + re_mdio_write(sc, 0x19, 0xab00); + re_mdio_write(sc, 0x18, 0x2904); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x2914); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x18, 0x2924); + re_mdio_write(sc, 0x19, 0x0100); + re_mdio_write(sc, 0x18, 0x2934); + re_mdio_write(sc, 0x19, 0x2000); + re_mdio_write(sc, 0x18, 0x2944); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2954); + re_mdio_write(sc, 0x19, 0x4600); + re_mdio_write(sc, 0x18, 0x2964); + re_mdio_write(sc, 0x19, 0xfc00); + re_mdio_write(sc, 0x18, 0x2974); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2984); + re_mdio_write(sc, 0x19, 0x5000); + re_mdio_write(sc, 0x18, 0x2994); + re_mdio_write(sc, 0x19, 0x9d00); + re_mdio_write(sc, 0x18, 0x29a4); + re_mdio_write(sc, 0x19, 0xff00); + re_mdio_write(sc, 0x18, 0x29b4); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x29c4); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x18, 0x29d4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x29e4); + re_mdio_write(sc, 0x19, 0x2000); + re_mdio_write(sc, 0x18, 0x29f4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2a04); + re_mdio_write(sc, 0x19, 0xe600); + re_mdio_write(sc, 0x18, 0x2a14); + re_mdio_write(sc, 0x19, 0xff00); + re_mdio_write(sc, 0x18, 0x2a24); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2a34); + re_mdio_write(sc, 0x19, 0x5000); + re_mdio_write(sc, 0x18, 0x2a44); + re_mdio_write(sc, 0x19, 0x8500); + re_mdio_write(sc, 0x18, 0x2a54); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x18, 0x2a64); + re_mdio_write(sc, 0x19, 0xac00); + re_mdio_write(sc, 0x18, 0x2a74); + re_mdio_write(sc, 0x19, 0x0800); + re_mdio_write(sc, 0x18, 0x2a84); + re_mdio_write(sc, 0x19, 0xfc00); + re_mdio_write(sc, 0x18, 0x2a94); + re_mdio_write(sc, 0x19, 0xe000); + re_mdio_write(sc, 0x18, 0x2aa4); + re_mdio_write(sc, 0x19, 0x7400); + re_mdio_write(sc, 0x18, 0x2ab4); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x2ac4); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x18, 0x2ad4); + re_mdio_write(sc, 0x19, 0x0100); + re_mdio_write(sc, 0x18, 0x2ae4); + re_mdio_write(sc, 0x19, 0xff00); + re_mdio_write(sc, 0x18, 0x2af4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2b04); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x18, 0x2b14); + re_mdio_write(sc, 0x19, 0xfc00); + re_mdio_write(sc, 0x18, 0x2b24); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2b34); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x2b44); + re_mdio_write(sc, 0x19, 0x9d00); + re_mdio_write(sc, 0x18, 0x2b54); + re_mdio_write(sc, 0x19, 0xff00); + re_mdio_write(sc, 0x18, 0x2b64); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x2b74); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x18, 0x2b84); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2b94); + re_mdio_write(sc, 0x19, 0xff00); + re_mdio_write(sc, 0x18, 0x2ba4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2bb4); + re_mdio_write(sc, 0x19, 0xfc00); + re_mdio_write(sc, 0x18, 0x2bc4); + re_mdio_write(sc, 0x19, 0xff00); + re_mdio_write(sc, 0x18, 0x2bd4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2be4); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x2bf4); + re_mdio_write(sc, 0x19, 0x8900); + re_mdio_write(sc, 0x18, 0x2c04); + re_mdio_write(sc, 0x19, 0x8300); + re_mdio_write(sc, 0x18, 0x2c14); + re_mdio_write(sc, 0x19, 0xe000); + re_mdio_write(sc, 0x18, 0x2c24); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x18, 0x2c34); + re_mdio_write(sc, 0x19, 0xac00); + re_mdio_write(sc, 0x18, 0x2c44); + re_mdio_write(sc, 0x19, 0x0800); + re_mdio_write(sc, 0x18, 0x2c54); + re_mdio_write(sc, 0x19, 0xfa00); + re_mdio_write(sc, 0x18, 0x2c64); + re_mdio_write(sc, 0x19, 0xe100); + re_mdio_write(sc, 0x18, 0x2c74); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x18, 0x0001); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x17, 0x2100); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8b88); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0xd480); + re_mdio_write(sc, 0x06, 0xc1e4); + re_mdio_write(sc, 0x06, 0x8b9a); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x9bee); + re_mdio_write(sc, 0x06, 0x8b83); + re_mdio_write(sc, 0x06, 0x41bf); + re_mdio_write(sc, 0x06, 0x8b88); + re_mdio_write(sc, 0x06, 0xec00); + re_mdio_write(sc, 0x06, 0x19a9); + re_mdio_write(sc, 0x06, 0x8b90); + re_mdio_write(sc, 0x06, 0xf9ee); + re_mdio_write(sc, 0x06, 0xfff6); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xffe0); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0xe1e1); + re_mdio_write(sc, 0x06, 0x41f7); + re_mdio_write(sc, 0x06, 0x2ff6); + re_mdio_write(sc, 0x06, 0x28e4); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0xe5e1); + re_mdio_write(sc, 0x06, 0x41f7); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x020c); + re_mdio_write(sc, 0x06, 0x0202); + re_mdio_write(sc, 0x06, 0x1d02); + re_mdio_write(sc, 0x06, 0x0230); + re_mdio_write(sc, 0x06, 0x0202); + re_mdio_write(sc, 0x06, 0x4002); + re_mdio_write(sc, 0x06, 0x028b); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x6c02); + re_mdio_write(sc, 0x06, 0x8085); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x88e1); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8a1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8b); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8c1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8e1e); + re_mdio_write(sc, 0x06, 0x01a0); + re_mdio_write(sc, 0x06, 0x00c7); + re_mdio_write(sc, 0x06, 0xaec3); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x10ee); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x1310); + re_mdio_write(sc, 0x06, 0x021f); + re_mdio_write(sc, 0x06, 0x9d02); + re_mdio_write(sc, 0x06, 0x1f0c); + re_mdio_write(sc, 0x06, 0x0227); + re_mdio_write(sc, 0x06, 0x49fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x200b); + re_mdio_write(sc, 0x06, 0xf620); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x830e); + re_mdio_write(sc, 0x06, 0x021b); + re_mdio_write(sc, 0x06, 0x67ad); + re_mdio_write(sc, 0x06, 0x2211); + re_mdio_write(sc, 0x06, 0xf622); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x2ba5); + re_mdio_write(sc, 0x06, 0x022a); + re_mdio_write(sc, 0x06, 0x2402); + re_mdio_write(sc, 0x06, 0x80c6); + re_mdio_write(sc, 0x06, 0x022a); + re_mdio_write(sc, 0x06, 0xf0ad); + re_mdio_write(sc, 0x06, 0x2511); + re_mdio_write(sc, 0x06, 0xf625); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x8226); + re_mdio_write(sc, 0x06, 0x0204); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x19cc); + re_mdio_write(sc, 0x06, 0x022b); + re_mdio_write(sc, 0x06, 0x5bfc); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x0105); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b83); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x44e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x23ad); + re_mdio_write(sc, 0x06, 0x223b); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xbea0); + re_mdio_write(sc, 0x06, 0x0005); + re_mdio_write(sc, 0x06, 0x0228); + re_mdio_write(sc, 0x06, 0xdeae); + re_mdio_write(sc, 0x06, 0x42a0); + re_mdio_write(sc, 0x06, 0x0105); + re_mdio_write(sc, 0x06, 0x0228); + re_mdio_write(sc, 0x06, 0xf1ae); + re_mdio_write(sc, 0x06, 0x3aa0); + re_mdio_write(sc, 0x06, 0x0205); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x25ae); + re_mdio_write(sc, 0x06, 0x32a0); + re_mdio_write(sc, 0x06, 0x0305); + re_mdio_write(sc, 0x06, 0x0229); + re_mdio_write(sc, 0x06, 0x9aae); + re_mdio_write(sc, 0x06, 0x2aa0); + re_mdio_write(sc, 0x06, 0x0405); + re_mdio_write(sc, 0x06, 0x0229); + re_mdio_write(sc, 0x06, 0xaeae); + re_mdio_write(sc, 0x06, 0x22a0); + re_mdio_write(sc, 0x06, 0x0505); + re_mdio_write(sc, 0x06, 0x0229); + re_mdio_write(sc, 0x06, 0xd7ae); + re_mdio_write(sc, 0x06, 0x1aa0); + re_mdio_write(sc, 0x06, 0x0605); + re_mdio_write(sc, 0x06, 0x0229); + re_mdio_write(sc, 0x06, 0xfeae); + re_mdio_write(sc, 0x06, 0x12ee); + re_mdio_write(sc, 0x06, 0x8ac0); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8ac1); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8ac6); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8abe); + re_mdio_write(sc, 0x06, 0x00ae); + re_mdio_write(sc, 0x06, 0x00fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0x022a); + re_mdio_write(sc, 0x06, 0x67e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x230d); + re_mdio_write(sc, 0x06, 0x0658); + re_mdio_write(sc, 0x06, 0x03a0); + re_mdio_write(sc, 0x06, 0x0202); + re_mdio_write(sc, 0x06, 0xae2d); + re_mdio_write(sc, 0x06, 0xa001); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x2da0); + re_mdio_write(sc, 0x06, 0x004d); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0xe201); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x44e0); + re_mdio_write(sc, 0x06, 0x8ac2); + re_mdio_write(sc, 0x06, 0xe48a); + re_mdio_write(sc, 0x06, 0xc4e0); + re_mdio_write(sc, 0x06, 0x8ac3); + re_mdio_write(sc, 0x06, 0xe48a); + re_mdio_write(sc, 0x06, 0xc5ee); + re_mdio_write(sc, 0x06, 0x8abe); + re_mdio_write(sc, 0x06, 0x03e0); + re_mdio_write(sc, 0x06, 0x8b83); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x3aee); + re_mdio_write(sc, 0x06, 0x8abe); + re_mdio_write(sc, 0x06, 0x05ae); + re_mdio_write(sc, 0x06, 0x34e0); + re_mdio_write(sc, 0x06, 0x8ace); + re_mdio_write(sc, 0x06, 0xae03); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xcfe1); + re_mdio_write(sc, 0x06, 0x8ac2); + re_mdio_write(sc, 0x06, 0x4905); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0xc4e1); + re_mdio_write(sc, 0x06, 0x8ac3); + re_mdio_write(sc, 0x06, 0x4905); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0xc5ee); + re_mdio_write(sc, 0x06, 0x8abe); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x2ab6); + re_mdio_write(sc, 0x06, 0xac20); + re_mdio_write(sc, 0x06, 0x1202); + re_mdio_write(sc, 0x06, 0x819b); + re_mdio_write(sc, 0x06, 0xac20); + re_mdio_write(sc, 0x06, 0x0cee); + re_mdio_write(sc, 0x06, 0x8ac1); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8ac6); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8abe); + re_mdio_write(sc, 0x06, 0x02fc); + re_mdio_write(sc, 0x06, 0x04d0); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x590f); + re_mdio_write(sc, 0x06, 0x3902); + re_mdio_write(sc, 0x06, 0xaa04); + re_mdio_write(sc, 0x06, 0xd001); + re_mdio_write(sc, 0x06, 0xae02); + re_mdio_write(sc, 0x06, 0xd000); + re_mdio_write(sc, 0x06, 0x04f9); + re_mdio_write(sc, 0x06, 0xfae2); + re_mdio_write(sc, 0x06, 0xe2d2); + re_mdio_write(sc, 0x06, 0xe3e2); + re_mdio_write(sc, 0x06, 0xd3f9); + re_mdio_write(sc, 0x06, 0x5af7); + re_mdio_write(sc, 0x06, 0xe6e2); + re_mdio_write(sc, 0x06, 0xd2e7); + re_mdio_write(sc, 0x06, 0xe2d3); + re_mdio_write(sc, 0x06, 0xe2e0); + re_mdio_write(sc, 0x06, 0x2ce3); + re_mdio_write(sc, 0x06, 0xe02d); + re_mdio_write(sc, 0x06, 0xf95b); + re_mdio_write(sc, 0x06, 0xe01e); + re_mdio_write(sc, 0x06, 0x30e6); + re_mdio_write(sc, 0x06, 0xe02c); + re_mdio_write(sc, 0x06, 0xe7e0); + re_mdio_write(sc, 0x06, 0x2de2); + re_mdio_write(sc, 0x06, 0xe2cc); + re_mdio_write(sc, 0x06, 0xe3e2); + re_mdio_write(sc, 0x06, 0xcdf9); + re_mdio_write(sc, 0x06, 0x5a0f); + re_mdio_write(sc, 0x06, 0x6a50); + re_mdio_write(sc, 0x06, 0xe6e2); + re_mdio_write(sc, 0x06, 0xcce7); + re_mdio_write(sc, 0x06, 0xe2cd); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x3ce1); + re_mdio_write(sc, 0x06, 0xe03d); + re_mdio_write(sc, 0x06, 0xef64); + re_mdio_write(sc, 0x06, 0xfde0); + re_mdio_write(sc, 0x06, 0xe2cc); + re_mdio_write(sc, 0x06, 0xe1e2); + re_mdio_write(sc, 0x06, 0xcd58); + re_mdio_write(sc, 0x06, 0x0f5a); + re_mdio_write(sc, 0x06, 0xf01e); + re_mdio_write(sc, 0x06, 0x02e4); + re_mdio_write(sc, 0x06, 0xe2cc); + re_mdio_write(sc, 0x06, 0xe5e2); + re_mdio_write(sc, 0x06, 0xcdfd); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x2ce1); + re_mdio_write(sc, 0x06, 0xe02d); + re_mdio_write(sc, 0x06, 0x59e0); + re_mdio_write(sc, 0x06, 0x5b1f); + re_mdio_write(sc, 0x06, 0x1e13); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0x2ce5); + re_mdio_write(sc, 0x06, 0xe02d); + re_mdio_write(sc, 0x06, 0xfde0); + re_mdio_write(sc, 0x06, 0xe2d2); + re_mdio_write(sc, 0x06, 0xe1e2); + re_mdio_write(sc, 0x06, 0xd358); + re_mdio_write(sc, 0x06, 0xf75a); + re_mdio_write(sc, 0x06, 0x081e); + re_mdio_write(sc, 0x06, 0x02e4); + re_mdio_write(sc, 0x06, 0xe2d2); + re_mdio_write(sc, 0x06, 0xe5e2); + re_mdio_write(sc, 0x06, 0xd3ef); + re_mdio_write(sc, 0x06, 0x46fe); + re_mdio_write(sc, 0x06, 0xfd04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x2358); + re_mdio_write(sc, 0x06, 0xc4e1); + re_mdio_write(sc, 0x06, 0x8b6e); + re_mdio_write(sc, 0x06, 0x1f10); + re_mdio_write(sc, 0x06, 0x9e58); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x6ead); + re_mdio_write(sc, 0x06, 0x2222); + re_mdio_write(sc, 0x06, 0xac27); + re_mdio_write(sc, 0x06, 0x55ac); + re_mdio_write(sc, 0x06, 0x2602); + re_mdio_write(sc, 0x06, 0xae1a); + re_mdio_write(sc, 0x06, 0xd106); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xba02); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xd107); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xbd02); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xd107); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xc002); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xae30); + re_mdio_write(sc, 0x06, 0xd103); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xc302); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xc602); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xca02); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xd10f); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xba02); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xbd02); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xc002); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xc302); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xd011); + re_mdio_write(sc, 0x06, 0x022b); + re_mdio_write(sc, 0x06, 0xfb59); + re_mdio_write(sc, 0x06, 0x03ef); + re_mdio_write(sc, 0x06, 0x01d1); + re_mdio_write(sc, 0x06, 0x00a0); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0xc602); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xd111); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x020c); + re_mdio_write(sc, 0x06, 0x11ad); + re_mdio_write(sc, 0x06, 0x2102); + re_mdio_write(sc, 0x06, 0x0c12); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xca02); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xaec8); + re_mdio_write(sc, 0x06, 0x70e4); + re_mdio_write(sc, 0x06, 0x2602); + re_mdio_write(sc, 0x06, 0x82d1); + re_mdio_write(sc, 0x06, 0x05f8); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69e0); + re_mdio_write(sc, 0x06, 0xe2fe); + re_mdio_write(sc, 0x06, 0xe1e2); + re_mdio_write(sc, 0x06, 0xffad); + re_mdio_write(sc, 0x06, 0x2d1a); + re_mdio_write(sc, 0x06, 0xe0e1); + re_mdio_write(sc, 0x06, 0x4ee1); + re_mdio_write(sc, 0x06, 0xe14f); + re_mdio_write(sc, 0x06, 0xac2d); + re_mdio_write(sc, 0x06, 0x22f6); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x033b); + re_mdio_write(sc, 0x06, 0xf703); + re_mdio_write(sc, 0x06, 0xf706); + re_mdio_write(sc, 0x06, 0xbf84); + re_mdio_write(sc, 0x06, 0x4402); + re_mdio_write(sc, 0x06, 0x2d21); + re_mdio_write(sc, 0x06, 0xae11); + re_mdio_write(sc, 0x06, 0xe0e1); + re_mdio_write(sc, 0x06, 0x4ee1); + re_mdio_write(sc, 0x06, 0xe14f); + re_mdio_write(sc, 0x06, 0xad2d); + re_mdio_write(sc, 0x06, 0x08bf); + re_mdio_write(sc, 0x06, 0x844f); + re_mdio_write(sc, 0x06, 0x022d); + re_mdio_write(sc, 0x06, 0x21f6); + re_mdio_write(sc, 0x06, 0x06ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0x0283); + re_mdio_write(sc, 0x06, 0x4502); + re_mdio_write(sc, 0x06, 0x83a2); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0xe001); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x1fd1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x843b); + re_mdio_write(sc, 0x06, 0x022d); + re_mdio_write(sc, 0x06, 0xc1e0); + re_mdio_write(sc, 0x06, 0xe020); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x21ad); + re_mdio_write(sc, 0x06, 0x200e); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf84); + re_mdio_write(sc, 0x06, 0x3b02); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xbf3b); + re_mdio_write(sc, 0x06, 0x9602); + re_mdio_write(sc, 0x06, 0x2d21); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x204c); + re_mdio_write(sc, 0x06, 0xd200); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0x0058); + re_mdio_write(sc, 0x06, 0x010c); + re_mdio_write(sc, 0x06, 0x021e); + re_mdio_write(sc, 0x06, 0x20e0); + re_mdio_write(sc, 0x06, 0xe000); + re_mdio_write(sc, 0x06, 0x5810); + re_mdio_write(sc, 0x06, 0x1e20); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x3658); + re_mdio_write(sc, 0x06, 0x031e); + re_mdio_write(sc, 0x06, 0x20e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x2358); + re_mdio_write(sc, 0x06, 0xe01e); + re_mdio_write(sc, 0x06, 0x20e0); + re_mdio_write(sc, 0x06, 0x8b64); + re_mdio_write(sc, 0x06, 0x1f02); + re_mdio_write(sc, 0x06, 0x9e22); + re_mdio_write(sc, 0x06, 0xe68b); + re_mdio_write(sc, 0x06, 0x64ad); + re_mdio_write(sc, 0x06, 0x3214); + re_mdio_write(sc, 0x06, 0xad34); + re_mdio_write(sc, 0x06, 0x11ef); + re_mdio_write(sc, 0x06, 0x0258); + re_mdio_write(sc, 0x06, 0x039e); + re_mdio_write(sc, 0x06, 0x07ad); + re_mdio_write(sc, 0x06, 0x3508); + re_mdio_write(sc, 0x06, 0x5ac0); + re_mdio_write(sc, 0x06, 0x9f04); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xae02); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf84); + re_mdio_write(sc, 0x06, 0x3e02); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfbe0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x22e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x23e2); + re_mdio_write(sc, 0x06, 0xe036); + re_mdio_write(sc, 0x06, 0xe3e0); + re_mdio_write(sc, 0x06, 0x375a); + re_mdio_write(sc, 0x06, 0xc40d); + re_mdio_write(sc, 0x06, 0x0158); + re_mdio_write(sc, 0x06, 0x021e); + re_mdio_write(sc, 0x06, 0x20e3); + re_mdio_write(sc, 0x06, 0x8ae7); + re_mdio_write(sc, 0x06, 0xac31); + re_mdio_write(sc, 0x06, 0x60ac); + re_mdio_write(sc, 0x06, 0x3a08); + re_mdio_write(sc, 0x06, 0xac3e); + re_mdio_write(sc, 0x06, 0x26ae); + re_mdio_write(sc, 0x06, 0x67af); + re_mdio_write(sc, 0x06, 0x8437); + re_mdio_write(sc, 0x06, 0xad37); + re_mdio_write(sc, 0x06, 0x61e0); + re_mdio_write(sc, 0x06, 0x8ae8); + re_mdio_write(sc, 0x06, 0x10e4); + re_mdio_write(sc, 0x06, 0x8ae8); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0xe91b); + re_mdio_write(sc, 0x06, 0x109e); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x51d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x8441); + re_mdio_write(sc, 0x06, 0x022d); + re_mdio_write(sc, 0x06, 0xc1ee); + re_mdio_write(sc, 0x06, 0x8ae8); + re_mdio_write(sc, 0x06, 0x00ae); + re_mdio_write(sc, 0x06, 0x43ad); + re_mdio_write(sc, 0x06, 0x3627); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xeee1); + re_mdio_write(sc, 0x06, 0x8aef); + re_mdio_write(sc, 0x06, 0xef74); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xeae1); + re_mdio_write(sc, 0x06, 0x8aeb); + re_mdio_write(sc, 0x06, 0x1b74); + re_mdio_write(sc, 0x06, 0x9e2e); + re_mdio_write(sc, 0x06, 0x14e4); + re_mdio_write(sc, 0x06, 0x8aea); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0xebef); + re_mdio_write(sc, 0x06, 0x74e0); + re_mdio_write(sc, 0x06, 0x8aee); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0xef1b); + re_mdio_write(sc, 0x06, 0x479e); + re_mdio_write(sc, 0x06, 0x0fae); + re_mdio_write(sc, 0x06, 0x19ee); + re_mdio_write(sc, 0x06, 0x8aea); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8aeb); + re_mdio_write(sc, 0x06, 0x00ae); + re_mdio_write(sc, 0x06, 0x0fac); + re_mdio_write(sc, 0x06, 0x390c); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf84); + re_mdio_write(sc, 0x06, 0x4102); + re_mdio_write(sc, 0x06, 0x2dc1); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xe800); + re_mdio_write(sc, 0x06, 0xe68a); + re_mdio_write(sc, 0x06, 0xe7ff); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x0400); + re_mdio_write(sc, 0x06, 0xe234); + re_mdio_write(sc, 0x06, 0xcce2); + re_mdio_write(sc, 0x06, 0x0088); + re_mdio_write(sc, 0x06, 0xe200); + re_mdio_write(sc, 0x06, 0xa725); + re_mdio_write(sc, 0x06, 0xe50a); + re_mdio_write(sc, 0x06, 0x1de5); + re_mdio_write(sc, 0x06, 0x0a2c); + re_mdio_write(sc, 0x06, 0xe50a); + re_mdio_write(sc, 0x06, 0x6de5); + re_mdio_write(sc, 0x06, 0x0a1d); + re_mdio_write(sc, 0x06, 0xe50a); + re_mdio_write(sc, 0x06, 0x1ce5); + re_mdio_write(sc, 0x06, 0x0a2d); + re_mdio_write(sc, 0x06, 0xa755); + re_mdio_write(sc, 0x05, 0x8b64); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x05, 0x8b94); + re_mdio_write(sc, 0x06, 0x82cd); + re_mdio_write(sc, 0x05, 0x8b85); + re_mdio_write(sc, 0x06, 0x2000); + re_mdio_write(sc, 0x05, 0x8aee); + re_mdio_write(sc, 0x06, 0x03b8); + re_mdio_write(sc, 0x05, 0x8ae8); + re_mdio_write(sc, 0x06, 0x0002); + PhyRegValue = re_mdio_read(sc, 0x01); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x01, PhyRegValue); + PhyRegValue = re_mdio_read(sc, 0x00); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x00, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0); + re_mdio_write(sc, 0x1f, 0x0005); + for (i=0; i<200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x00); + if (PhyRegValue&0x0080) + break; + } + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + if (sc->RequiredSecLanDonglePatch) + PhyRegValue &= ~(BIT_2); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0028); + re_mdio_write(sc, 0x15, 0x0010); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0041); + re_mdio_write(sc, 0x15, 0x0802); + re_mdio_write(sc, 0x16, 0x2185); + re_mdio_write(sc, 0x1f, 0x0000); +} - default: - ret = -EOPNOTSUPP; - break; - } - - switch (sc->re_type) { - case MACFG_68: - case MACFG_69: - case MACFG_74: - case MACFG_75: - MP_WritePhyUshort(sc, 0x1F, 0x0A4A); - SetEthPhyBit(sc, 0x11, BIT_9); - MP_WritePhyUshort(sc, 0x1F, 0x0A42); - SetEthPhyBit(sc, 0x14, BIT_7); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - break; - } - - /*Advanced EEE*/ - switch (sc->re_type) { - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - re_set_phy_mcu_patch_request(sc); - break; - } +static void re_set_phy_mcu_8168e_2(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + int i; + + if (re_efuse_read(sc, 0x22) == 0x0c) { + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x17, 0x0117); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1E, 0x002C); + re_mdio_write(sc, 0x1B, 0x5000); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x16, 0x4104); + for (i=0; i<200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x1E); + PhyRegValue &= 0x03FF; + if (PhyRegValue== 0x000C) + break; + } + re_mdio_write(sc, 0x1f, 0x0005); + for (i=0; i<200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x07); + if ((PhyRegValue&0x0020)==0) + break; + } + PhyRegValue = re_mdio_read(sc, 0x07); + if (PhyRegValue & 0x0020) { + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x00a1); + re_mdio_write(sc, 0x17, 0x1000); + re_mdio_write(sc, 0x17, 0x0000); + re_mdio_write(sc, 0x17, 0x2000); + re_mdio_write(sc, 0x1e, 0x002f); + re_mdio_write(sc, 0x18, 0x9bfb); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x07, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + } + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + PhyRegValue = re_mdio_read(sc, 0x00); + PhyRegValue &= ~(BIT_7); + re_mdio_write(sc, 0x00, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0002); + PhyRegValue = re_mdio_read(sc, 0x08); + PhyRegValue &= ~(BIT_7); + re_mdio_write(sc, 0x08, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0307); + re_mdio_write(sc, 0x15, 0x000e); + re_mdio_write(sc, 0x19, 0x000a); + re_mdio_write(sc, 0x15, 0x0010); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x0018); + re_mdio_write(sc, 0x19, 0x4801); + re_mdio_write(sc, 0x15, 0x0019); + re_mdio_write(sc, 0x19, 0x6801); + re_mdio_write(sc, 0x15, 0x001a); + re_mdio_write(sc, 0x19, 0x66a1); + re_mdio_write(sc, 0x15, 0x001f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0020); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0021); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0022); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0023); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0024); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0025); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x0026); + re_mdio_write(sc, 0x19, 0x40ea); + re_mdio_write(sc, 0x15, 0x0027); + re_mdio_write(sc, 0x19, 0x4503); + re_mdio_write(sc, 0x15, 0x0028); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0029); + re_mdio_write(sc, 0x19, 0xa631); + re_mdio_write(sc, 0x15, 0x002a); + re_mdio_write(sc, 0x19, 0x9717); + re_mdio_write(sc, 0x15, 0x002b); + re_mdio_write(sc, 0x19, 0x302c); + re_mdio_write(sc, 0x15, 0x002c); + re_mdio_write(sc, 0x19, 0x4802); + re_mdio_write(sc, 0x15, 0x002d); + re_mdio_write(sc, 0x19, 0x58da); + re_mdio_write(sc, 0x15, 0x002e); + re_mdio_write(sc, 0x19, 0x400d); + re_mdio_write(sc, 0x15, 0x002f); + re_mdio_write(sc, 0x19, 0x4488); + re_mdio_write(sc, 0x15, 0x0030); + re_mdio_write(sc, 0x19, 0x9e00); + re_mdio_write(sc, 0x15, 0x0031); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x0032); + re_mdio_write(sc, 0x19, 0x6481); + re_mdio_write(sc, 0x15, 0x0033); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0034); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0035); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0036); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0037); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0038); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0039); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x003a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x003b); + re_mdio_write(sc, 0x19, 0x63e8); + re_mdio_write(sc, 0x15, 0x003c); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x003d); + re_mdio_write(sc, 0x19, 0x59d4); + re_mdio_write(sc, 0x15, 0x003e); + re_mdio_write(sc, 0x19, 0x63f8); + re_mdio_write(sc, 0x15, 0x0040); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x0041); + re_mdio_write(sc, 0x19, 0x30de); + re_mdio_write(sc, 0x15, 0x0044); + re_mdio_write(sc, 0x19, 0x480f); + re_mdio_write(sc, 0x15, 0x0045); + re_mdio_write(sc, 0x19, 0x6800); + re_mdio_write(sc, 0x15, 0x0046); + re_mdio_write(sc, 0x19, 0x6680); + re_mdio_write(sc, 0x15, 0x0047); + re_mdio_write(sc, 0x19, 0x7c10); + re_mdio_write(sc, 0x15, 0x0048); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x0049); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004b); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004f); + re_mdio_write(sc, 0x19, 0x40ea); + re_mdio_write(sc, 0x15, 0x0050); + re_mdio_write(sc, 0x19, 0x4503); + re_mdio_write(sc, 0x15, 0x0051); + re_mdio_write(sc, 0x19, 0x58ca); + re_mdio_write(sc, 0x15, 0x0052); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x0053); + re_mdio_write(sc, 0x19, 0x63d8); + re_mdio_write(sc, 0x15, 0x0054); + re_mdio_write(sc, 0x19, 0x66a0); + re_mdio_write(sc, 0x15, 0x0055); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0056); + re_mdio_write(sc, 0x19, 0x3000); + re_mdio_write(sc, 0x15, 0x00a1); + re_mdio_write(sc, 0x19, 0x3044); + re_mdio_write(sc, 0x15, 0x00ab); + re_mdio_write(sc, 0x19, 0x5820); + re_mdio_write(sc, 0x15, 0x00ac); + re_mdio_write(sc, 0x19, 0x5e04); + re_mdio_write(sc, 0x15, 0x00ad); + re_mdio_write(sc, 0x19, 0xb60c); + re_mdio_write(sc, 0x15, 0x00af); + re_mdio_write(sc, 0x19, 0x000a); + re_mdio_write(sc, 0x15, 0x00b2); + re_mdio_write(sc, 0x19, 0x30b9); + re_mdio_write(sc, 0x15, 0x00b9); + re_mdio_write(sc, 0x19, 0x4408); + re_mdio_write(sc, 0x15, 0x00ba); + re_mdio_write(sc, 0x19, 0x480b); + re_mdio_write(sc, 0x15, 0x00bb); + re_mdio_write(sc, 0x19, 0x5e00); + re_mdio_write(sc, 0x15, 0x00bc); + re_mdio_write(sc, 0x19, 0x405f); + re_mdio_write(sc, 0x15, 0x00bd); + re_mdio_write(sc, 0x19, 0x4448); + re_mdio_write(sc, 0x15, 0x00be); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x00bf); + re_mdio_write(sc, 0x19, 0x4468); + re_mdio_write(sc, 0x15, 0x00c0); + re_mdio_write(sc, 0x19, 0x9c02); + re_mdio_write(sc, 0x15, 0x00c1); + re_mdio_write(sc, 0x19, 0x58a0); + re_mdio_write(sc, 0x15, 0x00c2); + re_mdio_write(sc, 0x19, 0xb605); + re_mdio_write(sc, 0x15, 0x00c3); + re_mdio_write(sc, 0x19, 0xc0d3); + re_mdio_write(sc, 0x15, 0x00c4); + re_mdio_write(sc, 0x19, 0x00e6); + re_mdio_write(sc, 0x15, 0x00c5); + re_mdio_write(sc, 0x19, 0xdaec); + re_mdio_write(sc, 0x15, 0x00c6); + re_mdio_write(sc, 0x19, 0x00fa); + re_mdio_write(sc, 0x15, 0x00c7); + re_mdio_write(sc, 0x19, 0x9df9); + re_mdio_write(sc, 0x15, 0x0112); + re_mdio_write(sc, 0x19, 0x6421); + re_mdio_write(sc, 0x15, 0x0113); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0114); + re_mdio_write(sc, 0x19, 0x63f0); + re_mdio_write(sc, 0x15, 0x0115); + re_mdio_write(sc, 0x19, 0x4003); + re_mdio_write(sc, 0x15, 0x0116); + re_mdio_write(sc, 0x19, 0x4418); + re_mdio_write(sc, 0x15, 0x0117); + re_mdio_write(sc, 0x19, 0x9b00); + re_mdio_write(sc, 0x15, 0x0118); + re_mdio_write(sc, 0x19, 0x6461); + re_mdio_write(sc, 0x15, 0x0119); + re_mdio_write(sc, 0x19, 0x64e1); + re_mdio_write(sc, 0x15, 0x011a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0150); + re_mdio_write(sc, 0x19, 0x7c80); + re_mdio_write(sc, 0x15, 0x0151); + re_mdio_write(sc, 0x19, 0x6461); + re_mdio_write(sc, 0x15, 0x0152); + re_mdio_write(sc, 0x19, 0x4003); + re_mdio_write(sc, 0x15, 0x0153); + re_mdio_write(sc, 0x19, 0x4540); + re_mdio_write(sc, 0x15, 0x0154); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0155); + re_mdio_write(sc, 0x19, 0x9d00); + re_mdio_write(sc, 0x15, 0x0156); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0157); + re_mdio_write(sc, 0x19, 0x6421); + re_mdio_write(sc, 0x15, 0x0158); + re_mdio_write(sc, 0x19, 0x7c80); + re_mdio_write(sc, 0x15, 0x0159); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x015a); + re_mdio_write(sc, 0x19, 0x30fe); + re_mdio_write(sc, 0x15, 0x029c); + re_mdio_write(sc, 0x19, 0x0070); + re_mdio_write(sc, 0x15, 0x02b2); + re_mdio_write(sc, 0x19, 0x005a); + re_mdio_write(sc, 0x15, 0x02bd); + re_mdio_write(sc, 0x19, 0xa522); + re_mdio_write(sc, 0x15, 0x02ce); + re_mdio_write(sc, 0x19, 0xb63e); + re_mdio_write(sc, 0x15, 0x02d9); + re_mdio_write(sc, 0x19, 0x32df); + re_mdio_write(sc, 0x15, 0x02df); + re_mdio_write(sc, 0x19, 0x4500); + re_mdio_write(sc, 0x15, 0x02e7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02f4); + re_mdio_write(sc, 0x19, 0xb618); + re_mdio_write(sc, 0x15, 0x02fb); + re_mdio_write(sc, 0x19, 0xb900); + re_mdio_write(sc, 0x15, 0x02fc); + re_mdio_write(sc, 0x19, 0x49b5); + re_mdio_write(sc, 0x15, 0x02fd); + re_mdio_write(sc, 0x19, 0x6812); + re_mdio_write(sc, 0x15, 0x02fe); + re_mdio_write(sc, 0x19, 0x66a0); + re_mdio_write(sc, 0x15, 0x02ff); + re_mdio_write(sc, 0x19, 0x9900); + re_mdio_write(sc, 0x15, 0x0300); + re_mdio_write(sc, 0x19, 0x64a0); + re_mdio_write(sc, 0x15, 0x0301); + re_mdio_write(sc, 0x19, 0x3316); + re_mdio_write(sc, 0x15, 0x0308); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x030c); + re_mdio_write(sc, 0x19, 0x3000); + re_mdio_write(sc, 0x15, 0x0312); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0313); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0314); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0315); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0316); + re_mdio_write(sc, 0x19, 0x49b5); + re_mdio_write(sc, 0x15, 0x0317); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x0318); + re_mdio_write(sc, 0x19, 0x4d00); + re_mdio_write(sc, 0x15, 0x0319); + re_mdio_write(sc, 0x19, 0x6810); + re_mdio_write(sc, 0x15, 0x031a); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x031b); + re_mdio_write(sc, 0x19, 0x4925); + re_mdio_write(sc, 0x15, 0x031c); + re_mdio_write(sc, 0x19, 0x403b); + re_mdio_write(sc, 0x15, 0x031d); + re_mdio_write(sc, 0x19, 0xa602); + re_mdio_write(sc, 0x15, 0x031e); + re_mdio_write(sc, 0x19, 0x402f); + re_mdio_write(sc, 0x15, 0x031f); + re_mdio_write(sc, 0x19, 0x4484); + re_mdio_write(sc, 0x15, 0x0320); + re_mdio_write(sc, 0x19, 0x40c8); + re_mdio_write(sc, 0x15, 0x0321); + re_mdio_write(sc, 0x19, 0x44c4); + re_mdio_write(sc, 0x15, 0x0322); + re_mdio_write(sc, 0x19, 0x404f); + re_mdio_write(sc, 0x15, 0x0323); + re_mdio_write(sc, 0x19, 0x44c8); + re_mdio_write(sc, 0x15, 0x0324); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x0325); + re_mdio_write(sc, 0x19, 0x00e7); + re_mdio_write(sc, 0x15, 0x0326); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0327); + re_mdio_write(sc, 0x19, 0x8203); + re_mdio_write(sc, 0x15, 0x0328); + re_mdio_write(sc, 0x19, 0x4d48); + re_mdio_write(sc, 0x15, 0x0329); + re_mdio_write(sc, 0x19, 0x332b); + re_mdio_write(sc, 0x15, 0x032a); + re_mdio_write(sc, 0x19, 0x4d40); + re_mdio_write(sc, 0x15, 0x032c); + re_mdio_write(sc, 0x19, 0x00f8); + re_mdio_write(sc, 0x15, 0x032d); + re_mdio_write(sc, 0x19, 0x82b2); + re_mdio_write(sc, 0x15, 0x032f); + re_mdio_write(sc, 0x19, 0x00b0); + re_mdio_write(sc, 0x15, 0x0332); + re_mdio_write(sc, 0x19, 0x91f2); + re_mdio_write(sc, 0x15, 0x033f); + re_mdio_write(sc, 0x19, 0xb6cd); + re_mdio_write(sc, 0x15, 0x0340); + re_mdio_write(sc, 0x19, 0x9e01); + re_mdio_write(sc, 0x15, 0x0341); + re_mdio_write(sc, 0x19, 0xd11d); + re_mdio_write(sc, 0x15, 0x0342); + re_mdio_write(sc, 0x19, 0x009d); + re_mdio_write(sc, 0x15, 0x0343); + re_mdio_write(sc, 0x19, 0xbb1c); + re_mdio_write(sc, 0x15, 0x0344); + re_mdio_write(sc, 0x19, 0x8102); + re_mdio_write(sc, 0x15, 0x0345); + re_mdio_write(sc, 0x19, 0x3348); + re_mdio_write(sc, 0x15, 0x0346); + re_mdio_write(sc, 0x19, 0xa231); + re_mdio_write(sc, 0x15, 0x0347); + re_mdio_write(sc, 0x19, 0x335b); + re_mdio_write(sc, 0x15, 0x0348); + re_mdio_write(sc, 0x19, 0x91f7); + re_mdio_write(sc, 0x15, 0x0349); + re_mdio_write(sc, 0x19, 0xc218); + re_mdio_write(sc, 0x15, 0x034a); + re_mdio_write(sc, 0x19, 0x00f5); + re_mdio_write(sc, 0x15, 0x034b); + re_mdio_write(sc, 0x19, 0x335b); + re_mdio_write(sc, 0x15, 0x034c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x034d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x034e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x034f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0350); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x035b); + re_mdio_write(sc, 0x19, 0xa23c); + re_mdio_write(sc, 0x15, 0x035c); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x035d); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x035e); + re_mdio_write(sc, 0x19, 0x3397); + re_mdio_write(sc, 0x15, 0x0363); + re_mdio_write(sc, 0x19, 0xb6a9); + re_mdio_write(sc, 0x15, 0x0366); + re_mdio_write(sc, 0x19, 0x00f5); + re_mdio_write(sc, 0x15, 0x0382); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0388); + re_mdio_write(sc, 0x19, 0x0084); + re_mdio_write(sc, 0x15, 0x0389); + re_mdio_write(sc, 0x19, 0xdd17); + re_mdio_write(sc, 0x15, 0x038a); + re_mdio_write(sc, 0x19, 0x000b); + re_mdio_write(sc, 0x15, 0x038b); + re_mdio_write(sc, 0x19, 0xa10a); + re_mdio_write(sc, 0x15, 0x038c); + re_mdio_write(sc, 0x19, 0x337e); + re_mdio_write(sc, 0x15, 0x038d); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x038e); + re_mdio_write(sc, 0x19, 0xa107); + re_mdio_write(sc, 0x15, 0x038f); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x0390); + re_mdio_write(sc, 0x19, 0xc017); + re_mdio_write(sc, 0x15, 0x0391); + re_mdio_write(sc, 0x19, 0x0004); + re_mdio_write(sc, 0x15, 0x0392); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x0393); + re_mdio_write(sc, 0x19, 0x00f4); + re_mdio_write(sc, 0x15, 0x0397); + re_mdio_write(sc, 0x19, 0x4098); + re_mdio_write(sc, 0x15, 0x0398); + re_mdio_write(sc, 0x19, 0x4408); + re_mdio_write(sc, 0x15, 0x0399); + re_mdio_write(sc, 0x19, 0x55bf); + re_mdio_write(sc, 0x15, 0x039a); + re_mdio_write(sc, 0x19, 0x4bb9); + re_mdio_write(sc, 0x15, 0x039b); + re_mdio_write(sc, 0x19, 0x6810); + re_mdio_write(sc, 0x15, 0x039c); + re_mdio_write(sc, 0x19, 0x4b29); + re_mdio_write(sc, 0x15, 0x039d); + re_mdio_write(sc, 0x19, 0x4041); + re_mdio_write(sc, 0x15, 0x039e); + re_mdio_write(sc, 0x19, 0x442a); + re_mdio_write(sc, 0x15, 0x039f); + re_mdio_write(sc, 0x19, 0x4029); + re_mdio_write(sc, 0x15, 0x03aa); + re_mdio_write(sc, 0x19, 0x33b8); + re_mdio_write(sc, 0x15, 0x03b6); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03b7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03b8); + re_mdio_write(sc, 0x19, 0x543f); + re_mdio_write(sc, 0x15, 0x03b9); + re_mdio_write(sc, 0x19, 0x499a); + re_mdio_write(sc, 0x15, 0x03ba); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x03bb); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03bc); + re_mdio_write(sc, 0x19, 0x490a); + re_mdio_write(sc, 0x15, 0x03bd); + re_mdio_write(sc, 0x19, 0x405e); + re_mdio_write(sc, 0x15, 0x03c2); + re_mdio_write(sc, 0x19, 0x9a03); + re_mdio_write(sc, 0x15, 0x03c4); + re_mdio_write(sc, 0x19, 0x0015); + re_mdio_write(sc, 0x15, 0x03c5); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x03c8); + re_mdio_write(sc, 0x19, 0x9cf7); + re_mdio_write(sc, 0x15, 0x03c9); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03ca); + re_mdio_write(sc, 0x19, 0x4c52); + re_mdio_write(sc, 0x15, 0x03cb); + re_mdio_write(sc, 0x19, 0x4458); + re_mdio_write(sc, 0x15, 0x03cd); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03ce); + re_mdio_write(sc, 0x19, 0x33bf); + re_mdio_write(sc, 0x15, 0x03cf); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d0); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d1); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d6); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d8); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d9); + re_mdio_write(sc, 0x19, 0x49bb); + re_mdio_write(sc, 0x15, 0x03da); + re_mdio_write(sc, 0x19, 0x4478); + re_mdio_write(sc, 0x15, 0x03db); + re_mdio_write(sc, 0x19, 0x492b); + re_mdio_write(sc, 0x15, 0x03dc); + re_mdio_write(sc, 0x19, 0x7c01); + re_mdio_write(sc, 0x15, 0x03dd); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x03de); + re_mdio_write(sc, 0x19, 0xbd1a); + re_mdio_write(sc, 0x15, 0x03df); + re_mdio_write(sc, 0x19, 0xc428); + re_mdio_write(sc, 0x15, 0x03e0); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x03e1); + re_mdio_write(sc, 0x19, 0x9cfd); + re_mdio_write(sc, 0x15, 0x03e2); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03e3); + re_mdio_write(sc, 0x19, 0x4c52); + re_mdio_write(sc, 0x15, 0x03e4); + re_mdio_write(sc, 0x19, 0x4458); + re_mdio_write(sc, 0x15, 0x03e5); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03e6); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03e7); + re_mdio_write(sc, 0x19, 0x33de); + re_mdio_write(sc, 0x15, 0x03e8); + re_mdio_write(sc, 0x19, 0xc218); + re_mdio_write(sc, 0x15, 0x03e9); + re_mdio_write(sc, 0x19, 0x0002); + re_mdio_write(sc, 0x15, 0x03ea); + re_mdio_write(sc, 0x19, 0x32df); + re_mdio_write(sc, 0x15, 0x03eb); + re_mdio_write(sc, 0x19, 0x3316); + re_mdio_write(sc, 0x15, 0x03ec); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03ed); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03ee); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03ef); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03f7); + re_mdio_write(sc, 0x19, 0x330c); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0300); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x48f7); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xa080); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0xf602); + re_mdio_write(sc, 0x06, 0x0200); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x9002); + re_mdio_write(sc, 0x06, 0x0224); + re_mdio_write(sc, 0x06, 0x0202); + re_mdio_write(sc, 0x06, 0x3402); + re_mdio_write(sc, 0x06, 0x027f); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0xa602); + re_mdio_write(sc, 0x06, 0x80bf); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x88e1); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8a1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8b); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8c1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8e1e); + re_mdio_write(sc, 0x06, 0x01a0); + re_mdio_write(sc, 0x06, 0x00c7); + re_mdio_write(sc, 0x06, 0xaebb); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xe600); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xee03); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xefb8); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xe902); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8285); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8520); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8701); + re_mdio_write(sc, 0x06, 0xd481); + re_mdio_write(sc, 0x06, 0x35e4); + re_mdio_write(sc, 0x06, 0x8b94); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x95bf); + re_mdio_write(sc, 0x06, 0x8b88); + re_mdio_write(sc, 0x06, 0xec00); + re_mdio_write(sc, 0x06, 0x19a9); + re_mdio_write(sc, 0x06, 0x8b90); + re_mdio_write(sc, 0x06, 0xf9ee); + re_mdio_write(sc, 0x06, 0xfff6); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xffe0); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0xe1e1); + re_mdio_write(sc, 0x06, 0x41f7); + re_mdio_write(sc, 0x06, 0x2ff6); + re_mdio_write(sc, 0x06, 0x28e4); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0xe5e1); + re_mdio_write(sc, 0x06, 0x4104); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x0dee); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x82f4); + re_mdio_write(sc, 0x06, 0x021f); + re_mdio_write(sc, 0x06, 0x4102); + re_mdio_write(sc, 0x06, 0x2812); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x10ee); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x139d); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0xd602); + re_mdio_write(sc, 0x06, 0x1f99); + re_mdio_write(sc, 0x06, 0x0227); + re_mdio_write(sc, 0x06, 0xeafc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2014); + re_mdio_write(sc, 0x06, 0xf620); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x8104); + re_mdio_write(sc, 0x06, 0x021b); + re_mdio_write(sc, 0x06, 0xf402); + re_mdio_write(sc, 0x06, 0x2c9c); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x7902); + re_mdio_write(sc, 0x06, 0x8443); + re_mdio_write(sc, 0x06, 0xad22); + re_mdio_write(sc, 0x06, 0x11f6); + re_mdio_write(sc, 0x06, 0x22e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x022c); + re_mdio_write(sc, 0x06, 0x4602); + re_mdio_write(sc, 0x06, 0x2ac5); + re_mdio_write(sc, 0x06, 0x0229); + re_mdio_write(sc, 0x06, 0x2002); + re_mdio_write(sc, 0x06, 0x2b91); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x11f6); + re_mdio_write(sc, 0x06, 0x25e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0284); + re_mdio_write(sc, 0x06, 0xe202); + re_mdio_write(sc, 0x06, 0x043a); + re_mdio_write(sc, 0x06, 0x021a); + re_mdio_write(sc, 0x06, 0x5902); + re_mdio_write(sc, 0x06, 0x2bfc); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0xe001); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x1fd1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x8638); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50e0); + re_mdio_write(sc, 0x06, 0xe020); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x21ad); + re_mdio_write(sc, 0x06, 0x200e); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x3802); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xbf3d); + re_mdio_write(sc, 0x06, 0x3902); + re_mdio_write(sc, 0x06, 0x2eb0); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x0402); + re_mdio_write(sc, 0x06, 0x8591); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x3c05); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0xfee1); + re_mdio_write(sc, 0x06, 0xe2ff); + re_mdio_write(sc, 0x06, 0xad2d); + re_mdio_write(sc, 0x06, 0x1ae0); + re_mdio_write(sc, 0x06, 0xe14e); + re_mdio_write(sc, 0x06, 0xe1e1); + re_mdio_write(sc, 0x06, 0x4fac); + re_mdio_write(sc, 0x06, 0x2d22); + re_mdio_write(sc, 0x06, 0xf603); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x36f7); + re_mdio_write(sc, 0x06, 0x03f7); + re_mdio_write(sc, 0x06, 0x06bf); + re_mdio_write(sc, 0x06, 0x8622); + re_mdio_write(sc, 0x06, 0x022e); + re_mdio_write(sc, 0x06, 0xb0ae); + re_mdio_write(sc, 0x06, 0x11e0); + re_mdio_write(sc, 0x06, 0xe14e); + re_mdio_write(sc, 0x06, 0xe1e1); + re_mdio_write(sc, 0x06, 0x4fad); + re_mdio_write(sc, 0x06, 0x2d08); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x2d02); + re_mdio_write(sc, 0x06, 0x2eb0); + re_mdio_write(sc, 0x06, 0xf606); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x204c); + re_mdio_write(sc, 0x06, 0xd200); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0x0058); + re_mdio_write(sc, 0x06, 0x010c); + re_mdio_write(sc, 0x06, 0x021e); + re_mdio_write(sc, 0x06, 0x20e0); + re_mdio_write(sc, 0x06, 0xe000); + re_mdio_write(sc, 0x06, 0x5810); + re_mdio_write(sc, 0x06, 0x1e20); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x3658); + re_mdio_write(sc, 0x06, 0x031e); + re_mdio_write(sc, 0x06, 0x20e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x2358); + re_mdio_write(sc, 0x06, 0xe01e); + re_mdio_write(sc, 0x06, 0x20e0); + re_mdio_write(sc, 0x06, 0x8ae6); + re_mdio_write(sc, 0x06, 0x1f02); + re_mdio_write(sc, 0x06, 0x9e22); + re_mdio_write(sc, 0x06, 0xe68a); + re_mdio_write(sc, 0x06, 0xe6ad); + re_mdio_write(sc, 0x06, 0x3214); + re_mdio_write(sc, 0x06, 0xad34); + re_mdio_write(sc, 0x06, 0x11ef); + re_mdio_write(sc, 0x06, 0x0258); + re_mdio_write(sc, 0x06, 0x039e); + re_mdio_write(sc, 0x06, 0x07ad); + re_mdio_write(sc, 0x06, 0x3508); + re_mdio_write(sc, 0x06, 0x5ac0); + re_mdio_write(sc, 0x06, 0x9f04); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xae02); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x3e02); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfae0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac26); + re_mdio_write(sc, 0x06, 0x0ee0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x08e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xac24); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x6bee); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xe0eb); + re_mdio_write(sc, 0x06, 0x00e2); + re_mdio_write(sc, 0x06, 0xe07c); + re_mdio_write(sc, 0x06, 0xe3e0); + re_mdio_write(sc, 0x06, 0x7da5); + re_mdio_write(sc, 0x06, 0x1111); + re_mdio_write(sc, 0x06, 0x15d2); + re_mdio_write(sc, 0x06, 0x60d6); + re_mdio_write(sc, 0x06, 0x6666); + re_mdio_write(sc, 0x06, 0x0207); + re_mdio_write(sc, 0x06, 0xf9d2); + re_mdio_write(sc, 0x06, 0xa0d6); + re_mdio_write(sc, 0x06, 0xaaaa); + re_mdio_write(sc, 0x06, 0x0207); + re_mdio_write(sc, 0x06, 0xf902); + re_mdio_write(sc, 0x06, 0x825c); + re_mdio_write(sc, 0x06, 0xae44); + re_mdio_write(sc, 0x06, 0xa566); + re_mdio_write(sc, 0x06, 0x6602); + re_mdio_write(sc, 0x06, 0xae38); + re_mdio_write(sc, 0x06, 0xa5aa); + re_mdio_write(sc, 0x06, 0xaa02); + re_mdio_write(sc, 0x06, 0xae32); + re_mdio_write(sc, 0x06, 0xeee0); + re_mdio_write(sc, 0x06, 0xea04); + re_mdio_write(sc, 0x06, 0xeee0); + re_mdio_write(sc, 0x06, 0xeb06); + re_mdio_write(sc, 0x06, 0xe2e0); + re_mdio_write(sc, 0x06, 0x7ce3); + re_mdio_write(sc, 0x06, 0xe07d); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x38e1); + re_mdio_write(sc, 0x06, 0xe039); + re_mdio_write(sc, 0x06, 0xad2e); + re_mdio_write(sc, 0x06, 0x21ad); + re_mdio_write(sc, 0x06, 0x3f13); + re_mdio_write(sc, 0x06, 0xe0e4); + re_mdio_write(sc, 0x06, 0x14e1); + re_mdio_write(sc, 0x06, 0xe415); + re_mdio_write(sc, 0x06, 0x6880); + re_mdio_write(sc, 0x06, 0xe4e4); + re_mdio_write(sc, 0x06, 0x14e5); + re_mdio_write(sc, 0x06, 0xe415); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x5cae); + re_mdio_write(sc, 0x06, 0x0bac); + re_mdio_write(sc, 0x06, 0x3e02); + re_mdio_write(sc, 0x06, 0xae06); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x8602); + re_mdio_write(sc, 0x06, 0x82b0); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e1); + re_mdio_write(sc, 0x06, 0x8b2e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2605); + re_mdio_write(sc, 0x06, 0x0221); + re_mdio_write(sc, 0x06, 0xf3f7); + re_mdio_write(sc, 0x06, 0x28e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xad21); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x22f8); + re_mdio_write(sc, 0x06, 0xf729); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2405); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0xebf7); + re_mdio_write(sc, 0x06, 0x2ae5); + re_mdio_write(sc, 0x06, 0x8b2e); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x2134); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2109); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x2eac); + re_mdio_write(sc, 0x06, 0x2003); + re_mdio_write(sc, 0x06, 0x0283); + re_mdio_write(sc, 0x06, 0x52e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x09e0); + re_mdio_write(sc, 0x06, 0x8b2e); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x8337); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e1); + re_mdio_write(sc, 0x06, 0x8b2e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2608); + re_mdio_write(sc, 0x06, 0xe085); + re_mdio_write(sc, 0x06, 0xd2ad); + re_mdio_write(sc, 0x06, 0x2502); + re_mdio_write(sc, 0x06, 0xf628); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x210a); + re_mdio_write(sc, 0x06, 0xe086); + re_mdio_write(sc, 0x06, 0x0af6); + re_mdio_write(sc, 0x06, 0x27a0); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0xf629); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2408); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xedad); + re_mdio_write(sc, 0x06, 0x2002); + re_mdio_write(sc, 0x06, 0xf62a); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x2ea1); + re_mdio_write(sc, 0x06, 0x0003); + re_mdio_write(sc, 0x06, 0x0221); + re_mdio_write(sc, 0x06, 0x11fc); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0x8aed); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8aec); + re_mdio_write(sc, 0x06, 0x0004); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x3ae0); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0xeb58); + re_mdio_write(sc, 0x06, 0xf8d1); + re_mdio_write(sc, 0x06, 0x01e4); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe5e0); + re_mdio_write(sc, 0x06, 0xebe0); + re_mdio_write(sc, 0x06, 0xe07c); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x7d5c); + re_mdio_write(sc, 0x06, 0x00ff); + re_mdio_write(sc, 0x06, 0x3c00); + re_mdio_write(sc, 0x06, 0x1eab); + re_mdio_write(sc, 0x06, 0x1ce0); + re_mdio_write(sc, 0x06, 0xe04c); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x4d58); + re_mdio_write(sc, 0x06, 0xc1e4); + re_mdio_write(sc, 0x06, 0xe04c); + re_mdio_write(sc, 0x06, 0xe5e0); + re_mdio_write(sc, 0x06, 0x4de0); + re_mdio_write(sc, 0x06, 0xe0ee); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0x3ce4); + re_mdio_write(sc, 0x06, 0xe0ee); + re_mdio_write(sc, 0x06, 0xe5e0); + re_mdio_write(sc, 0x06, 0xeffc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2412); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0xeee1); + re_mdio_write(sc, 0x06, 0xe0ef); + re_mdio_write(sc, 0x06, 0x59c3); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0xeee5); + re_mdio_write(sc, 0x06, 0xe0ef); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xed01); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac25); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x8363); + re_mdio_write(sc, 0x06, 0xae03); + re_mdio_write(sc, 0x06, 0x0225); + re_mdio_write(sc, 0x06, 0x16fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xfae0); + re_mdio_write(sc, 0x06, 0x860a); + re_mdio_write(sc, 0x06, 0xa000); + re_mdio_write(sc, 0x06, 0x19e0); + re_mdio_write(sc, 0x06, 0x860b); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x331b); + re_mdio_write(sc, 0x06, 0x109e); + re_mdio_write(sc, 0x06, 0x04aa); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x06ee); + re_mdio_write(sc, 0x06, 0x860a); + re_mdio_write(sc, 0x06, 0x01ae); + re_mdio_write(sc, 0x06, 0xe602); + re_mdio_write(sc, 0x06, 0x241e); + re_mdio_write(sc, 0x06, 0xae14); + re_mdio_write(sc, 0x06, 0xa001); + re_mdio_write(sc, 0x06, 0x1402); + re_mdio_write(sc, 0x06, 0x2426); + re_mdio_write(sc, 0x06, 0xbf26); + re_mdio_write(sc, 0x06, 0x6d02); + re_mdio_write(sc, 0x06, 0x2eb0); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0b00); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0a02); + re_mdio_write(sc, 0x06, 0xaf84); + re_mdio_write(sc, 0x06, 0x3ca0); + re_mdio_write(sc, 0x06, 0x0252); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0400); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0500); + re_mdio_write(sc, 0x06, 0xe086); + re_mdio_write(sc, 0x06, 0x0be1); + re_mdio_write(sc, 0x06, 0x8b32); + re_mdio_write(sc, 0x06, 0x1b10); + re_mdio_write(sc, 0x06, 0x9e04); + re_mdio_write(sc, 0x06, 0xaa02); + re_mdio_write(sc, 0x06, 0xaecb); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0b00); + re_mdio_write(sc, 0x06, 0x0224); + re_mdio_write(sc, 0x06, 0x3ae2); + re_mdio_write(sc, 0x06, 0x8604); + re_mdio_write(sc, 0x06, 0xe386); + re_mdio_write(sc, 0x06, 0x05ef); + re_mdio_write(sc, 0x06, 0x65e2); + re_mdio_write(sc, 0x06, 0x8606); + re_mdio_write(sc, 0x06, 0xe386); + re_mdio_write(sc, 0x06, 0x071b); + re_mdio_write(sc, 0x06, 0x56aa); + re_mdio_write(sc, 0x06, 0x0eef); + re_mdio_write(sc, 0x06, 0x56e6); + re_mdio_write(sc, 0x06, 0x8606); + re_mdio_write(sc, 0x06, 0xe786); + re_mdio_write(sc, 0x06, 0x07e2); + re_mdio_write(sc, 0x06, 0x8609); + re_mdio_write(sc, 0x06, 0xe686); + re_mdio_write(sc, 0x06, 0x08e0); + re_mdio_write(sc, 0x06, 0x8609); + re_mdio_write(sc, 0x06, 0xa000); + re_mdio_write(sc, 0x06, 0x07ee); + re_mdio_write(sc, 0x06, 0x860a); + re_mdio_write(sc, 0x06, 0x03af); + re_mdio_write(sc, 0x06, 0x8369); + re_mdio_write(sc, 0x06, 0x0224); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x2426); + re_mdio_write(sc, 0x06, 0xae48); + re_mdio_write(sc, 0x06, 0xa003); + re_mdio_write(sc, 0x06, 0x21e0); + re_mdio_write(sc, 0x06, 0x8608); + re_mdio_write(sc, 0x06, 0xe186); + re_mdio_write(sc, 0x06, 0x091b); + re_mdio_write(sc, 0x06, 0x019e); + re_mdio_write(sc, 0x06, 0x0caa); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x249d); + re_mdio_write(sc, 0x06, 0xaee7); + re_mdio_write(sc, 0x06, 0x0224); + re_mdio_write(sc, 0x06, 0x8eae); + re_mdio_write(sc, 0x06, 0xe2ee); + re_mdio_write(sc, 0x06, 0x860a); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0x860b); + re_mdio_write(sc, 0x06, 0x00af); + re_mdio_write(sc, 0x06, 0x8369); + re_mdio_write(sc, 0x06, 0xa004); + re_mdio_write(sc, 0x06, 0x15e0); + re_mdio_write(sc, 0x06, 0x860b); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x341b); + re_mdio_write(sc, 0x06, 0x109e); + re_mdio_write(sc, 0x06, 0x05aa); + re_mdio_write(sc, 0x06, 0x03af); + re_mdio_write(sc, 0x06, 0x8383); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0a05); + re_mdio_write(sc, 0x06, 0xae0c); + re_mdio_write(sc, 0x06, 0xa005); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x0702); + re_mdio_write(sc, 0x06, 0x2309); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0a00); + re_mdio_write(sc, 0x06, 0xfeef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xfbe0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x22e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x23e2); + re_mdio_write(sc, 0x06, 0xe036); + re_mdio_write(sc, 0x06, 0xe3e0); + re_mdio_write(sc, 0x06, 0x375a); + re_mdio_write(sc, 0x06, 0xc40d); + re_mdio_write(sc, 0x06, 0x0158); + re_mdio_write(sc, 0x06, 0x021e); + re_mdio_write(sc, 0x06, 0x20e3); + re_mdio_write(sc, 0x06, 0x8ae7); + re_mdio_write(sc, 0x06, 0xac31); + re_mdio_write(sc, 0x06, 0x60ac); + re_mdio_write(sc, 0x06, 0x3a08); + re_mdio_write(sc, 0x06, 0xac3e); + re_mdio_write(sc, 0x06, 0x26ae); + re_mdio_write(sc, 0x06, 0x67af); + re_mdio_write(sc, 0x06, 0x84db); + re_mdio_write(sc, 0x06, 0xad37); + re_mdio_write(sc, 0x06, 0x61e0); + re_mdio_write(sc, 0x06, 0x8ae8); + re_mdio_write(sc, 0x06, 0x10e4); + re_mdio_write(sc, 0x06, 0x8ae8); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0xe91b); + re_mdio_write(sc, 0x06, 0x109e); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x51d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x863b); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50ee); + re_mdio_write(sc, 0x06, 0x8ae8); + re_mdio_write(sc, 0x06, 0x00ae); + re_mdio_write(sc, 0x06, 0x43ad); + re_mdio_write(sc, 0x06, 0x3627); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xeee1); + re_mdio_write(sc, 0x06, 0x8aef); + re_mdio_write(sc, 0x06, 0xef74); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xeae1); + re_mdio_write(sc, 0x06, 0x8aeb); + re_mdio_write(sc, 0x06, 0x1b74); + re_mdio_write(sc, 0x06, 0x9e2e); + re_mdio_write(sc, 0x06, 0x14e4); + re_mdio_write(sc, 0x06, 0x8aea); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0xebef); + re_mdio_write(sc, 0x06, 0x74e0); + re_mdio_write(sc, 0x06, 0x8aee); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0xef1b); + re_mdio_write(sc, 0x06, 0x479e); + re_mdio_write(sc, 0x06, 0x0fae); + re_mdio_write(sc, 0x06, 0x19ee); + re_mdio_write(sc, 0x06, 0x8aea); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8aeb); + re_mdio_write(sc, 0x06, 0x00ae); + re_mdio_write(sc, 0x06, 0x0fac); + re_mdio_write(sc, 0x06, 0x390c); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x3b02); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xe800); + re_mdio_write(sc, 0x06, 0xe68a); + re_mdio_write(sc, 0x06, 0xe7ff); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x2358); + re_mdio_write(sc, 0x06, 0xc4e1); + re_mdio_write(sc, 0x06, 0x8b6e); + re_mdio_write(sc, 0x06, 0x1f10); + re_mdio_write(sc, 0x06, 0x9e24); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x6ead); + re_mdio_write(sc, 0x06, 0x2218); + re_mdio_write(sc, 0x06, 0xac27); + re_mdio_write(sc, 0x06, 0x0dac); + re_mdio_write(sc, 0x06, 0x2605); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x8fae); + re_mdio_write(sc, 0x06, 0x1302); + re_mdio_write(sc, 0x06, 0x03c8); + re_mdio_write(sc, 0x06, 0xae0e); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0xe102); + re_mdio_write(sc, 0x06, 0x8520); + re_mdio_write(sc, 0x06, 0xae06); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x8f02); + re_mdio_write(sc, 0x06, 0x8566); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x82ad); + re_mdio_write(sc, 0x06, 0x2737); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x4402); + re_mdio_write(sc, 0x06, 0x2f23); + re_mdio_write(sc, 0x06, 0xac28); + re_mdio_write(sc, 0x06, 0x2ed1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x8647); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50bf); + re_mdio_write(sc, 0x06, 0x8641); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x23e5); + re_mdio_write(sc, 0x06, 0x8af0); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x22e1); + re_mdio_write(sc, 0x06, 0xe023); + re_mdio_write(sc, 0x06, 0xac2e); + re_mdio_write(sc, 0x06, 0x04d1); + re_mdio_write(sc, 0x06, 0x01ae); + re_mdio_write(sc, 0x06, 0x02d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x8641); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50d1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x8644); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x4702); + re_mdio_write(sc, 0x06, 0x2f23); + re_mdio_write(sc, 0x06, 0xad28); + re_mdio_write(sc, 0x06, 0x19d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x8644); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50e1); + re_mdio_write(sc, 0x06, 0x8af0); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x4102); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x4702); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0xfee1); + re_mdio_write(sc, 0x06, 0xe2ff); + re_mdio_write(sc, 0x06, 0xad2e); + re_mdio_write(sc, 0x06, 0x63e0); + re_mdio_write(sc, 0x06, 0xe038); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x39ad); + re_mdio_write(sc, 0x06, 0x2f10); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x34e1); + re_mdio_write(sc, 0x06, 0xe035); + re_mdio_write(sc, 0x06, 0xf726); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0x34e5); + re_mdio_write(sc, 0x06, 0xe035); + re_mdio_write(sc, 0x06, 0xae0e); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0xd6e1); + re_mdio_write(sc, 0x06, 0xe2d7); + re_mdio_write(sc, 0x06, 0xf728); + re_mdio_write(sc, 0x06, 0xe4e2); + re_mdio_write(sc, 0x06, 0xd6e5); + re_mdio_write(sc, 0x06, 0xe2d7); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0x34e1); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xf72b); + re_mdio_write(sc, 0x06, 0xe4e2); + re_mdio_write(sc, 0x06, 0x34e5); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xd07d); + re_mdio_write(sc, 0x06, 0xb0fe); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0x34e1); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xf62b); + re_mdio_write(sc, 0x06, 0xe4e2); + re_mdio_write(sc, 0x06, 0x34e5); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x34e1); + re_mdio_write(sc, 0x06, 0xe035); + re_mdio_write(sc, 0x06, 0xf626); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0x34e5); + re_mdio_write(sc, 0x06, 0xe035); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0xd6e1); + re_mdio_write(sc, 0x06, 0xe2d7); + re_mdio_write(sc, 0x06, 0xf628); + re_mdio_write(sc, 0x06, 0xe4e2); + re_mdio_write(sc, 0x06, 0xd6e5); + re_mdio_write(sc, 0x06, 0xe2d7); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xae20); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0xa725); + re_mdio_write(sc, 0x06, 0xe50a); + re_mdio_write(sc, 0x06, 0x1de5); + re_mdio_write(sc, 0x06, 0x0a2c); + re_mdio_write(sc, 0x06, 0xe50a); + re_mdio_write(sc, 0x06, 0x6de5); + re_mdio_write(sc, 0x06, 0x0a1d); + re_mdio_write(sc, 0x06, 0xe50a); + re_mdio_write(sc, 0x06, 0x1ce5); + re_mdio_write(sc, 0x06, 0x0a2d); + re_mdio_write(sc, 0x06, 0xa755); + re_mdio_write(sc, 0x06, 0x00e2); + re_mdio_write(sc, 0x06, 0x3488); + re_mdio_write(sc, 0x06, 0xe200); + re_mdio_write(sc, 0x06, 0xcce2); + re_mdio_write(sc, 0x06, 0x0055); + re_mdio_write(sc, 0x06, 0xe020); + re_mdio_write(sc, 0x06, 0x55e2); + re_mdio_write(sc, 0x06, 0xd600); + re_mdio_write(sc, 0x06, 0xe24a); + PhyRegValue = re_mdio_read(sc, 0x01); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x01, PhyRegValue); + PhyRegValue = re_mdio_read(sc, 0x00); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x00, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x17, 0x2179); + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x10, 0xf274); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0042); + re_mdio_write(sc, 0x15, 0x0f00); + re_mdio_write(sc, 0x15, 0x0f00); + re_mdio_write(sc, 0x16, 0x7408); + re_mdio_write(sc, 0x15, 0x0e00); + re_mdio_write(sc, 0x15, 0x0f00); + re_mdio_write(sc, 0x15, 0x0f01); + re_mdio_write(sc, 0x16, 0x4000); + re_mdio_write(sc, 0x15, 0x0e01); + re_mdio_write(sc, 0x15, 0x0f01); + re_mdio_write(sc, 0x15, 0x0f02); + re_mdio_write(sc, 0x16, 0x9400); + re_mdio_write(sc, 0x15, 0x0e02); + re_mdio_write(sc, 0x15, 0x0f02); + re_mdio_write(sc, 0x15, 0x0f03); + re_mdio_write(sc, 0x16, 0x7408); + re_mdio_write(sc, 0x15, 0x0e03); + re_mdio_write(sc, 0x15, 0x0f03); + re_mdio_write(sc, 0x15, 0x0f04); + re_mdio_write(sc, 0x16, 0x4008); + re_mdio_write(sc, 0x15, 0x0e04); + re_mdio_write(sc, 0x15, 0x0f04); + re_mdio_write(sc, 0x15, 0x0f05); + re_mdio_write(sc, 0x16, 0x9400); + re_mdio_write(sc, 0x15, 0x0e05); + re_mdio_write(sc, 0x15, 0x0f05); + re_mdio_write(sc, 0x15, 0x0f06); + re_mdio_write(sc, 0x16, 0x0803); + re_mdio_write(sc, 0x15, 0x0e06); + re_mdio_write(sc, 0x15, 0x0f06); + re_mdio_write(sc, 0x15, 0x0d00); + re_mdio_write(sc, 0x15, 0x0100); + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x10, 0xf074); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x17, 0x2149); + re_mdio_write(sc, 0x1f, 0x0005); + for (i=0; i<200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x00); + if (PhyRegValue&0x0080) + break; + } + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + if (sc->RequiredSecLanDonglePatch) + PhyRegValue &= ~(BIT_2); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue |= BIT_14; + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1e, 0x0020); + PhyRegValue = re_mdio_read(sc, 0x1b); + PhyRegValue |= BIT_7; + re_mdio_write(sc, 0x1b, PhyRegValue); + re_mdio_write(sc, 0x1e, 0x0041); + re_mdio_write(sc, 0x15, 0x0e02); + re_mdio_write(sc, 0x1e, 0x0028); + PhyRegValue = re_mdio_read(sc, 0x19); + PhyRegValue |= BIT_15; + re_mdio_write(sc, 0x19, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + } else { + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x17, 0x0117); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1E, 0x002C); + re_mdio_write(sc, 0x1B, 0x5000); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x16, 0x4104); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x1E); + PhyRegValue &= 0x03FF; + if (PhyRegValue==0x000C) + break; + } + re_mdio_write(sc, 0x1f, 0x0005); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x07); + if ((PhyRegValue & BIT_5) == 0) + break; + } + PhyRegValue = re_mdio_read(sc, 0x07); + if (PhyRegValue & BIT_5) { + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x00a1); + re_mdio_write(sc, 0x17, 0x1000); + re_mdio_write(sc, 0x17, 0x0000); + re_mdio_write(sc, 0x17, 0x2000); + re_mdio_write(sc, 0x1e, 0x002f); + re_mdio_write(sc, 0x18, 0x9bfb); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x07, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + } + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + PhyRegValue = re_mdio_read(sc, 0x00); + PhyRegValue &= ~(BIT_7); + re_mdio_write(sc, 0x00, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0002); + PhyRegValue = re_mdio_read(sc, 0x08); + PhyRegValue &= ~(BIT_7); + re_mdio_write(sc, 0x08, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0307); + re_mdio_write(sc, 0x15, 0x000e); + re_mdio_write(sc, 0x19, 0x000a); + re_mdio_write(sc, 0x15, 0x0010); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x0018); + re_mdio_write(sc, 0x19, 0x4801); + re_mdio_write(sc, 0x15, 0x0019); + re_mdio_write(sc, 0x19, 0x6801); + re_mdio_write(sc, 0x15, 0x001a); + re_mdio_write(sc, 0x19, 0x66a1); + re_mdio_write(sc, 0x15, 0x001f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0020); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0021); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0022); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0023); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0024); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0025); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x0026); + re_mdio_write(sc, 0x19, 0x40ea); + re_mdio_write(sc, 0x15, 0x0027); + re_mdio_write(sc, 0x19, 0x4503); + re_mdio_write(sc, 0x15, 0x0028); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0029); + re_mdio_write(sc, 0x19, 0xa631); + re_mdio_write(sc, 0x15, 0x002a); + re_mdio_write(sc, 0x19, 0x9717); + re_mdio_write(sc, 0x15, 0x002b); + re_mdio_write(sc, 0x19, 0x302c); + re_mdio_write(sc, 0x15, 0x002c); + re_mdio_write(sc, 0x19, 0x4802); + re_mdio_write(sc, 0x15, 0x002d); + re_mdio_write(sc, 0x19, 0x58da); + re_mdio_write(sc, 0x15, 0x002e); + re_mdio_write(sc, 0x19, 0x400d); + re_mdio_write(sc, 0x15, 0x002f); + re_mdio_write(sc, 0x19, 0x4488); + re_mdio_write(sc, 0x15, 0x0030); + re_mdio_write(sc, 0x19, 0x9e00); + re_mdio_write(sc, 0x15, 0x0031); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x0032); + re_mdio_write(sc, 0x19, 0x6481); + re_mdio_write(sc, 0x15, 0x0033); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0034); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0035); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0036); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0037); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0038); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0039); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x003a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x003b); + re_mdio_write(sc, 0x19, 0x63e8); + re_mdio_write(sc, 0x15, 0x003c); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x003d); + re_mdio_write(sc, 0x19, 0x59d4); + re_mdio_write(sc, 0x15, 0x003e); + re_mdio_write(sc, 0x19, 0x63f8); + re_mdio_write(sc, 0x15, 0x0040); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x0041); + re_mdio_write(sc, 0x19, 0x30de); + re_mdio_write(sc, 0x15, 0x0044); + re_mdio_write(sc, 0x19, 0x480f); + re_mdio_write(sc, 0x15, 0x0045); + re_mdio_write(sc, 0x19, 0x6800); + re_mdio_write(sc, 0x15, 0x0046); + re_mdio_write(sc, 0x19, 0x6680); + re_mdio_write(sc, 0x15, 0x0047); + re_mdio_write(sc, 0x19, 0x7c10); + re_mdio_write(sc, 0x15, 0x0048); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x0049); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004b); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004f); + re_mdio_write(sc, 0x19, 0x40ea); + re_mdio_write(sc, 0x15, 0x0050); + re_mdio_write(sc, 0x19, 0x4503); + re_mdio_write(sc, 0x15, 0x0051); + re_mdio_write(sc, 0x19, 0x58ca); + re_mdio_write(sc, 0x15, 0x0052); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x0053); + re_mdio_write(sc, 0x19, 0x63d8); + re_mdio_write(sc, 0x15, 0x0054); + re_mdio_write(sc, 0x19, 0x66a0); + re_mdio_write(sc, 0x15, 0x0055); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0056); + re_mdio_write(sc, 0x19, 0x3000); + re_mdio_write(sc, 0x15, 0x00a1); + re_mdio_write(sc, 0x19, 0x3044); + re_mdio_write(sc, 0x15, 0x00ab); + re_mdio_write(sc, 0x19, 0x5820); + re_mdio_write(sc, 0x15, 0x00ac); + re_mdio_write(sc, 0x19, 0x5e04); + re_mdio_write(sc, 0x15, 0x00ad); + re_mdio_write(sc, 0x19, 0xb60c); + re_mdio_write(sc, 0x15, 0x00af); + re_mdio_write(sc, 0x19, 0x000a); + re_mdio_write(sc, 0x15, 0x00b2); + re_mdio_write(sc, 0x19, 0x30b9); + re_mdio_write(sc, 0x15, 0x00b9); + re_mdio_write(sc, 0x19, 0x4408); + re_mdio_write(sc, 0x15, 0x00ba); + re_mdio_write(sc, 0x19, 0x480b); + re_mdio_write(sc, 0x15, 0x00bb); + re_mdio_write(sc, 0x19, 0x5e00); + re_mdio_write(sc, 0x15, 0x00bc); + re_mdio_write(sc, 0x19, 0x405f); + re_mdio_write(sc, 0x15, 0x00bd); + re_mdio_write(sc, 0x19, 0x4448); + re_mdio_write(sc, 0x15, 0x00be); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x00bf); + re_mdio_write(sc, 0x19, 0x4468); + re_mdio_write(sc, 0x15, 0x00c0); + re_mdio_write(sc, 0x19, 0x9c02); + re_mdio_write(sc, 0x15, 0x00c1); + re_mdio_write(sc, 0x19, 0x58a0); + re_mdio_write(sc, 0x15, 0x00c2); + re_mdio_write(sc, 0x19, 0xb605); + re_mdio_write(sc, 0x15, 0x00c3); + re_mdio_write(sc, 0x19, 0xc0d3); + re_mdio_write(sc, 0x15, 0x00c4); + re_mdio_write(sc, 0x19, 0x00e6); + re_mdio_write(sc, 0x15, 0x00c5); + re_mdio_write(sc, 0x19, 0xdaec); + re_mdio_write(sc, 0x15, 0x00c6); + re_mdio_write(sc, 0x19, 0x00fa); + re_mdio_write(sc, 0x15, 0x00c7); + re_mdio_write(sc, 0x19, 0x9df9); + re_mdio_write(sc, 0x15, 0x0112); + re_mdio_write(sc, 0x19, 0x6421); + re_mdio_write(sc, 0x15, 0x0113); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0114); + re_mdio_write(sc, 0x19, 0x63f0); + re_mdio_write(sc, 0x15, 0x0115); + re_mdio_write(sc, 0x19, 0x4003); + re_mdio_write(sc, 0x15, 0x0116); + re_mdio_write(sc, 0x19, 0x4418); + re_mdio_write(sc, 0x15, 0x0117); + re_mdio_write(sc, 0x19, 0x9b00); + re_mdio_write(sc, 0x15, 0x0118); + re_mdio_write(sc, 0x19, 0x6461); + re_mdio_write(sc, 0x15, 0x0119); + re_mdio_write(sc, 0x19, 0x64e1); + re_mdio_write(sc, 0x15, 0x011a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0150); + re_mdio_write(sc, 0x19, 0x7c80); + re_mdio_write(sc, 0x15, 0x0151); + re_mdio_write(sc, 0x19, 0x6461); + re_mdio_write(sc, 0x15, 0x0152); + re_mdio_write(sc, 0x19, 0x4003); + re_mdio_write(sc, 0x15, 0x0153); + re_mdio_write(sc, 0x19, 0x4540); + re_mdio_write(sc, 0x15, 0x0154); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0155); + re_mdio_write(sc, 0x19, 0x9d00); + re_mdio_write(sc, 0x15, 0x0156); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0157); + re_mdio_write(sc, 0x19, 0x6421); + re_mdio_write(sc, 0x15, 0x0158); + re_mdio_write(sc, 0x19, 0x7c80); + re_mdio_write(sc, 0x15, 0x0159); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x015a); + re_mdio_write(sc, 0x19, 0x30fe); + re_mdio_write(sc, 0x15, 0x029c); + re_mdio_write(sc, 0x19, 0x0070); + re_mdio_write(sc, 0x15, 0x02b2); + re_mdio_write(sc, 0x19, 0x005a); + re_mdio_write(sc, 0x15, 0x02bd); + re_mdio_write(sc, 0x19, 0xa522); + re_mdio_write(sc, 0x15, 0x02ce); + re_mdio_write(sc, 0x19, 0xb63e); + re_mdio_write(sc, 0x15, 0x02d9); + re_mdio_write(sc, 0x19, 0x32df); + re_mdio_write(sc, 0x15, 0x02df); + re_mdio_write(sc, 0x19, 0x4500); + re_mdio_write(sc, 0x15, 0x02f4); + re_mdio_write(sc, 0x19, 0xb618); + re_mdio_write(sc, 0x15, 0x02fb); + re_mdio_write(sc, 0x19, 0xb900); + re_mdio_write(sc, 0x15, 0x02fc); + re_mdio_write(sc, 0x19, 0x49b5); + re_mdio_write(sc, 0x15, 0x02fd); + re_mdio_write(sc, 0x19, 0x6812); + re_mdio_write(sc, 0x15, 0x02fe); + re_mdio_write(sc, 0x19, 0x66a0); + re_mdio_write(sc, 0x15, 0x02ff); + re_mdio_write(sc, 0x19, 0x9900); + re_mdio_write(sc, 0x15, 0x0300); + re_mdio_write(sc, 0x19, 0x64a0); + re_mdio_write(sc, 0x15, 0x0301); + re_mdio_write(sc, 0x19, 0x3316); + re_mdio_write(sc, 0x15, 0x0308); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x030c); + re_mdio_write(sc, 0x19, 0x3000); + re_mdio_write(sc, 0x15, 0x0312); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0313); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0314); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0315); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0316); + re_mdio_write(sc, 0x19, 0x49b5); + re_mdio_write(sc, 0x15, 0x0317); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x0318); + re_mdio_write(sc, 0x19, 0x4d00); + re_mdio_write(sc, 0x15, 0x0319); + re_mdio_write(sc, 0x19, 0x6810); + re_mdio_write(sc, 0x15, 0x031a); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x031b); + re_mdio_write(sc, 0x19, 0x4925); + re_mdio_write(sc, 0x15, 0x031c); + re_mdio_write(sc, 0x19, 0x403b); + re_mdio_write(sc, 0x15, 0x031d); + re_mdio_write(sc, 0x19, 0xa602); + re_mdio_write(sc, 0x15, 0x031e); + re_mdio_write(sc, 0x19, 0x402f); + re_mdio_write(sc, 0x15, 0x031f); + re_mdio_write(sc, 0x19, 0x4484); + re_mdio_write(sc, 0x15, 0x0320); + re_mdio_write(sc, 0x19, 0x40c8); + re_mdio_write(sc, 0x15, 0x0321); + re_mdio_write(sc, 0x19, 0x44c4); + re_mdio_write(sc, 0x15, 0x0322); + re_mdio_write(sc, 0x19, 0x404f); + re_mdio_write(sc, 0x15, 0x0323); + re_mdio_write(sc, 0x19, 0x44c8); + re_mdio_write(sc, 0x15, 0x0324); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x0325); + re_mdio_write(sc, 0x19, 0x00e7); + re_mdio_write(sc, 0x15, 0x0326); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0327); + re_mdio_write(sc, 0x19, 0x8203); + re_mdio_write(sc, 0x15, 0x0328); + re_mdio_write(sc, 0x19, 0x4d48); + re_mdio_write(sc, 0x15, 0x0329); + re_mdio_write(sc, 0x19, 0x332b); + re_mdio_write(sc, 0x15, 0x032a); + re_mdio_write(sc, 0x19, 0x4d40); + re_mdio_write(sc, 0x15, 0x032c); + re_mdio_write(sc, 0x19, 0x00f8); + re_mdio_write(sc, 0x15, 0x032d); + re_mdio_write(sc, 0x19, 0x82b2); + re_mdio_write(sc, 0x15, 0x032f); + re_mdio_write(sc, 0x19, 0x00b0); + re_mdio_write(sc, 0x15, 0x0332); + re_mdio_write(sc, 0x19, 0x91f2); + re_mdio_write(sc, 0x15, 0x033f); + re_mdio_write(sc, 0x19, 0xb6cd); + re_mdio_write(sc, 0x15, 0x0340); + re_mdio_write(sc, 0x19, 0x9e01); + re_mdio_write(sc, 0x15, 0x0341); + re_mdio_write(sc, 0x19, 0xd11d); + re_mdio_write(sc, 0x15, 0x0342); + re_mdio_write(sc, 0x19, 0x009d); + re_mdio_write(sc, 0x15, 0x0343); + re_mdio_write(sc, 0x19, 0xbb1c); + re_mdio_write(sc, 0x15, 0x0344); + re_mdio_write(sc, 0x19, 0x8102); + re_mdio_write(sc, 0x15, 0x0345); + re_mdio_write(sc, 0x19, 0x3348); + re_mdio_write(sc, 0x15, 0x0346); + re_mdio_write(sc, 0x19, 0xa231); + re_mdio_write(sc, 0x15, 0x0347); + re_mdio_write(sc, 0x19, 0x335b); + re_mdio_write(sc, 0x15, 0x0348); + re_mdio_write(sc, 0x19, 0x91f7); + re_mdio_write(sc, 0x15, 0x0349); + re_mdio_write(sc, 0x19, 0xc218); + re_mdio_write(sc, 0x15, 0x034a); + re_mdio_write(sc, 0x19, 0x00f5); + re_mdio_write(sc, 0x15, 0x034b); + re_mdio_write(sc, 0x19, 0x335b); + re_mdio_write(sc, 0x15, 0x034c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x034d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x034e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x034f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0350); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x035b); + re_mdio_write(sc, 0x19, 0xa23c); + re_mdio_write(sc, 0x15, 0x035c); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x035d); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x035e); + re_mdio_write(sc, 0x19, 0x3397); + re_mdio_write(sc, 0x15, 0x0363); + re_mdio_write(sc, 0x19, 0xb6a9); + re_mdio_write(sc, 0x15, 0x0366); + re_mdio_write(sc, 0x19, 0x00f5); + re_mdio_write(sc, 0x15, 0x0382); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0388); + re_mdio_write(sc, 0x19, 0x0084); + re_mdio_write(sc, 0x15, 0x0389); + re_mdio_write(sc, 0x19, 0xdd17); + re_mdio_write(sc, 0x15, 0x038a); + re_mdio_write(sc, 0x19, 0x000b); + re_mdio_write(sc, 0x15, 0x038b); + re_mdio_write(sc, 0x19, 0xa10a); + re_mdio_write(sc, 0x15, 0x038c); + re_mdio_write(sc, 0x19, 0x337e); + re_mdio_write(sc, 0x15, 0x038d); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x038e); + re_mdio_write(sc, 0x19, 0xa107); + re_mdio_write(sc, 0x15, 0x038f); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x0390); + re_mdio_write(sc, 0x19, 0xc017); + re_mdio_write(sc, 0x15, 0x0391); + re_mdio_write(sc, 0x19, 0x0004); + re_mdio_write(sc, 0x15, 0x0392); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x0393); + re_mdio_write(sc, 0x19, 0x00f4); + re_mdio_write(sc, 0x15, 0x0397); + re_mdio_write(sc, 0x19, 0x4098); + re_mdio_write(sc, 0x15, 0x0398); + re_mdio_write(sc, 0x19, 0x4408); + re_mdio_write(sc, 0x15, 0x0399); + re_mdio_write(sc, 0x19, 0x55bf); + re_mdio_write(sc, 0x15, 0x039a); + re_mdio_write(sc, 0x19, 0x4bb9); + re_mdio_write(sc, 0x15, 0x039b); + re_mdio_write(sc, 0x19, 0x6810); + re_mdio_write(sc, 0x15, 0x039c); + re_mdio_write(sc, 0x19, 0x4b29); + re_mdio_write(sc, 0x15, 0x039d); + re_mdio_write(sc, 0x19, 0x4041); + re_mdio_write(sc, 0x15, 0x039e); + re_mdio_write(sc, 0x19, 0x442a); + re_mdio_write(sc, 0x15, 0x039f); + re_mdio_write(sc, 0x19, 0x4029); + re_mdio_write(sc, 0x15, 0x03aa); + re_mdio_write(sc, 0x19, 0x33b8); + re_mdio_write(sc, 0x15, 0x03b6); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03b7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03b8); + re_mdio_write(sc, 0x19, 0x543f); + re_mdio_write(sc, 0x15, 0x03b9); + re_mdio_write(sc, 0x19, 0x499a); + re_mdio_write(sc, 0x15, 0x03ba); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x03bb); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03bc); + re_mdio_write(sc, 0x19, 0x490a); + re_mdio_write(sc, 0x15, 0x03bd); + re_mdio_write(sc, 0x19, 0x405e); + re_mdio_write(sc, 0x15, 0x03c2); + re_mdio_write(sc, 0x19, 0x9a03); + re_mdio_write(sc, 0x15, 0x03c4); + re_mdio_write(sc, 0x19, 0x0015); + re_mdio_write(sc, 0x15, 0x03c5); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x03c8); + re_mdio_write(sc, 0x19, 0x9cf7); + re_mdio_write(sc, 0x15, 0x03c9); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03ca); + re_mdio_write(sc, 0x19, 0x4c52); + re_mdio_write(sc, 0x15, 0x03cb); + re_mdio_write(sc, 0x19, 0x4458); + re_mdio_write(sc, 0x15, 0x03cd); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03ce); + re_mdio_write(sc, 0x19, 0x33bf); + re_mdio_write(sc, 0x15, 0x03cf); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d0); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d1); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d6); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d8); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03d9); + re_mdio_write(sc, 0x19, 0x49bb); + re_mdio_write(sc, 0x15, 0x03da); + re_mdio_write(sc, 0x19, 0x4478); + re_mdio_write(sc, 0x15, 0x03db); + re_mdio_write(sc, 0x19, 0x492b); + re_mdio_write(sc, 0x15, 0x03dc); + re_mdio_write(sc, 0x19, 0x7c01); + re_mdio_write(sc, 0x15, 0x03dd); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x03de); + re_mdio_write(sc, 0x19, 0xbd1a); + re_mdio_write(sc, 0x15, 0x03df); + re_mdio_write(sc, 0x19, 0xc428); + re_mdio_write(sc, 0x15, 0x03e0); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x03e1); + re_mdio_write(sc, 0x19, 0x9cfd); + re_mdio_write(sc, 0x15, 0x03e2); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03e3); + re_mdio_write(sc, 0x19, 0x4c52); + re_mdio_write(sc, 0x15, 0x03e4); + re_mdio_write(sc, 0x19, 0x4458); + re_mdio_write(sc, 0x15, 0x03e5); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03e6); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03e7); + re_mdio_write(sc, 0x19, 0x33de); + re_mdio_write(sc, 0x15, 0x03e8); + re_mdio_write(sc, 0x19, 0xc218); + re_mdio_write(sc, 0x15, 0x03e9); + re_mdio_write(sc, 0x19, 0x0002); + re_mdio_write(sc, 0x15, 0x03ea); + re_mdio_write(sc, 0x19, 0x32df); + re_mdio_write(sc, 0x15, 0x03eb); + re_mdio_write(sc, 0x19, 0x3316); + re_mdio_write(sc, 0x15, 0x03ec); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03ed); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03ee); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03ef); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03f7); + re_mdio_write(sc, 0x19, 0x330c); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0300); + + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x48f7); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xa080); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0xf602); + re_mdio_write(sc, 0x06, 0x0200); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x9002); + re_mdio_write(sc, 0x06, 0x0224); + re_mdio_write(sc, 0x06, 0x0202); + re_mdio_write(sc, 0x06, 0x3402); + re_mdio_write(sc, 0x06, 0x027f); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0xa602); + re_mdio_write(sc, 0x06, 0x80bf); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x88e1); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8a1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8b); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8c1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8e1e); + re_mdio_write(sc, 0x06, 0x01a0); + re_mdio_write(sc, 0x06, 0x00c7); + re_mdio_write(sc, 0x06, 0xaebb); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xe600); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xee03); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xefb8); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xe902); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8285); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8520); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8701); + re_mdio_write(sc, 0x06, 0xd481); + re_mdio_write(sc, 0x06, 0x35e4); + re_mdio_write(sc, 0x06, 0x8b94); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x95bf); + re_mdio_write(sc, 0x06, 0x8b88); + re_mdio_write(sc, 0x06, 0xec00); + re_mdio_write(sc, 0x06, 0x19a9); + re_mdio_write(sc, 0x06, 0x8b90); + re_mdio_write(sc, 0x06, 0xf9ee); + re_mdio_write(sc, 0x06, 0xfff6); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xffe0); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0xe1e1); + re_mdio_write(sc, 0x06, 0x41f7); + re_mdio_write(sc, 0x06, 0x2ff6); + re_mdio_write(sc, 0x06, 0x28e4); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0xe5e1); + re_mdio_write(sc, 0x06, 0x4104); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x0dee); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x82f4); + re_mdio_write(sc, 0x06, 0x021f); + re_mdio_write(sc, 0x06, 0x4102); + re_mdio_write(sc, 0x06, 0x2812); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x10ee); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x139d); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0xd602); + re_mdio_write(sc, 0x06, 0x1f99); + re_mdio_write(sc, 0x06, 0x0227); + re_mdio_write(sc, 0x06, 0xeafc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2014); + re_mdio_write(sc, 0x06, 0xf620); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x8104); + re_mdio_write(sc, 0x06, 0x021b); + re_mdio_write(sc, 0x06, 0xf402); + re_mdio_write(sc, 0x06, 0x2c9c); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x7902); + re_mdio_write(sc, 0x06, 0x8443); + re_mdio_write(sc, 0x06, 0xad22); + re_mdio_write(sc, 0x06, 0x11f6); + re_mdio_write(sc, 0x06, 0x22e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x022c); + re_mdio_write(sc, 0x06, 0x4602); + re_mdio_write(sc, 0x06, 0x2ac5); + re_mdio_write(sc, 0x06, 0x0229); + re_mdio_write(sc, 0x06, 0x2002); + re_mdio_write(sc, 0x06, 0x2b91); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x11f6); + re_mdio_write(sc, 0x06, 0x25e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0284); + re_mdio_write(sc, 0x06, 0xe202); + re_mdio_write(sc, 0x06, 0x043a); + re_mdio_write(sc, 0x06, 0x021a); + re_mdio_write(sc, 0x06, 0x5902); + re_mdio_write(sc, 0x06, 0x2bfc); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0xe001); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x1fd1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x8638); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50e0); + re_mdio_write(sc, 0x06, 0xe020); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x21ad); + re_mdio_write(sc, 0x06, 0x200e); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x3802); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xbf3d); + re_mdio_write(sc, 0x06, 0x3902); + re_mdio_write(sc, 0x06, 0x2eb0); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x0402); + re_mdio_write(sc, 0x06, 0x8591); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x3c05); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0xfee1); + re_mdio_write(sc, 0x06, 0xe2ff); + re_mdio_write(sc, 0x06, 0xad2d); + re_mdio_write(sc, 0x06, 0x1ae0); + re_mdio_write(sc, 0x06, 0xe14e); + re_mdio_write(sc, 0x06, 0xe1e1); + re_mdio_write(sc, 0x06, 0x4fac); + re_mdio_write(sc, 0x06, 0x2d22); + re_mdio_write(sc, 0x06, 0xf603); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x36f7); + re_mdio_write(sc, 0x06, 0x03f7); + re_mdio_write(sc, 0x06, 0x06bf); + re_mdio_write(sc, 0x06, 0x8622); + re_mdio_write(sc, 0x06, 0x022e); + re_mdio_write(sc, 0x06, 0xb0ae); + re_mdio_write(sc, 0x06, 0x11e0); + re_mdio_write(sc, 0x06, 0xe14e); + re_mdio_write(sc, 0x06, 0xe1e1); + re_mdio_write(sc, 0x06, 0x4fad); + re_mdio_write(sc, 0x06, 0x2d08); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x2d02); + re_mdio_write(sc, 0x06, 0x2eb0); + re_mdio_write(sc, 0x06, 0xf606); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x204c); + re_mdio_write(sc, 0x06, 0xd200); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0x0058); + re_mdio_write(sc, 0x06, 0x010c); + re_mdio_write(sc, 0x06, 0x021e); + re_mdio_write(sc, 0x06, 0x20e0); + re_mdio_write(sc, 0x06, 0xe000); + re_mdio_write(sc, 0x06, 0x5810); + re_mdio_write(sc, 0x06, 0x1e20); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x3658); + re_mdio_write(sc, 0x06, 0x031e); + re_mdio_write(sc, 0x06, 0x20e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x2358); + re_mdio_write(sc, 0x06, 0xe01e); + re_mdio_write(sc, 0x06, 0x20e0); + re_mdio_write(sc, 0x06, 0x8ae6); + re_mdio_write(sc, 0x06, 0x1f02); + re_mdio_write(sc, 0x06, 0x9e22); + re_mdio_write(sc, 0x06, 0xe68a); + re_mdio_write(sc, 0x06, 0xe6ad); + re_mdio_write(sc, 0x06, 0x3214); + re_mdio_write(sc, 0x06, 0xad34); + re_mdio_write(sc, 0x06, 0x11ef); + re_mdio_write(sc, 0x06, 0x0258); + re_mdio_write(sc, 0x06, 0x039e); + re_mdio_write(sc, 0x06, 0x07ad); + re_mdio_write(sc, 0x06, 0x3508); + re_mdio_write(sc, 0x06, 0x5ac0); + re_mdio_write(sc, 0x06, 0x9f04); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xae02); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x3e02); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfae0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac26); + re_mdio_write(sc, 0x06, 0x0ee0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x08e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xac24); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x6bee); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xe0eb); + re_mdio_write(sc, 0x06, 0x00e2); + re_mdio_write(sc, 0x06, 0xe07c); + re_mdio_write(sc, 0x06, 0xe3e0); + re_mdio_write(sc, 0x06, 0x7da5); + re_mdio_write(sc, 0x06, 0x1111); + re_mdio_write(sc, 0x06, 0x15d2); + re_mdio_write(sc, 0x06, 0x60d6); + re_mdio_write(sc, 0x06, 0x6666); + re_mdio_write(sc, 0x06, 0x0207); + re_mdio_write(sc, 0x06, 0xf9d2); + re_mdio_write(sc, 0x06, 0xa0d6); + re_mdio_write(sc, 0x06, 0xaaaa); + re_mdio_write(sc, 0x06, 0x0207); + re_mdio_write(sc, 0x06, 0xf902); + re_mdio_write(sc, 0x06, 0x825c); + re_mdio_write(sc, 0x06, 0xae44); + re_mdio_write(sc, 0x06, 0xa566); + re_mdio_write(sc, 0x06, 0x6602); + re_mdio_write(sc, 0x06, 0xae38); + re_mdio_write(sc, 0x06, 0xa5aa); + re_mdio_write(sc, 0x06, 0xaa02); + re_mdio_write(sc, 0x06, 0xae32); + re_mdio_write(sc, 0x06, 0xeee0); + re_mdio_write(sc, 0x06, 0xea04); + re_mdio_write(sc, 0x06, 0xeee0); + re_mdio_write(sc, 0x06, 0xeb06); + re_mdio_write(sc, 0x06, 0xe2e0); + re_mdio_write(sc, 0x06, 0x7ce3); + re_mdio_write(sc, 0x06, 0xe07d); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x38e1); + re_mdio_write(sc, 0x06, 0xe039); + re_mdio_write(sc, 0x06, 0xad2e); + re_mdio_write(sc, 0x06, 0x21ad); + re_mdio_write(sc, 0x06, 0x3f13); + re_mdio_write(sc, 0x06, 0xe0e4); + re_mdio_write(sc, 0x06, 0x14e1); + re_mdio_write(sc, 0x06, 0xe415); + re_mdio_write(sc, 0x06, 0x6880); + re_mdio_write(sc, 0x06, 0xe4e4); + re_mdio_write(sc, 0x06, 0x14e5); + re_mdio_write(sc, 0x06, 0xe415); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x5cae); + re_mdio_write(sc, 0x06, 0x0bac); + re_mdio_write(sc, 0x06, 0x3e02); + re_mdio_write(sc, 0x06, 0xae06); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x8602); + re_mdio_write(sc, 0x06, 0x82b0); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e1); + re_mdio_write(sc, 0x06, 0x8b2e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2605); + re_mdio_write(sc, 0x06, 0x0221); + re_mdio_write(sc, 0x06, 0xf3f7); + re_mdio_write(sc, 0x06, 0x28e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xad21); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x22f8); + re_mdio_write(sc, 0x06, 0xf729); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2405); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0xebf7); + re_mdio_write(sc, 0x06, 0x2ae5); + re_mdio_write(sc, 0x06, 0x8b2e); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x2134); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2109); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x2eac); + re_mdio_write(sc, 0x06, 0x2003); + re_mdio_write(sc, 0x06, 0x0283); + re_mdio_write(sc, 0x06, 0x52e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x09e0); + re_mdio_write(sc, 0x06, 0x8b2e); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x8337); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e1); + re_mdio_write(sc, 0x06, 0x8b2e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2608); + re_mdio_write(sc, 0x06, 0xe085); + re_mdio_write(sc, 0x06, 0xd2ad); + re_mdio_write(sc, 0x06, 0x2502); + re_mdio_write(sc, 0x06, 0xf628); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x210a); + re_mdio_write(sc, 0x06, 0xe086); + re_mdio_write(sc, 0x06, 0x0af6); + re_mdio_write(sc, 0x06, 0x27a0); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0xf629); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2408); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xedad); + re_mdio_write(sc, 0x06, 0x2002); + re_mdio_write(sc, 0x06, 0xf62a); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x2ea1); + re_mdio_write(sc, 0x06, 0x0003); + re_mdio_write(sc, 0x06, 0x0221); + re_mdio_write(sc, 0x06, 0x11fc); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0x8aed); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8aec); + re_mdio_write(sc, 0x06, 0x0004); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x3ae0); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0xeb58); + re_mdio_write(sc, 0x06, 0xf8d1); + re_mdio_write(sc, 0x06, 0x01e4); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe5e0); + re_mdio_write(sc, 0x06, 0xebe0); + re_mdio_write(sc, 0x06, 0xe07c); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x7d5c); + re_mdio_write(sc, 0x06, 0x00ff); + re_mdio_write(sc, 0x06, 0x3c00); + re_mdio_write(sc, 0x06, 0x1eab); + re_mdio_write(sc, 0x06, 0x1ce0); + re_mdio_write(sc, 0x06, 0xe04c); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x4d58); + re_mdio_write(sc, 0x06, 0xc1e4); + re_mdio_write(sc, 0x06, 0xe04c); + re_mdio_write(sc, 0x06, 0xe5e0); + re_mdio_write(sc, 0x06, 0x4de0); + re_mdio_write(sc, 0x06, 0xe0ee); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0x3ce4); + re_mdio_write(sc, 0x06, 0xe0ee); + re_mdio_write(sc, 0x06, 0xe5e0); + re_mdio_write(sc, 0x06, 0xeffc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2412); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0xeee1); + re_mdio_write(sc, 0x06, 0xe0ef); + re_mdio_write(sc, 0x06, 0x59c3); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0xeee5); + re_mdio_write(sc, 0x06, 0xe0ef); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xed01); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac25); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x8363); + re_mdio_write(sc, 0x06, 0xae03); + re_mdio_write(sc, 0x06, 0x0225); + re_mdio_write(sc, 0x06, 0x16fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xfae0); + re_mdio_write(sc, 0x06, 0x860a); + re_mdio_write(sc, 0x06, 0xa000); + re_mdio_write(sc, 0x06, 0x19e0); + re_mdio_write(sc, 0x06, 0x860b); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x331b); + re_mdio_write(sc, 0x06, 0x109e); + re_mdio_write(sc, 0x06, 0x04aa); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x06ee); + re_mdio_write(sc, 0x06, 0x860a); + re_mdio_write(sc, 0x06, 0x01ae); + re_mdio_write(sc, 0x06, 0xe602); + re_mdio_write(sc, 0x06, 0x241e); + re_mdio_write(sc, 0x06, 0xae14); + re_mdio_write(sc, 0x06, 0xa001); + re_mdio_write(sc, 0x06, 0x1402); + re_mdio_write(sc, 0x06, 0x2426); + re_mdio_write(sc, 0x06, 0xbf26); + re_mdio_write(sc, 0x06, 0x6d02); + re_mdio_write(sc, 0x06, 0x2eb0); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0b00); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0a02); + re_mdio_write(sc, 0x06, 0xaf84); + re_mdio_write(sc, 0x06, 0x3ca0); + re_mdio_write(sc, 0x06, 0x0252); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0400); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0500); + re_mdio_write(sc, 0x06, 0xe086); + re_mdio_write(sc, 0x06, 0x0be1); + re_mdio_write(sc, 0x06, 0x8b32); + re_mdio_write(sc, 0x06, 0x1b10); + re_mdio_write(sc, 0x06, 0x9e04); + re_mdio_write(sc, 0x06, 0xaa02); + re_mdio_write(sc, 0x06, 0xaecb); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0b00); + re_mdio_write(sc, 0x06, 0x0224); + re_mdio_write(sc, 0x06, 0x3ae2); + re_mdio_write(sc, 0x06, 0x8604); + re_mdio_write(sc, 0x06, 0xe386); + re_mdio_write(sc, 0x06, 0x05ef); + re_mdio_write(sc, 0x06, 0x65e2); + re_mdio_write(sc, 0x06, 0x8606); + re_mdio_write(sc, 0x06, 0xe386); + re_mdio_write(sc, 0x06, 0x071b); + re_mdio_write(sc, 0x06, 0x56aa); + re_mdio_write(sc, 0x06, 0x0eef); + re_mdio_write(sc, 0x06, 0x56e6); + re_mdio_write(sc, 0x06, 0x8606); + re_mdio_write(sc, 0x06, 0xe786); + re_mdio_write(sc, 0x06, 0x07e2); + re_mdio_write(sc, 0x06, 0x8609); + re_mdio_write(sc, 0x06, 0xe686); + re_mdio_write(sc, 0x06, 0x08e0); + re_mdio_write(sc, 0x06, 0x8609); + re_mdio_write(sc, 0x06, 0xa000); + re_mdio_write(sc, 0x06, 0x07ee); + re_mdio_write(sc, 0x06, 0x860a); + re_mdio_write(sc, 0x06, 0x03af); + re_mdio_write(sc, 0x06, 0x8369); + re_mdio_write(sc, 0x06, 0x0224); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x2426); + re_mdio_write(sc, 0x06, 0xae48); + re_mdio_write(sc, 0x06, 0xa003); + re_mdio_write(sc, 0x06, 0x21e0); + re_mdio_write(sc, 0x06, 0x8608); + re_mdio_write(sc, 0x06, 0xe186); + re_mdio_write(sc, 0x06, 0x091b); + re_mdio_write(sc, 0x06, 0x019e); + re_mdio_write(sc, 0x06, 0x0caa); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x249d); + re_mdio_write(sc, 0x06, 0xaee7); + re_mdio_write(sc, 0x06, 0x0224); + re_mdio_write(sc, 0x06, 0x8eae); + re_mdio_write(sc, 0x06, 0xe2ee); + re_mdio_write(sc, 0x06, 0x860a); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0x860b); + re_mdio_write(sc, 0x06, 0x00af); + re_mdio_write(sc, 0x06, 0x8369); + re_mdio_write(sc, 0x06, 0xa004); + re_mdio_write(sc, 0x06, 0x15e0); + re_mdio_write(sc, 0x06, 0x860b); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x341b); + re_mdio_write(sc, 0x06, 0x109e); + re_mdio_write(sc, 0x06, 0x05aa); + re_mdio_write(sc, 0x06, 0x03af); + re_mdio_write(sc, 0x06, 0x8383); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0a05); + re_mdio_write(sc, 0x06, 0xae0c); + re_mdio_write(sc, 0x06, 0xa005); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x0702); + re_mdio_write(sc, 0x06, 0x2309); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0a00); + re_mdio_write(sc, 0x06, 0xfeef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xfbe0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x22e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x23e2); + re_mdio_write(sc, 0x06, 0xe036); + re_mdio_write(sc, 0x06, 0xe3e0); + re_mdio_write(sc, 0x06, 0x375a); + re_mdio_write(sc, 0x06, 0xc40d); + re_mdio_write(sc, 0x06, 0x0158); + re_mdio_write(sc, 0x06, 0x021e); + re_mdio_write(sc, 0x06, 0x20e3); + re_mdio_write(sc, 0x06, 0x8ae7); + re_mdio_write(sc, 0x06, 0xac31); + re_mdio_write(sc, 0x06, 0x60ac); + re_mdio_write(sc, 0x06, 0x3a08); + re_mdio_write(sc, 0x06, 0xac3e); + re_mdio_write(sc, 0x06, 0x26ae); + re_mdio_write(sc, 0x06, 0x67af); + re_mdio_write(sc, 0x06, 0x84db); + re_mdio_write(sc, 0x06, 0xad37); + re_mdio_write(sc, 0x06, 0x61e0); + re_mdio_write(sc, 0x06, 0x8ae8); + re_mdio_write(sc, 0x06, 0x10e4); + re_mdio_write(sc, 0x06, 0x8ae8); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0xe91b); + re_mdio_write(sc, 0x06, 0x109e); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x51d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x863b); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50ee); + re_mdio_write(sc, 0x06, 0x8ae8); + re_mdio_write(sc, 0x06, 0x00ae); + re_mdio_write(sc, 0x06, 0x43ad); + re_mdio_write(sc, 0x06, 0x3627); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xeee1); + re_mdio_write(sc, 0x06, 0x8aef); + re_mdio_write(sc, 0x06, 0xef74); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xeae1); + re_mdio_write(sc, 0x06, 0x8aeb); + re_mdio_write(sc, 0x06, 0x1b74); + re_mdio_write(sc, 0x06, 0x9e2e); + re_mdio_write(sc, 0x06, 0x14e4); + re_mdio_write(sc, 0x06, 0x8aea); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0xebef); + re_mdio_write(sc, 0x06, 0x74e0); + re_mdio_write(sc, 0x06, 0x8aee); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0xef1b); + re_mdio_write(sc, 0x06, 0x479e); + re_mdio_write(sc, 0x06, 0x0fae); + re_mdio_write(sc, 0x06, 0x19ee); + re_mdio_write(sc, 0x06, 0x8aea); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8aeb); + re_mdio_write(sc, 0x06, 0x00ae); + re_mdio_write(sc, 0x06, 0x0fac); + re_mdio_write(sc, 0x06, 0x390c); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x3b02); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xe800); + re_mdio_write(sc, 0x06, 0xe68a); + re_mdio_write(sc, 0x06, 0xe7ff); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x2358); + re_mdio_write(sc, 0x06, 0xc4e1); + re_mdio_write(sc, 0x06, 0x8b6e); + re_mdio_write(sc, 0x06, 0x1f10); + re_mdio_write(sc, 0x06, 0x9e24); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x6ead); + re_mdio_write(sc, 0x06, 0x2218); + re_mdio_write(sc, 0x06, 0xac27); + re_mdio_write(sc, 0x06, 0x0dac); + re_mdio_write(sc, 0x06, 0x2605); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x8fae); + re_mdio_write(sc, 0x06, 0x1302); + re_mdio_write(sc, 0x06, 0x03c8); + re_mdio_write(sc, 0x06, 0xae0e); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0xe102); + re_mdio_write(sc, 0x06, 0x8520); + re_mdio_write(sc, 0x06, 0xae06); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x8f02); + re_mdio_write(sc, 0x06, 0x8566); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x82ad); + re_mdio_write(sc, 0x06, 0x2737); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x4402); + re_mdio_write(sc, 0x06, 0x2f23); + re_mdio_write(sc, 0x06, 0xac28); + re_mdio_write(sc, 0x06, 0x2ed1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x8647); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50bf); + re_mdio_write(sc, 0x06, 0x8641); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x23e5); + re_mdio_write(sc, 0x06, 0x8af0); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x22e1); + re_mdio_write(sc, 0x06, 0xe023); + re_mdio_write(sc, 0x06, 0xac2e); + re_mdio_write(sc, 0x06, 0x04d1); + re_mdio_write(sc, 0x06, 0x01ae); + re_mdio_write(sc, 0x06, 0x02d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x8641); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50d1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x8644); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x4702); + re_mdio_write(sc, 0x06, 0x2f23); + re_mdio_write(sc, 0x06, 0xad28); + re_mdio_write(sc, 0x06, 0x19d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x8644); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x50e1); + re_mdio_write(sc, 0x06, 0x8af0); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x4102); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x4702); + re_mdio_write(sc, 0x06, 0x2f50); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0xfee1); + re_mdio_write(sc, 0x06, 0xe2ff); + re_mdio_write(sc, 0x06, 0xad2e); + re_mdio_write(sc, 0x06, 0x63e0); + re_mdio_write(sc, 0x06, 0xe038); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x39ad); + re_mdio_write(sc, 0x06, 0x2f10); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x34e1); + re_mdio_write(sc, 0x06, 0xe035); + re_mdio_write(sc, 0x06, 0xf726); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0x34e5); + re_mdio_write(sc, 0x06, 0xe035); + re_mdio_write(sc, 0x06, 0xae0e); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0xd6e1); + re_mdio_write(sc, 0x06, 0xe2d7); + re_mdio_write(sc, 0x06, 0xf728); + re_mdio_write(sc, 0x06, 0xe4e2); + re_mdio_write(sc, 0x06, 0xd6e5); + re_mdio_write(sc, 0x06, 0xe2d7); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0x34e1); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xf72b); + re_mdio_write(sc, 0x06, 0xe4e2); + re_mdio_write(sc, 0x06, 0x34e5); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xd07d); + re_mdio_write(sc, 0x06, 0xb0fe); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0x34e1); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xf62b); + re_mdio_write(sc, 0x06, 0xe4e2); + re_mdio_write(sc, 0x06, 0x34e5); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x34e1); + re_mdio_write(sc, 0x06, 0xe035); + re_mdio_write(sc, 0x06, 0xf626); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0x34e5); + re_mdio_write(sc, 0x06, 0xe035); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0xd6e1); + re_mdio_write(sc, 0x06, 0xe2d7); + re_mdio_write(sc, 0x06, 0xf628); + re_mdio_write(sc, 0x06, 0xe4e2); + re_mdio_write(sc, 0x06, 0xd6e5); + re_mdio_write(sc, 0x06, 0xe2d7); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xae20); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0xa725); + re_mdio_write(sc, 0x06, 0xe50a); + re_mdio_write(sc, 0x06, 0x1de5); + re_mdio_write(sc, 0x06, 0x0a2c); + re_mdio_write(sc, 0x06, 0xe50a); + re_mdio_write(sc, 0x06, 0x6de5); + re_mdio_write(sc, 0x06, 0x0a1d); + re_mdio_write(sc, 0x06, 0xe50a); + re_mdio_write(sc, 0x06, 0x1ce5); + re_mdio_write(sc, 0x06, 0x0a2d); + re_mdio_write(sc, 0x06, 0xa755); + re_mdio_write(sc, 0x06, 0x00e2); + re_mdio_write(sc, 0x06, 0x3488); + re_mdio_write(sc, 0x06, 0xe200); + re_mdio_write(sc, 0x06, 0xcce2); + re_mdio_write(sc, 0x06, 0x0055); + re_mdio_write(sc, 0x06, 0xe020); + re_mdio_write(sc, 0x06, 0x55e2); + re_mdio_write(sc, 0x06, 0xd600); + re_mdio_write(sc, 0x06, 0xe24a); + PhyRegValue = re_mdio_read(sc, 0x01); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x01, PhyRegValue); + PhyRegValue = re_mdio_read(sc, 0x00); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x00, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0005); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x00); + if (PhyRegValue & BIT_7) + break; + } + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + if (sc->RequiredSecLanDonglePatch) + PhyRegValue &= ~(BIT_2); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + } +} - switch (sc->re_type) { - case MACFG_59: - re_eri_write(sc, 0x1EA, 1, 0xFA, ERIAR_ExGMAC); +static void re_set_phy_mcu_8168evl_1(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + int i; - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - data = MP_ReadPhyUshort(sc, 0x10); - if (data & BIT_10) { - MP_WritePhyUshort(sc, 0x1F, 0x0A42); - data = MP_ReadPhyUshort(sc, 0x16); - data &= ~(BIT_1); - MP_WritePhyUshort(sc, 0x16, data); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + PhyRegValue= re_mdio_read(sc, 0x15); + PhyRegValue &= ~BIT_12; + re_mdio_write(sc, 0x15, PhyRegValue); + DELAY(200); + DELAY(200); + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + if ((PhyRegValue & BIT_11) == 0x0000) { + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x17, PhyRegValue); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x17); + if (PhyRegValue & BIT_11) + break; + } } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0A42); - data = MP_ReadPhyUshort(sc, 0x16); - data |= BIT_1; - MP_WritePhyUshort(sc, 0x16, data); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue |= BIT_11; + re_mdio_write(sc, 0x17,PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1E, 0x002C); + re_mdio_write(sc, 0x1B, 0x5000); + re_mdio_write(sc, 0x1E, 0x002d); + re_mdio_write(sc, 0x19, 0x0004); + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x1f, 0x0000); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue= re_mdio_read(sc, 0x1E); + if ((PhyRegValue& 0x03FF) == 0x0014) + break; } - MP_WritePhyUshort(sc, 0x1F, 0x0000); - break; - case MACFG_60: - data = MP_ReadMcuAccessRegWord(sc, 0xE052); - data |= BIT_0; - MP_WriteMcuAccessRegWord(sc, 0xE052, data); - data = MP_ReadMcuAccessRegWord(sc, 0xE056); - data &= 0xFF0F; - data |= (BIT_4 | BIT_5 | BIT_6); - MP_WriteMcuAccessRegWord(sc, 0xE056, data); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - data = MP_ReadPhyUshort(sc, 0x10); - if (data & BIT_10) { - MP_WritePhyUshort(sc, 0x1F, 0x0A42); - data = MP_ReadPhyUshort(sc, 0x16); - data &= ~(BIT_1); - MP_WritePhyUshort(sc, 0x16, data); + re_mdio_write(sc, 0x1f, 0x0005); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue= re_mdio_read(sc, 0x07); + if ((PhyRegValue& BIT_5) == 0) + break; } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0A42); - data = MP_ReadPhyUshort(sc, 0x16); - data |= BIT_1; - MP_WritePhyUshort(sc, 0x16, data); + PhyRegValue = re_mdio_read(sc, 0x07); + if (PhyRegValue & BIT_5) { + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x00a1); + re_mdio_write(sc, 0x17, 0x1000); + re_mdio_write(sc, 0x17, 0x0000); + re_mdio_write(sc, 0x17, 0x2000); + re_mdio_write(sc, 0x1e, 0x002f); + re_mdio_write(sc, 0x18, 0x9bfb); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x07, 0x0000); + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x1f, 0x0000); + } + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + PhyRegValue = re_mdio_read(sc, 0x00); + PhyRegValue &= ~BIT_7; + re_mdio_write(sc, 0x00, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0307); + re_mdio_write(sc, 0x15, 0x0000); + re_mdio_write(sc, 0x19, 0x407d); + re_mdio_write(sc, 0x15, 0x0001); + re_mdio_write(sc, 0x19, 0x440f); + re_mdio_write(sc, 0x15, 0x0002); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0003); + re_mdio_write(sc, 0x19, 0x6c03); + re_mdio_write(sc, 0x15, 0x0004); + re_mdio_write(sc, 0x19, 0xc4d5); + re_mdio_write(sc, 0x15, 0x0005); + re_mdio_write(sc, 0x19, 0x00ff); + re_mdio_write(sc, 0x15, 0x0006); + re_mdio_write(sc, 0x19, 0x74f0); + re_mdio_write(sc, 0x15, 0x0007); + re_mdio_write(sc, 0x19, 0x4880); + re_mdio_write(sc, 0x15, 0x0008); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x0009); + re_mdio_write(sc, 0x19, 0x4800); + re_mdio_write(sc, 0x15, 0x000a); + re_mdio_write(sc, 0x19, 0x5000); + re_mdio_write(sc, 0x15, 0x000b); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x000c); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x000d); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x15, 0x000e); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x000f); + re_mdio_write(sc, 0x19, 0x7010); + re_mdio_write(sc, 0x15, 0x0010); + re_mdio_write(sc, 0x19, 0x6804); + re_mdio_write(sc, 0x15, 0x0011); + re_mdio_write(sc, 0x19, 0x64a0); + re_mdio_write(sc, 0x15, 0x0012); + re_mdio_write(sc, 0x19, 0x63da); + re_mdio_write(sc, 0x15, 0x0013); + re_mdio_write(sc, 0x19, 0x63d8); + re_mdio_write(sc, 0x15, 0x0014); + re_mdio_write(sc, 0x19, 0x6f05); + re_mdio_write(sc, 0x15, 0x0015); + re_mdio_write(sc, 0x19, 0x5420); + re_mdio_write(sc, 0x15, 0x0016); + re_mdio_write(sc, 0x19, 0x58ce); + re_mdio_write(sc, 0x15, 0x0017); + re_mdio_write(sc, 0x19, 0x5cf3); + re_mdio_write(sc, 0x15, 0x0018); + re_mdio_write(sc, 0x19, 0xb600); + re_mdio_write(sc, 0x15, 0x0019); + re_mdio_write(sc, 0x19, 0xc659); + re_mdio_write(sc, 0x15, 0x001a); + re_mdio_write(sc, 0x19, 0x0018); + re_mdio_write(sc, 0x15, 0x001b); + re_mdio_write(sc, 0x19, 0xc403); + re_mdio_write(sc, 0x15, 0x001c); + re_mdio_write(sc, 0x19, 0x0016); + re_mdio_write(sc, 0x15, 0x001d); + re_mdio_write(sc, 0x19, 0xaa05); + re_mdio_write(sc, 0x15, 0x001e); + re_mdio_write(sc, 0x19, 0xc503); + re_mdio_write(sc, 0x15, 0x001f); + re_mdio_write(sc, 0x19, 0x0003); + re_mdio_write(sc, 0x15, 0x0020); + re_mdio_write(sc, 0x19, 0x89f8); + re_mdio_write(sc, 0x15, 0x0021); + re_mdio_write(sc, 0x19, 0x32ae); + re_mdio_write(sc, 0x15, 0x0022); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0023); + re_mdio_write(sc, 0x19, 0x6c03); + re_mdio_write(sc, 0x15, 0x0024); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0025); + re_mdio_write(sc, 0x19, 0x6801); + re_mdio_write(sc, 0x15, 0x0026); + re_mdio_write(sc, 0x19, 0x66a0); + re_mdio_write(sc, 0x15, 0x0027); + re_mdio_write(sc, 0x19, 0xa300); + re_mdio_write(sc, 0x15, 0x0028); + re_mdio_write(sc, 0x19, 0x64a0); + re_mdio_write(sc, 0x15, 0x0029); + re_mdio_write(sc, 0x19, 0x76f0); + re_mdio_write(sc, 0x15, 0x002a); + re_mdio_write(sc, 0x19, 0x7670); + re_mdio_write(sc, 0x15, 0x002b); + re_mdio_write(sc, 0x19, 0x7630); + re_mdio_write(sc, 0x15, 0x002c); + re_mdio_write(sc, 0x19, 0x31a6); + re_mdio_write(sc, 0x15, 0x002d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x002e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x002f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0030); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0031); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0032); + re_mdio_write(sc, 0x19, 0x4801); + re_mdio_write(sc, 0x15, 0x0033); + re_mdio_write(sc, 0x19, 0x6803); + re_mdio_write(sc, 0x15, 0x0034); + re_mdio_write(sc, 0x19, 0x66a1); + re_mdio_write(sc, 0x15, 0x0035); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0036); + re_mdio_write(sc, 0x19, 0x6c03); + re_mdio_write(sc, 0x15, 0x0037); + re_mdio_write(sc, 0x19, 0xa300); + re_mdio_write(sc, 0x15, 0x0038); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x0039); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x003a); + re_mdio_write(sc, 0x19, 0x74f8); + re_mdio_write(sc, 0x15, 0x003b); + re_mdio_write(sc, 0x19, 0x63d0); + re_mdio_write(sc, 0x15, 0x003c); + re_mdio_write(sc, 0x19, 0x7ff0); + re_mdio_write(sc, 0x15, 0x003d); + re_mdio_write(sc, 0x19, 0x77f0); + re_mdio_write(sc, 0x15, 0x003e); + re_mdio_write(sc, 0x19, 0x7ff0); + re_mdio_write(sc, 0x15, 0x003f); + re_mdio_write(sc, 0x19, 0x7750); + re_mdio_write(sc, 0x15, 0x0040); + re_mdio_write(sc, 0x19, 0x63d8); + re_mdio_write(sc, 0x15, 0x0041); + re_mdio_write(sc, 0x19, 0x7cf0); + re_mdio_write(sc, 0x15, 0x0042); + re_mdio_write(sc, 0x19, 0x7708); + re_mdio_write(sc, 0x15, 0x0043); + re_mdio_write(sc, 0x19, 0xa654); + re_mdio_write(sc, 0x15, 0x0044); + re_mdio_write(sc, 0x19, 0x304a); + re_mdio_write(sc, 0x15, 0x0045); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0046); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0047); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0048); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0049); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x004a); + re_mdio_write(sc, 0x19, 0x4802); + re_mdio_write(sc, 0x15, 0x004b); + re_mdio_write(sc, 0x19, 0x4003); + re_mdio_write(sc, 0x15, 0x004c); + re_mdio_write(sc, 0x19, 0x4440); + re_mdio_write(sc, 0x15, 0x004d); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x004e); + re_mdio_write(sc, 0x19, 0x6481); + re_mdio_write(sc, 0x15, 0x004f); + re_mdio_write(sc, 0x19, 0x9d00); + re_mdio_write(sc, 0x15, 0x0050); + re_mdio_write(sc, 0x19, 0x63e8); + re_mdio_write(sc, 0x15, 0x0051); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x0052); + re_mdio_write(sc, 0x19, 0x5900); + re_mdio_write(sc, 0x15, 0x0053); + re_mdio_write(sc, 0x19, 0x63f8); + re_mdio_write(sc, 0x15, 0x0054); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x0055); + re_mdio_write(sc, 0x19, 0x3116); + re_mdio_write(sc, 0x15, 0x0056); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0057); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0058); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0059); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x005a); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x005b); + re_mdio_write(sc, 0x19, 0x6c03); + re_mdio_write(sc, 0x15, 0x005c); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x005d); + re_mdio_write(sc, 0x19, 0x6000); + re_mdio_write(sc, 0x15, 0x005e); + re_mdio_write(sc, 0x19, 0x59ce); + re_mdio_write(sc, 0x15, 0x005f); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x0060); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x0061); + re_mdio_write(sc, 0x19, 0x72b0); + re_mdio_write(sc, 0x15, 0x0062); + re_mdio_write(sc, 0x19, 0x400e); + re_mdio_write(sc, 0x15, 0x0063); + re_mdio_write(sc, 0x19, 0x4440); + re_mdio_write(sc, 0x15, 0x0064); + re_mdio_write(sc, 0x19, 0x9d00); + re_mdio_write(sc, 0x15, 0x0065); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x15, 0x0066); + re_mdio_write(sc, 0x19, 0x70b0); + re_mdio_write(sc, 0x15, 0x0067); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0068); + re_mdio_write(sc, 0x19, 0x6008); + re_mdio_write(sc, 0x15, 0x0069); + re_mdio_write(sc, 0x19, 0x7cf0); + re_mdio_write(sc, 0x15, 0x006a); + re_mdio_write(sc, 0x19, 0x7750); + re_mdio_write(sc, 0x15, 0x006b); + re_mdio_write(sc, 0x19, 0x4007); + re_mdio_write(sc, 0x15, 0x006c); + re_mdio_write(sc, 0x19, 0x4500); + re_mdio_write(sc, 0x15, 0x006d); + re_mdio_write(sc, 0x19, 0x4023); + re_mdio_write(sc, 0x15, 0x006e); + re_mdio_write(sc, 0x19, 0x4580); + re_mdio_write(sc, 0x15, 0x006f); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x0070); + re_mdio_write(sc, 0x19, 0xcd78); + re_mdio_write(sc, 0x15, 0x0071); + re_mdio_write(sc, 0x19, 0x0003); + re_mdio_write(sc, 0x15, 0x0072); + re_mdio_write(sc, 0x19, 0xbe02); + re_mdio_write(sc, 0x15, 0x0073); + re_mdio_write(sc, 0x19, 0x3070); + re_mdio_write(sc, 0x15, 0x0074); + re_mdio_write(sc, 0x19, 0x7cf0); + re_mdio_write(sc, 0x15, 0x0075); + re_mdio_write(sc, 0x19, 0x77f0); + re_mdio_write(sc, 0x15, 0x0076); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x0077); + re_mdio_write(sc, 0x19, 0x4007); + re_mdio_write(sc, 0x15, 0x0078); + re_mdio_write(sc, 0x19, 0x4500); + re_mdio_write(sc, 0x15, 0x0079); + re_mdio_write(sc, 0x19, 0x4023); + re_mdio_write(sc, 0x15, 0x007a); + re_mdio_write(sc, 0x19, 0x4580); + re_mdio_write(sc, 0x15, 0x007b); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x007c); + re_mdio_write(sc, 0x19, 0xce80); + re_mdio_write(sc, 0x15, 0x007d); + re_mdio_write(sc, 0x19, 0x0004); + re_mdio_write(sc, 0x15, 0x007e); + re_mdio_write(sc, 0x19, 0xce80); + re_mdio_write(sc, 0x15, 0x007f); + re_mdio_write(sc, 0x19, 0x0002); + re_mdio_write(sc, 0x15, 0x0080); + re_mdio_write(sc, 0x19, 0x307c); + re_mdio_write(sc, 0x15, 0x0081); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x0082); + re_mdio_write(sc, 0x19, 0x480f); + re_mdio_write(sc, 0x15, 0x0083); + re_mdio_write(sc, 0x19, 0x6802); + re_mdio_write(sc, 0x15, 0x0084); + re_mdio_write(sc, 0x19, 0x6680); + re_mdio_write(sc, 0x15, 0x0085); + re_mdio_write(sc, 0x19, 0x7c10); + re_mdio_write(sc, 0x15, 0x0086); + re_mdio_write(sc, 0x19, 0x6010); + re_mdio_write(sc, 0x15, 0x0087); + re_mdio_write(sc, 0x19, 0x400a); + re_mdio_write(sc, 0x15, 0x0088); + re_mdio_write(sc, 0x19, 0x4580); + re_mdio_write(sc, 0x15, 0x0089); + re_mdio_write(sc, 0x19, 0x9e00); + re_mdio_write(sc, 0x15, 0x008a); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x008b); + re_mdio_write(sc, 0x19, 0x5800); + re_mdio_write(sc, 0x15, 0x008c); + re_mdio_write(sc, 0x19, 0x63c8); + re_mdio_write(sc, 0x15, 0x008d); + re_mdio_write(sc, 0x19, 0x63d8); + re_mdio_write(sc, 0x15, 0x008e); + re_mdio_write(sc, 0x19, 0x66a0); + re_mdio_write(sc, 0x15, 0x008f); + re_mdio_write(sc, 0x19, 0x8300); + re_mdio_write(sc, 0x15, 0x0090); + re_mdio_write(sc, 0x19, 0x7ff0); + re_mdio_write(sc, 0x15, 0x0091); + re_mdio_write(sc, 0x19, 0x74f0); + re_mdio_write(sc, 0x15, 0x0092); + re_mdio_write(sc, 0x19, 0x3006); + re_mdio_write(sc, 0x15, 0x0093); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0094); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0095); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0096); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0097); + re_mdio_write(sc, 0x19, 0x4803); + re_mdio_write(sc, 0x15, 0x0098); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0099); + re_mdio_write(sc, 0x19, 0x6c03); + re_mdio_write(sc, 0x15, 0x009a); + re_mdio_write(sc, 0x19, 0xa203); + re_mdio_write(sc, 0x15, 0x009b); + re_mdio_write(sc, 0x19, 0x64b1); + re_mdio_write(sc, 0x15, 0x009c); + re_mdio_write(sc, 0x19, 0x309e); + re_mdio_write(sc, 0x15, 0x009d); + re_mdio_write(sc, 0x19, 0x64b3); + re_mdio_write(sc, 0x15, 0x009e); + re_mdio_write(sc, 0x19, 0x4030); + re_mdio_write(sc, 0x15, 0x009f); + re_mdio_write(sc, 0x19, 0x440e); + re_mdio_write(sc, 0x15, 0x00a0); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x00a1); + re_mdio_write(sc, 0x19, 0x4419); + re_mdio_write(sc, 0x15, 0x00a2); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x00a3); + re_mdio_write(sc, 0x19, 0xc520); + re_mdio_write(sc, 0x15, 0x00a4); + re_mdio_write(sc, 0x19, 0x000b); + re_mdio_write(sc, 0x15, 0x00a5); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x00a6); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x00a7); + re_mdio_write(sc, 0x19, 0x58a4); + re_mdio_write(sc, 0x15, 0x00a8); + re_mdio_write(sc, 0x19, 0x63da); + re_mdio_write(sc, 0x15, 0x00a9); + re_mdio_write(sc, 0x19, 0x5cb0); + re_mdio_write(sc, 0x15, 0x00aa); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x00ab); + re_mdio_write(sc, 0x19, 0x72b0); + re_mdio_write(sc, 0x15, 0x00ac); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x15, 0x00ad); + re_mdio_write(sc, 0x19, 0x70b0); + re_mdio_write(sc, 0x15, 0x00ae); + re_mdio_write(sc, 0x19, 0x30b8); + re_mdio_write(sc, 0x15, 0x00AF); + re_mdio_write(sc, 0x19, 0x4060); + re_mdio_write(sc, 0x15, 0x00B0); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x00B1); + re_mdio_write(sc, 0x19, 0x7e00); + re_mdio_write(sc, 0x15, 0x00B2); + re_mdio_write(sc, 0x19, 0x72B0); + re_mdio_write(sc, 0x15, 0x00B3); + re_mdio_write(sc, 0x19, 0x7F00); + re_mdio_write(sc, 0x15, 0x00B4); + re_mdio_write(sc, 0x19, 0x73B0); + re_mdio_write(sc, 0x15, 0x00b5); + re_mdio_write(sc, 0x19, 0x58a0); + re_mdio_write(sc, 0x15, 0x00b6); + re_mdio_write(sc, 0x19, 0x63d2); + re_mdio_write(sc, 0x15, 0x00b7); + re_mdio_write(sc, 0x19, 0x5c00); + re_mdio_write(sc, 0x15, 0x00b8); + re_mdio_write(sc, 0x19, 0x5780); + re_mdio_write(sc, 0x15, 0x00b9); + re_mdio_write(sc, 0x19, 0xb60d); + re_mdio_write(sc, 0x15, 0x00ba); + re_mdio_write(sc, 0x19, 0x9bff); + re_mdio_write(sc, 0x15, 0x00bb); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x00bc); + re_mdio_write(sc, 0x19, 0x6001); + re_mdio_write(sc, 0x15, 0x00bd); + re_mdio_write(sc, 0x19, 0xc020); + re_mdio_write(sc, 0x15, 0x00be); + re_mdio_write(sc, 0x19, 0x002b); + re_mdio_write(sc, 0x15, 0x00bf); + re_mdio_write(sc, 0x19, 0xc137); + re_mdio_write(sc, 0x15, 0x00c0); + re_mdio_write(sc, 0x19, 0x0006); + re_mdio_write(sc, 0x15, 0x00c1); + re_mdio_write(sc, 0x19, 0x9af8); + re_mdio_write(sc, 0x15, 0x00c2); + re_mdio_write(sc, 0x19, 0x30c6); + re_mdio_write(sc, 0x15, 0x00c3); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00c4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00c5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00c6); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x00c7); + re_mdio_write(sc, 0x19, 0x70b0); + re_mdio_write(sc, 0x15, 0x00c8); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x00c9); + re_mdio_write(sc, 0x19, 0x4804); + re_mdio_write(sc, 0x15, 0x00ca); + re_mdio_write(sc, 0x19, 0x7c80); + re_mdio_write(sc, 0x15, 0x00cb); + re_mdio_write(sc, 0x19, 0x5c80); + re_mdio_write(sc, 0x15, 0x00cc); + re_mdio_write(sc, 0x19, 0x4010); + re_mdio_write(sc, 0x15, 0x00cd); + re_mdio_write(sc, 0x19, 0x4415); + re_mdio_write(sc, 0x15, 0x00ce); + re_mdio_write(sc, 0x19, 0x9b00); + re_mdio_write(sc, 0x15, 0x00cf); + re_mdio_write(sc, 0x19, 0x7f00); + re_mdio_write(sc, 0x15, 0x00d0); + re_mdio_write(sc, 0x19, 0x70b0); + re_mdio_write(sc, 0x15, 0x00d1); + re_mdio_write(sc, 0x19, 0x3177); + re_mdio_write(sc, 0x15, 0x00d2); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00d3); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00d4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00d5); + re_mdio_write(sc, 0x19, 0x4808); + re_mdio_write(sc, 0x15, 0x00d6); + re_mdio_write(sc, 0x19, 0x4007); + re_mdio_write(sc, 0x15, 0x00d7); + re_mdio_write(sc, 0x19, 0x4420); + re_mdio_write(sc, 0x15, 0x00d8); + re_mdio_write(sc, 0x19, 0x63d8); + re_mdio_write(sc, 0x15, 0x00d9); + re_mdio_write(sc, 0x19, 0xb608); + re_mdio_write(sc, 0x15, 0x00da); + re_mdio_write(sc, 0x19, 0xbcbd); + re_mdio_write(sc, 0x15, 0x00db); + re_mdio_write(sc, 0x19, 0xc60b); + re_mdio_write(sc, 0x15, 0x00dc); + re_mdio_write(sc, 0x19, 0x00fd); + re_mdio_write(sc, 0x15, 0x00dd); + re_mdio_write(sc, 0x19, 0x30e1); + re_mdio_write(sc, 0x15, 0x00de); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00df); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00e0); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00e1); + re_mdio_write(sc, 0x19, 0x4809); + re_mdio_write(sc, 0x15, 0x00e2); + re_mdio_write(sc, 0x19, 0x7e40); + re_mdio_write(sc, 0x15, 0x00e3); + re_mdio_write(sc, 0x19, 0x5a40); + re_mdio_write(sc, 0x15, 0x00e4); + re_mdio_write(sc, 0x19, 0x305a); + re_mdio_write(sc, 0x15, 0x00e5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00e6); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00e7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00e8); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00e9); + re_mdio_write(sc, 0x19, 0x480a); + re_mdio_write(sc, 0x15, 0x00ea); + re_mdio_write(sc, 0x19, 0x5820); + re_mdio_write(sc, 0x15, 0x00eb); + re_mdio_write(sc, 0x19, 0x6c03); + re_mdio_write(sc, 0x15, 0x00ec); + re_mdio_write(sc, 0x19, 0xb60a); + re_mdio_write(sc, 0x15, 0x00ed); + re_mdio_write(sc, 0x19, 0xda07); + re_mdio_write(sc, 0x15, 0x00ee); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x00ef); + re_mdio_write(sc, 0x19, 0xc60b); + re_mdio_write(sc, 0x15, 0x00f0); + re_mdio_write(sc, 0x19, 0x00fc); + re_mdio_write(sc, 0x15, 0x00f1); + re_mdio_write(sc, 0x19, 0x30f6); + re_mdio_write(sc, 0x15, 0x00f2); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00f3); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00f4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00f5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x00f6); + re_mdio_write(sc, 0x19, 0x4408); + re_mdio_write(sc, 0x15, 0x00f7); + re_mdio_write(sc, 0x19, 0x480b); + re_mdio_write(sc, 0x15, 0x00f8); + re_mdio_write(sc, 0x19, 0x6f03); + re_mdio_write(sc, 0x15, 0x00f9); + re_mdio_write(sc, 0x19, 0x405f); + re_mdio_write(sc, 0x15, 0x00fa); + re_mdio_write(sc, 0x19, 0x4448); + re_mdio_write(sc, 0x15, 0x00fb); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x00fc); + re_mdio_write(sc, 0x19, 0x4468); + re_mdio_write(sc, 0x15, 0x00fd); + re_mdio_write(sc, 0x19, 0x9c03); + re_mdio_write(sc, 0x15, 0x00fe); + re_mdio_write(sc, 0x19, 0x6f07); + re_mdio_write(sc, 0x15, 0x00ff); + re_mdio_write(sc, 0x19, 0x58a0); + re_mdio_write(sc, 0x15, 0x0100); + re_mdio_write(sc, 0x19, 0xd6d1); + re_mdio_write(sc, 0x15, 0x0101); + re_mdio_write(sc, 0x19, 0x0004); + re_mdio_write(sc, 0x15, 0x0102); + re_mdio_write(sc, 0x19, 0xc137); + re_mdio_write(sc, 0x15, 0x0103); + re_mdio_write(sc, 0x19, 0x0002); + re_mdio_write(sc, 0x15, 0x0104); + re_mdio_write(sc, 0x19, 0xa0e5); + re_mdio_write(sc, 0x15, 0x0105); + re_mdio_write(sc, 0x19, 0x9df8); + re_mdio_write(sc, 0x15, 0x0106); + re_mdio_write(sc, 0x19, 0x30c6); + re_mdio_write(sc, 0x15, 0x0107); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0108); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0109); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x010a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x010b); + re_mdio_write(sc, 0x19, 0x4808); + re_mdio_write(sc, 0x15, 0x010c); + re_mdio_write(sc, 0x19, 0xc32d); + re_mdio_write(sc, 0x15, 0x010d); + re_mdio_write(sc, 0x19, 0x0003); + re_mdio_write(sc, 0x15, 0x010e); + re_mdio_write(sc, 0x19, 0xc8b3); + re_mdio_write(sc, 0x15, 0x010f); + re_mdio_write(sc, 0x19, 0x00fc); + re_mdio_write(sc, 0x15, 0x0110); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x0111); + re_mdio_write(sc, 0x19, 0x3116); + re_mdio_write(sc, 0x15, 0x0112); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0113); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0114); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0115); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0116); + re_mdio_write(sc, 0x19, 0x4803); + re_mdio_write(sc, 0x15, 0x0117); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0118); + re_mdio_write(sc, 0x19, 0x6c02); + re_mdio_write(sc, 0x15, 0x0119); + re_mdio_write(sc, 0x19, 0x7c04); + re_mdio_write(sc, 0x15, 0x011a); + re_mdio_write(sc, 0x19, 0x6000); + re_mdio_write(sc, 0x15, 0x011b); + re_mdio_write(sc, 0x19, 0x5cf7); + re_mdio_write(sc, 0x15, 0x011c); + re_mdio_write(sc, 0x19, 0x7c2a); + re_mdio_write(sc, 0x15, 0x011d); + re_mdio_write(sc, 0x19, 0x5800); + re_mdio_write(sc, 0x15, 0x011e); + re_mdio_write(sc, 0x19, 0x5400); + re_mdio_write(sc, 0x15, 0x011f); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0120); + re_mdio_write(sc, 0x19, 0x74f0); + re_mdio_write(sc, 0x15, 0x0121); + re_mdio_write(sc, 0x19, 0x4019); + re_mdio_write(sc, 0x15, 0x0122); + re_mdio_write(sc, 0x19, 0x440d); + re_mdio_write(sc, 0x15, 0x0123); + re_mdio_write(sc, 0x19, 0xb6c1); + re_mdio_write(sc, 0x15, 0x0124); + re_mdio_write(sc, 0x19, 0xc05b); + re_mdio_write(sc, 0x15, 0x0125); + re_mdio_write(sc, 0x19, 0x00bf); + re_mdio_write(sc, 0x15, 0x0126); + re_mdio_write(sc, 0x19, 0xc025); + re_mdio_write(sc, 0x15, 0x0127); + re_mdio_write(sc, 0x19, 0x00bd); + re_mdio_write(sc, 0x15, 0x0128); + re_mdio_write(sc, 0x19, 0xc603); + re_mdio_write(sc, 0x15, 0x0129); + re_mdio_write(sc, 0x19, 0x00bb); + re_mdio_write(sc, 0x15, 0x012a); + re_mdio_write(sc, 0x19, 0x8805); + re_mdio_write(sc, 0x15, 0x012b); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x012c); + re_mdio_write(sc, 0x19, 0x4001); + re_mdio_write(sc, 0x15, 0x012d); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x012e); + re_mdio_write(sc, 0x19, 0xa3dd); + re_mdio_write(sc, 0x15, 0x012f); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0130); + re_mdio_write(sc, 0x19, 0x6c03); + re_mdio_write(sc, 0x15, 0x0131); + re_mdio_write(sc, 0x19, 0x8407); + re_mdio_write(sc, 0x15, 0x0132); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0133); + re_mdio_write(sc, 0x19, 0x6c02); + re_mdio_write(sc, 0x15, 0x0134); + re_mdio_write(sc, 0x19, 0xd9b8); + re_mdio_write(sc, 0x15, 0x0135); + re_mdio_write(sc, 0x19, 0x0003); + re_mdio_write(sc, 0x15, 0x0136); + re_mdio_write(sc, 0x19, 0xc240); + re_mdio_write(sc, 0x15, 0x0137); + re_mdio_write(sc, 0x19, 0x0015); + re_mdio_write(sc, 0x15, 0x0138); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0139); + re_mdio_write(sc, 0x19, 0x6c02); + re_mdio_write(sc, 0x15, 0x013a); + re_mdio_write(sc, 0x19, 0x9ae9); + re_mdio_write(sc, 0x15, 0x013b); + re_mdio_write(sc, 0x19, 0x3140); + re_mdio_write(sc, 0x15, 0x013c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x013d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x013e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x013f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0140); + re_mdio_write(sc, 0x19, 0x4807); + re_mdio_write(sc, 0x15, 0x0141); + re_mdio_write(sc, 0x19, 0x4004); + re_mdio_write(sc, 0x15, 0x0142); + re_mdio_write(sc, 0x19, 0x4410); + re_mdio_write(sc, 0x15, 0x0143); + re_mdio_write(sc, 0x19, 0x7c0c); + re_mdio_write(sc, 0x15, 0x0144); + re_mdio_write(sc, 0x19, 0x600c); + re_mdio_write(sc, 0x15, 0x0145); + re_mdio_write(sc, 0x19, 0x9b00); + re_mdio_write(sc, 0x15, 0x0146); + re_mdio_write(sc, 0x19, 0xa68f); + re_mdio_write(sc, 0x15, 0x0147); + re_mdio_write(sc, 0x19, 0x3116); + re_mdio_write(sc, 0x15, 0x0148); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0149); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x014a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x014b); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x014c); + re_mdio_write(sc, 0x19, 0x4804); + re_mdio_write(sc, 0x15, 0x014d); + re_mdio_write(sc, 0x19, 0x54c0); + re_mdio_write(sc, 0x15, 0x014e); + re_mdio_write(sc, 0x19, 0xb703); + re_mdio_write(sc, 0x15, 0x014f); + re_mdio_write(sc, 0x19, 0x5cff); + re_mdio_write(sc, 0x15, 0x0150); + re_mdio_write(sc, 0x19, 0x315f); + re_mdio_write(sc, 0x15, 0x0151); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0152); + re_mdio_write(sc, 0x19, 0x74f8); + re_mdio_write(sc, 0x15, 0x0153); + re_mdio_write(sc, 0x19, 0x6421); + re_mdio_write(sc, 0x15, 0x0154); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0155); + re_mdio_write(sc, 0x19, 0x6000); + re_mdio_write(sc, 0x15, 0x0156); + re_mdio_write(sc, 0x19, 0x4003); + re_mdio_write(sc, 0x15, 0x0157); + re_mdio_write(sc, 0x19, 0x4418); + re_mdio_write(sc, 0x15, 0x0158); + re_mdio_write(sc, 0x19, 0x9b00); + re_mdio_write(sc, 0x15, 0x0159); + re_mdio_write(sc, 0x19, 0x6461); + re_mdio_write(sc, 0x15, 0x015a); + re_mdio_write(sc, 0x19, 0x64e1); + re_mdio_write(sc, 0x15, 0x015b); + re_mdio_write(sc, 0x19, 0x7c20); + re_mdio_write(sc, 0x15, 0x015c); + re_mdio_write(sc, 0x19, 0x5820); + re_mdio_write(sc, 0x15, 0x015d); + re_mdio_write(sc, 0x19, 0x5ccf); + re_mdio_write(sc, 0x15, 0x015e); + re_mdio_write(sc, 0x19, 0x7050); + re_mdio_write(sc, 0x15, 0x015f); + re_mdio_write(sc, 0x19, 0xd9b8); + re_mdio_write(sc, 0x15, 0x0160); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x0161); + re_mdio_write(sc, 0x19, 0xdab1); + re_mdio_write(sc, 0x15, 0x0162); + re_mdio_write(sc, 0x19, 0x0015); + re_mdio_write(sc, 0x15, 0x0163); + re_mdio_write(sc, 0x19, 0xc244); + re_mdio_write(sc, 0x15, 0x0164); + re_mdio_write(sc, 0x19, 0x0013); + re_mdio_write(sc, 0x15, 0x0165); + re_mdio_write(sc, 0x19, 0xc021); + re_mdio_write(sc, 0x15, 0x0166); + re_mdio_write(sc, 0x19, 0x00f9); + re_mdio_write(sc, 0x15, 0x0167); + re_mdio_write(sc, 0x19, 0x3177); + re_mdio_write(sc, 0x15, 0x0168); + re_mdio_write(sc, 0x19, 0x5cf7); + re_mdio_write(sc, 0x15, 0x0169); + re_mdio_write(sc, 0x19, 0x4010); + re_mdio_write(sc, 0x15, 0x016a); + re_mdio_write(sc, 0x19, 0x4428); + re_mdio_write(sc, 0x15, 0x016b); + re_mdio_write(sc, 0x19, 0x9c00); + re_mdio_write(sc, 0x15, 0x016c); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x016d); + re_mdio_write(sc, 0x19, 0x6008); + re_mdio_write(sc, 0x15, 0x016e); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x016f); + re_mdio_write(sc, 0x19, 0x74f0); + re_mdio_write(sc, 0x15, 0x0170); + re_mdio_write(sc, 0x19, 0x6461); + re_mdio_write(sc, 0x15, 0x0171); + re_mdio_write(sc, 0x19, 0x6421); + re_mdio_write(sc, 0x15, 0x0172); + re_mdio_write(sc, 0x19, 0x64a1); + re_mdio_write(sc, 0x15, 0x0173); + re_mdio_write(sc, 0x19, 0x3116); + re_mdio_write(sc, 0x15, 0x0174); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0175); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0176); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0177); + re_mdio_write(sc, 0x19, 0x4805); + re_mdio_write(sc, 0x15, 0x0178); + re_mdio_write(sc, 0x19, 0xa103); + re_mdio_write(sc, 0x15, 0x0179); + re_mdio_write(sc, 0x19, 0x7c02); + re_mdio_write(sc, 0x15, 0x017a); + re_mdio_write(sc, 0x19, 0x6002); + re_mdio_write(sc, 0x15, 0x017b); + re_mdio_write(sc, 0x19, 0x7e00); + re_mdio_write(sc, 0x15, 0x017c); + re_mdio_write(sc, 0x19, 0x5400); + re_mdio_write(sc, 0x15, 0x017d); + re_mdio_write(sc, 0x19, 0x7c6b); + re_mdio_write(sc, 0x15, 0x017e); + re_mdio_write(sc, 0x19, 0x5c63); + re_mdio_write(sc, 0x15, 0x017f); + re_mdio_write(sc, 0x19, 0x407d); + re_mdio_write(sc, 0x15, 0x0180); + re_mdio_write(sc, 0x19, 0xa602); + re_mdio_write(sc, 0x15, 0x0181); + re_mdio_write(sc, 0x19, 0x4001); + re_mdio_write(sc, 0x15, 0x0182); + re_mdio_write(sc, 0x19, 0x4420); + re_mdio_write(sc, 0x15, 0x0183); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x0184); + re_mdio_write(sc, 0x19, 0x44a1); + re_mdio_write(sc, 0x15, 0x0185); + re_mdio_write(sc, 0x19, 0xd6e0); + re_mdio_write(sc, 0x15, 0x0186); + re_mdio_write(sc, 0x19, 0x0009); + re_mdio_write(sc, 0x15, 0x0187); + re_mdio_write(sc, 0x19, 0x9efe); + re_mdio_write(sc, 0x15, 0x0188); + re_mdio_write(sc, 0x19, 0x7c02); + re_mdio_write(sc, 0x15, 0x0189); + re_mdio_write(sc, 0x19, 0x6000); + re_mdio_write(sc, 0x15, 0x018a); + re_mdio_write(sc, 0x19, 0x9c00); + re_mdio_write(sc, 0x15, 0x018b); + re_mdio_write(sc, 0x19, 0x318f); + re_mdio_write(sc, 0x15, 0x018c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x018d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x018e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x018f); + re_mdio_write(sc, 0x19, 0x4806); + re_mdio_write(sc, 0x15, 0x0190); + re_mdio_write(sc, 0x19, 0x7c10); + re_mdio_write(sc, 0x15, 0x0191); + re_mdio_write(sc, 0x19, 0x5c10); + re_mdio_write(sc, 0x15, 0x0192); + re_mdio_write(sc, 0x19, 0x40fa); + re_mdio_write(sc, 0x15, 0x0193); + re_mdio_write(sc, 0x19, 0xa602); + re_mdio_write(sc, 0x15, 0x0194); + re_mdio_write(sc, 0x19, 0x4010); + re_mdio_write(sc, 0x15, 0x0195); + re_mdio_write(sc, 0x19, 0x4440); + re_mdio_write(sc, 0x15, 0x0196); + re_mdio_write(sc, 0x19, 0x9d00); + re_mdio_write(sc, 0x15, 0x0197); + re_mdio_write(sc, 0x19, 0x7c80); + re_mdio_write(sc, 0x15, 0x0198); + re_mdio_write(sc, 0x19, 0x6400); + re_mdio_write(sc, 0x15, 0x0199); + re_mdio_write(sc, 0x19, 0x4003); + re_mdio_write(sc, 0x15, 0x019a); + re_mdio_write(sc, 0x19, 0x4540); + re_mdio_write(sc, 0x15, 0x019b); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x019c); + re_mdio_write(sc, 0x19, 0x6008); + re_mdio_write(sc, 0x15, 0x019d); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x019e); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x019f); + re_mdio_write(sc, 0x19, 0x6400); + re_mdio_write(sc, 0x15, 0x01a0); + re_mdio_write(sc, 0x19, 0x7c80); + re_mdio_write(sc, 0x15, 0x01a1); + re_mdio_write(sc, 0x19, 0x6480); + re_mdio_write(sc, 0x15, 0x01a2); + re_mdio_write(sc, 0x19, 0x3140); + re_mdio_write(sc, 0x15, 0x01a3); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01a4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01a5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01a6); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x01a7); + re_mdio_write(sc, 0x19, 0x7c0b); + re_mdio_write(sc, 0x15, 0x01a8); + re_mdio_write(sc, 0x19, 0x6c01); + re_mdio_write(sc, 0x15, 0x01a9); + re_mdio_write(sc, 0x19, 0x64a8); + re_mdio_write(sc, 0x15, 0x01aa); + re_mdio_write(sc, 0x19, 0x6800); + re_mdio_write(sc, 0x15, 0x01ab); + re_mdio_write(sc, 0x19, 0x5cf0); + re_mdio_write(sc, 0x15, 0x01ac); + re_mdio_write(sc, 0x19, 0x588f); + re_mdio_write(sc, 0x15, 0x01ad); + re_mdio_write(sc, 0x19, 0xb628); + re_mdio_write(sc, 0x15, 0x01ae); + re_mdio_write(sc, 0x19, 0xc053); + re_mdio_write(sc, 0x15, 0x01af); + re_mdio_write(sc, 0x19, 0x0026); + re_mdio_write(sc, 0x15, 0x01b0); + re_mdio_write(sc, 0x19, 0xc02d); + re_mdio_write(sc, 0x15, 0x01b1); + re_mdio_write(sc, 0x19, 0x0024); + re_mdio_write(sc, 0x15, 0x01b2); + re_mdio_write(sc, 0x19, 0xc603); + re_mdio_write(sc, 0x15, 0x01b3); + re_mdio_write(sc, 0x19, 0x0022); + re_mdio_write(sc, 0x15, 0x01b4); + re_mdio_write(sc, 0x19, 0x8cf9); + re_mdio_write(sc, 0x15, 0x01b5); + re_mdio_write(sc, 0x19, 0x31ba); + re_mdio_write(sc, 0x15, 0x01b6); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01b7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01b8); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01b9); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01ba); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x01bb); + re_mdio_write(sc, 0x19, 0x5420); + re_mdio_write(sc, 0x15, 0x01bc); + re_mdio_write(sc, 0x19, 0x4811); + re_mdio_write(sc, 0x15, 0x01bd); + re_mdio_write(sc, 0x19, 0x5000); + re_mdio_write(sc, 0x15, 0x01be); + re_mdio_write(sc, 0x19, 0x4801); + re_mdio_write(sc, 0x15, 0x01bf); + re_mdio_write(sc, 0x19, 0x6800); + re_mdio_write(sc, 0x15, 0x01c0); + re_mdio_write(sc, 0x19, 0x31f5); + re_mdio_write(sc, 0x15, 0x01c1); + re_mdio_write(sc, 0x19, 0xb614); + re_mdio_write(sc, 0x15, 0x01c2); + re_mdio_write(sc, 0x19, 0x8ce4); + re_mdio_write(sc, 0x15, 0x01c3); + re_mdio_write(sc, 0x19, 0xb30c); + re_mdio_write(sc, 0x15, 0x01c4); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x01c5); + re_mdio_write(sc, 0x19, 0x6c02); + re_mdio_write(sc, 0x15, 0x01c6); + re_mdio_write(sc, 0x19, 0x8206); + re_mdio_write(sc, 0x15, 0x01c7); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x01c8); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x01c9); + re_mdio_write(sc, 0x19, 0x7c04); + re_mdio_write(sc, 0x15, 0x01ca); + re_mdio_write(sc, 0x19, 0x7404); + re_mdio_write(sc, 0x15, 0x01cb); + re_mdio_write(sc, 0x19, 0x31c0); + re_mdio_write(sc, 0x15, 0x01cc); + re_mdio_write(sc, 0x19, 0x7c04); + re_mdio_write(sc, 0x15, 0x01cd); + re_mdio_write(sc, 0x19, 0x7400); + re_mdio_write(sc, 0x15, 0x01ce); + re_mdio_write(sc, 0x19, 0x31c0); + re_mdio_write(sc, 0x15, 0x01cf); + re_mdio_write(sc, 0x19, 0x8df1); + re_mdio_write(sc, 0x15, 0x01d0); + re_mdio_write(sc, 0x19, 0x3248); + re_mdio_write(sc, 0x15, 0x01d1); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01d2); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01d3); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01d4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01d5); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x01d6); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x01d7); + re_mdio_write(sc, 0x19, 0x6c03); + re_mdio_write(sc, 0x15, 0x01d8); + re_mdio_write(sc, 0x19, 0x7670); + re_mdio_write(sc, 0x15, 0x01d9); + re_mdio_write(sc, 0x19, 0x4023); + re_mdio_write(sc, 0x15, 0x01da); + re_mdio_write(sc, 0x19, 0x4500); + re_mdio_write(sc, 0x15, 0x01db); + re_mdio_write(sc, 0x19, 0x4069); + re_mdio_write(sc, 0x15, 0x01dc); + re_mdio_write(sc, 0x19, 0x4580); + re_mdio_write(sc, 0x15, 0x01dd); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x01de); + re_mdio_write(sc, 0x19, 0xcff5); + re_mdio_write(sc, 0x15, 0x01df); + re_mdio_write(sc, 0x19, 0x00ff); + re_mdio_write(sc, 0x15, 0x01e0); + re_mdio_write(sc, 0x19, 0x76f0); + re_mdio_write(sc, 0x15, 0x01e1); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x01e2); + re_mdio_write(sc, 0x19, 0x4023); + re_mdio_write(sc, 0x15, 0x01e3); + re_mdio_write(sc, 0x19, 0x4500); + re_mdio_write(sc, 0x15, 0x01e4); + re_mdio_write(sc, 0x19, 0x4069); + re_mdio_write(sc, 0x15, 0x01e5); + re_mdio_write(sc, 0x19, 0x4580); + re_mdio_write(sc, 0x15, 0x01e6); + re_mdio_write(sc, 0x19, 0x9f00); + re_mdio_write(sc, 0x15, 0x01e7); + re_mdio_write(sc, 0x19, 0xd0f5); + re_mdio_write(sc, 0x15, 0x01e8); + re_mdio_write(sc, 0x19, 0x00ff); + re_mdio_write(sc, 0x15, 0x01e9); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x01ea); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x01eb); + re_mdio_write(sc, 0x19, 0x6800); + re_mdio_write(sc, 0x15, 0x01ec); + re_mdio_write(sc, 0x19, 0x66a0); + re_mdio_write(sc, 0x15, 0x01ed); + re_mdio_write(sc, 0x19, 0x8300); + re_mdio_write(sc, 0x15, 0x01ee); + re_mdio_write(sc, 0x19, 0x74f0); + re_mdio_write(sc, 0x15, 0x01ef); + re_mdio_write(sc, 0x19, 0x3006); + re_mdio_write(sc, 0x15, 0x01f0); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01f1); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01f2); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01f3); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01f4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x01f5); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x01f6); + re_mdio_write(sc, 0x19, 0x6c02); + re_mdio_write(sc, 0x15, 0x01f7); + re_mdio_write(sc, 0x19, 0x409d); + re_mdio_write(sc, 0x15, 0x01f8); + re_mdio_write(sc, 0x19, 0x7c87); + re_mdio_write(sc, 0x15, 0x01f9); + re_mdio_write(sc, 0x19, 0xae14); + re_mdio_write(sc, 0x15, 0x01fa); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x01fb); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x01fc); + re_mdio_write(sc, 0x19, 0x6800); + re_mdio_write(sc, 0x15, 0x01fd); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x01fe); + re_mdio_write(sc, 0x19, 0x980e); + re_mdio_write(sc, 0x15, 0x01ff); + re_mdio_write(sc, 0x19, 0x930c); + re_mdio_write(sc, 0x15, 0x0200); + re_mdio_write(sc, 0x19, 0x9206); + re_mdio_write(sc, 0x15, 0x0201); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0202); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0203); + re_mdio_write(sc, 0x19, 0x588f); + re_mdio_write(sc, 0x15, 0x0204); + re_mdio_write(sc, 0x19, 0x5520); + re_mdio_write(sc, 0x15, 0x0205); + re_mdio_write(sc, 0x19, 0x320c); + re_mdio_write(sc, 0x15, 0x0206); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x15, 0x0207); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0208); + re_mdio_write(sc, 0x19, 0x588d); + re_mdio_write(sc, 0x15, 0x0209); + re_mdio_write(sc, 0x19, 0x5500); + re_mdio_write(sc, 0x15, 0x020a); + re_mdio_write(sc, 0x19, 0x320c); + re_mdio_write(sc, 0x15, 0x020b); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x020c); + re_mdio_write(sc, 0x19, 0x3220); + re_mdio_write(sc, 0x15, 0x020d); + re_mdio_write(sc, 0x19, 0x4480); + re_mdio_write(sc, 0x15, 0x020e); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x020f); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0210); + re_mdio_write(sc, 0x19, 0x6840); + re_mdio_write(sc, 0x15, 0x0211); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x0212); + re_mdio_write(sc, 0x19, 0x980e); + re_mdio_write(sc, 0x15, 0x0213); + re_mdio_write(sc, 0x19, 0x930c); + re_mdio_write(sc, 0x15, 0x0214); + re_mdio_write(sc, 0x19, 0x9206); + re_mdio_write(sc, 0x15, 0x0215); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x15, 0x0216); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0217); + re_mdio_write(sc, 0x19, 0x588f); + re_mdio_write(sc, 0x15, 0x0218); + re_mdio_write(sc, 0x19, 0x5520); + re_mdio_write(sc, 0x15, 0x0219); + re_mdio_write(sc, 0x19, 0x3220); + re_mdio_write(sc, 0x15, 0x021a); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x021b); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x021c); + re_mdio_write(sc, 0x19, 0x588d); + re_mdio_write(sc, 0x15, 0x021d); + re_mdio_write(sc, 0x19, 0x5540); + re_mdio_write(sc, 0x15, 0x021e); + re_mdio_write(sc, 0x19, 0x3220); + re_mdio_write(sc, 0x15, 0x021f); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x15, 0x0220); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0221); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0222); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x0223); + re_mdio_write(sc, 0x19, 0x3231); + re_mdio_write(sc, 0x15, 0x0224); + re_mdio_write(sc, 0x19, 0xab06); + re_mdio_write(sc, 0x15, 0x0225); + re_mdio_write(sc, 0x19, 0xbf08); + re_mdio_write(sc, 0x15, 0x0226); + re_mdio_write(sc, 0x19, 0x4076); + re_mdio_write(sc, 0x15, 0x0227); + re_mdio_write(sc, 0x19, 0x7d07); + re_mdio_write(sc, 0x15, 0x0228); + re_mdio_write(sc, 0x19, 0x4502); + re_mdio_write(sc, 0x15, 0x0229); + re_mdio_write(sc, 0x19, 0x3231); + re_mdio_write(sc, 0x15, 0x022a); + re_mdio_write(sc, 0x19, 0x7d80); + re_mdio_write(sc, 0x15, 0x022b); + re_mdio_write(sc, 0x19, 0x5180); + re_mdio_write(sc, 0x15, 0x022c); + re_mdio_write(sc, 0x19, 0x322f); + re_mdio_write(sc, 0x15, 0x022d); + re_mdio_write(sc, 0x19, 0x7d80); + re_mdio_write(sc, 0x15, 0x022e); + re_mdio_write(sc, 0x19, 0x5000); + re_mdio_write(sc, 0x15, 0x022f); + re_mdio_write(sc, 0x19, 0x7d07); + re_mdio_write(sc, 0x15, 0x0230); + re_mdio_write(sc, 0x19, 0x4402); + re_mdio_write(sc, 0x15, 0x0231); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0232); + re_mdio_write(sc, 0x19, 0x6c02); + re_mdio_write(sc, 0x15, 0x0233); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0234); + re_mdio_write(sc, 0x19, 0xb309); + re_mdio_write(sc, 0x15, 0x0235); + re_mdio_write(sc, 0x19, 0xb204); + re_mdio_write(sc, 0x15, 0x0236); + re_mdio_write(sc, 0x19, 0xb105); + re_mdio_write(sc, 0x15, 0x0237); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x0238); + re_mdio_write(sc, 0x19, 0x31c1); + re_mdio_write(sc, 0x15, 0x0239); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x023a); + re_mdio_write(sc, 0x19, 0x3261); + re_mdio_write(sc, 0x15, 0x023b); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x023c); + re_mdio_write(sc, 0x19, 0x3250); + re_mdio_write(sc, 0x15, 0x023d); + re_mdio_write(sc, 0x19, 0xb203); + re_mdio_write(sc, 0x15, 0x023e); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x023f); + re_mdio_write(sc, 0x19, 0x327a); + re_mdio_write(sc, 0x15, 0x0240); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x0241); + re_mdio_write(sc, 0x19, 0x3293); + re_mdio_write(sc, 0x15, 0x0242); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0243); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0244); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0245); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0246); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0247); + re_mdio_write(sc, 0x19, 0x32a3); + re_mdio_write(sc, 0x15, 0x0248); + re_mdio_write(sc, 0x19, 0x5520); + re_mdio_write(sc, 0x15, 0x0249); + re_mdio_write(sc, 0x19, 0x403d); + re_mdio_write(sc, 0x15, 0x024a); + re_mdio_write(sc, 0x19, 0x440c); + re_mdio_write(sc, 0x15, 0x024b); + re_mdio_write(sc, 0x19, 0x4812); + re_mdio_write(sc, 0x15, 0x024c); + re_mdio_write(sc, 0x19, 0x5001); + re_mdio_write(sc, 0x15, 0x024d); + re_mdio_write(sc, 0x19, 0x4802); + re_mdio_write(sc, 0x15, 0x024e); + re_mdio_write(sc, 0x19, 0x6880); + re_mdio_write(sc, 0x15, 0x024f); + re_mdio_write(sc, 0x19, 0x31f5); + re_mdio_write(sc, 0x15, 0x0250); + re_mdio_write(sc, 0x19, 0xb685); + re_mdio_write(sc, 0x15, 0x0251); + re_mdio_write(sc, 0x19, 0x801c); + re_mdio_write(sc, 0x15, 0x0252); + re_mdio_write(sc, 0x19, 0xbaf5); + re_mdio_write(sc, 0x15, 0x0253); + re_mdio_write(sc, 0x19, 0xc07c); + re_mdio_write(sc, 0x15, 0x0254); + re_mdio_write(sc, 0x19, 0x00fb); + re_mdio_write(sc, 0x15, 0x0255); + re_mdio_write(sc, 0x19, 0x325a); + re_mdio_write(sc, 0x15, 0x0256); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0257); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0258); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0259); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x025a); + re_mdio_write(sc, 0x19, 0x481a); + re_mdio_write(sc, 0x15, 0x025b); + re_mdio_write(sc, 0x19, 0x5001); + re_mdio_write(sc, 0x15, 0x025c); + re_mdio_write(sc, 0x19, 0x401b); + re_mdio_write(sc, 0x15, 0x025d); + re_mdio_write(sc, 0x19, 0x480a); + re_mdio_write(sc, 0x15, 0x025e); + re_mdio_write(sc, 0x19, 0x4418); + re_mdio_write(sc, 0x15, 0x025f); + re_mdio_write(sc, 0x19, 0x6900); + re_mdio_write(sc, 0x15, 0x0260); + re_mdio_write(sc, 0x19, 0x31f5); + re_mdio_write(sc, 0x15, 0x0261); + re_mdio_write(sc, 0x19, 0xb64b); + re_mdio_write(sc, 0x15, 0x0262); + re_mdio_write(sc, 0x19, 0xdb00); + re_mdio_write(sc, 0x15, 0x0263); + re_mdio_write(sc, 0x19, 0x0048); + re_mdio_write(sc, 0x15, 0x0264); + re_mdio_write(sc, 0x19, 0xdb7d); + re_mdio_write(sc, 0x15, 0x0265); + re_mdio_write(sc, 0x19, 0x0002); + re_mdio_write(sc, 0x15, 0x0266); + re_mdio_write(sc, 0x19, 0xa0fa); + re_mdio_write(sc, 0x15, 0x0267); + re_mdio_write(sc, 0x19, 0x4408); + re_mdio_write(sc, 0x15, 0x0268); + re_mdio_write(sc, 0x19, 0x3248); + re_mdio_write(sc, 0x15, 0x0269); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x026a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x026b); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x026c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x026d); + re_mdio_write(sc, 0x19, 0xb806); + re_mdio_write(sc, 0x15, 0x026e); + re_mdio_write(sc, 0x19, 0x588d); + re_mdio_write(sc, 0x15, 0x026f); + re_mdio_write(sc, 0x19, 0x5500); + re_mdio_write(sc, 0x15, 0x0270); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x0271); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0272); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0273); + re_mdio_write(sc, 0x19, 0x4814); + re_mdio_write(sc, 0x15, 0x0274); + re_mdio_write(sc, 0x19, 0x500b); + re_mdio_write(sc, 0x15, 0x0275); + re_mdio_write(sc, 0x19, 0x4804); + re_mdio_write(sc, 0x15, 0x0276); + re_mdio_write(sc, 0x19, 0x40c4); + re_mdio_write(sc, 0x15, 0x0277); + re_mdio_write(sc, 0x19, 0x4425); + re_mdio_write(sc, 0x15, 0x0278); + re_mdio_write(sc, 0x19, 0x6a00); + re_mdio_write(sc, 0x15, 0x0279); + re_mdio_write(sc, 0x19, 0x31f5); + re_mdio_write(sc, 0x15, 0x027a); + re_mdio_write(sc, 0x19, 0xb632); + re_mdio_write(sc, 0x15, 0x027b); + re_mdio_write(sc, 0x19, 0xdc03); + re_mdio_write(sc, 0x15, 0x027c); + re_mdio_write(sc, 0x19, 0x0027); + re_mdio_write(sc, 0x15, 0x027d); + re_mdio_write(sc, 0x19, 0x80fc); + re_mdio_write(sc, 0x15, 0x027e); + re_mdio_write(sc, 0x19, 0x3283); + re_mdio_write(sc, 0x15, 0x027f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0280); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0281); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0282); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0283); + re_mdio_write(sc, 0x19, 0xb806); + re_mdio_write(sc, 0x15, 0x0284); + re_mdio_write(sc, 0x19, 0x588f); + re_mdio_write(sc, 0x15, 0x0285); + re_mdio_write(sc, 0x19, 0x5520); + re_mdio_write(sc, 0x15, 0x0286); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x0287); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x15, 0x0288); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0289); + re_mdio_write(sc, 0x19, 0x4818); + re_mdio_write(sc, 0x15, 0x028a); + re_mdio_write(sc, 0x19, 0x5051); + re_mdio_write(sc, 0x15, 0x028b); + re_mdio_write(sc, 0x19, 0x4808); + re_mdio_write(sc, 0x15, 0x028c); + re_mdio_write(sc, 0x19, 0x4050); + re_mdio_write(sc, 0x15, 0x028d); + re_mdio_write(sc, 0x19, 0x4462); + re_mdio_write(sc, 0x15, 0x028e); + re_mdio_write(sc, 0x19, 0x40c4); + re_mdio_write(sc, 0x15, 0x028f); + re_mdio_write(sc, 0x19, 0x4473); + re_mdio_write(sc, 0x15, 0x0290); + re_mdio_write(sc, 0x19, 0x5041); + re_mdio_write(sc, 0x15, 0x0291); + re_mdio_write(sc, 0x19, 0x6b00); + re_mdio_write(sc, 0x15, 0x0292); + re_mdio_write(sc, 0x19, 0x31f5); + re_mdio_write(sc, 0x15, 0x0293); + re_mdio_write(sc, 0x19, 0xb619); + re_mdio_write(sc, 0x15, 0x0294); + re_mdio_write(sc, 0x19, 0x80d9); + re_mdio_write(sc, 0x15, 0x0295); + re_mdio_write(sc, 0x19, 0xbd06); + re_mdio_write(sc, 0x15, 0x0296); + re_mdio_write(sc, 0x19, 0xbb0d); + re_mdio_write(sc, 0x15, 0x0297); + re_mdio_write(sc, 0x19, 0xaf14); + re_mdio_write(sc, 0x15, 0x0298); + re_mdio_write(sc, 0x19, 0x8efa); + re_mdio_write(sc, 0x15, 0x0299); + re_mdio_write(sc, 0x19, 0x5049); + re_mdio_write(sc, 0x15, 0x029a); + re_mdio_write(sc, 0x19, 0x3248); + re_mdio_write(sc, 0x15, 0x029b); + re_mdio_write(sc, 0x19, 0x4c10); + re_mdio_write(sc, 0x15, 0x029c); + re_mdio_write(sc, 0x19, 0x44b0); + re_mdio_write(sc, 0x15, 0x029d); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x029e); + re_mdio_write(sc, 0x19, 0x3292); + re_mdio_write(sc, 0x15, 0x029f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02a0); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02a1); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02a2); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02a3); + re_mdio_write(sc, 0x19, 0x481f); + re_mdio_write(sc, 0x15, 0x02a4); + re_mdio_write(sc, 0x19, 0x5005); + re_mdio_write(sc, 0x15, 0x02a5); + re_mdio_write(sc, 0x19, 0x480f); + re_mdio_write(sc, 0x15, 0x02a6); + re_mdio_write(sc, 0x19, 0xac00); + re_mdio_write(sc, 0x15, 0x02a7); + re_mdio_write(sc, 0x19, 0x31a6); + re_mdio_write(sc, 0x15, 0x02a8); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02a9); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02aa); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02ab); + re_mdio_write(sc, 0x19, 0x31ba); + re_mdio_write(sc, 0x15, 0x02ac); + re_mdio_write(sc, 0x19, 0x31d5); + re_mdio_write(sc, 0x15, 0x02ad); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02ae); + re_mdio_write(sc, 0x19, 0x5cf0); + re_mdio_write(sc, 0x15, 0x02af); + re_mdio_write(sc, 0x19, 0x588c); + re_mdio_write(sc, 0x15, 0x02b0); + re_mdio_write(sc, 0x19, 0x542f); + re_mdio_write(sc, 0x15, 0x02b1); + re_mdio_write(sc, 0x19, 0x7ffb); + re_mdio_write(sc, 0x15, 0x02b2); + re_mdio_write(sc, 0x19, 0x6ff8); + re_mdio_write(sc, 0x15, 0x02b3); + re_mdio_write(sc, 0x19, 0x64a4); + re_mdio_write(sc, 0x15, 0x02b4); + re_mdio_write(sc, 0x19, 0x64a0); + re_mdio_write(sc, 0x15, 0x02b5); + re_mdio_write(sc, 0x19, 0x6800); + re_mdio_write(sc, 0x15, 0x02b6); + re_mdio_write(sc, 0x19, 0x4400); + re_mdio_write(sc, 0x15, 0x02b7); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x02b8); + re_mdio_write(sc, 0x19, 0x4480); + re_mdio_write(sc, 0x15, 0x02b9); + re_mdio_write(sc, 0x19, 0x9e00); + re_mdio_write(sc, 0x15, 0x02ba); + re_mdio_write(sc, 0x19, 0x4891); + re_mdio_write(sc, 0x15, 0x02bb); + re_mdio_write(sc, 0x19, 0x4cc0); + re_mdio_write(sc, 0x15, 0x02bc); + re_mdio_write(sc, 0x19, 0x4801); + re_mdio_write(sc, 0x15, 0x02bd); + re_mdio_write(sc, 0x19, 0xa609); + re_mdio_write(sc, 0x15, 0x02be); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x02bf); + re_mdio_write(sc, 0x19, 0x004e); + re_mdio_write(sc, 0x15, 0x02c0); + re_mdio_write(sc, 0x19, 0x87fe); + re_mdio_write(sc, 0x15, 0x02c1); + re_mdio_write(sc, 0x19, 0x32c6); + re_mdio_write(sc, 0x15, 0x02c2); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02c3); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02c4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02c5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02c6); + re_mdio_write(sc, 0x19, 0x48b2); + re_mdio_write(sc, 0x15, 0x02c7); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x02c8); + re_mdio_write(sc, 0x19, 0x4822); + re_mdio_write(sc, 0x15, 0x02c9); + re_mdio_write(sc, 0x19, 0x4488); + re_mdio_write(sc, 0x15, 0x02ca); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x02cb); + re_mdio_write(sc, 0x19, 0x0042); + re_mdio_write(sc, 0x15, 0x02cc); + re_mdio_write(sc, 0x19, 0x8203); + re_mdio_write(sc, 0x15, 0x02cd); + re_mdio_write(sc, 0x19, 0x4cc8); + re_mdio_write(sc, 0x15, 0x02ce); + re_mdio_write(sc, 0x19, 0x32d0); + re_mdio_write(sc, 0x15, 0x02cf); + re_mdio_write(sc, 0x19, 0x4cc0); + re_mdio_write(sc, 0x15, 0x02d0); + re_mdio_write(sc, 0x19, 0xc4d4); + re_mdio_write(sc, 0x15, 0x02d1); + re_mdio_write(sc, 0x19, 0x00f9); + re_mdio_write(sc, 0x15, 0x02d2); + re_mdio_write(sc, 0x19, 0xa51a); + re_mdio_write(sc, 0x15, 0x02d3); + re_mdio_write(sc, 0x19, 0x32d9); + re_mdio_write(sc, 0x15, 0x02d4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02d5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02d6); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02d7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02d8); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02d9); + re_mdio_write(sc, 0x19, 0x48b3); + re_mdio_write(sc, 0x15, 0x02da); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x02db); + re_mdio_write(sc, 0x19, 0x4823); + re_mdio_write(sc, 0x15, 0x02dc); + re_mdio_write(sc, 0x19, 0x4410); + re_mdio_write(sc, 0x15, 0x02dd); + re_mdio_write(sc, 0x19, 0xb630); + re_mdio_write(sc, 0x15, 0x02de); + re_mdio_write(sc, 0x19, 0x7dc8); + re_mdio_write(sc, 0x15, 0x02df); + re_mdio_write(sc, 0x19, 0x8203); + re_mdio_write(sc, 0x15, 0x02e0); + re_mdio_write(sc, 0x19, 0x4c48); + re_mdio_write(sc, 0x15, 0x02e1); + re_mdio_write(sc, 0x19, 0x32e3); + re_mdio_write(sc, 0x15, 0x02e2); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x02e3); + re_mdio_write(sc, 0x19, 0x9bfa); + re_mdio_write(sc, 0x15, 0x02e4); + re_mdio_write(sc, 0x19, 0x84ca); + re_mdio_write(sc, 0x15, 0x02e5); + re_mdio_write(sc, 0x19, 0x85f8); + re_mdio_write(sc, 0x15, 0x02e6); + re_mdio_write(sc, 0x19, 0x32ec); + re_mdio_write(sc, 0x15, 0x02e7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02e8); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02e9); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02ea); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02eb); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x02ec); + re_mdio_write(sc, 0x19, 0x48d4); + re_mdio_write(sc, 0x15, 0x02ed); + re_mdio_write(sc, 0x19, 0x4020); + re_mdio_write(sc, 0x15, 0x02ee); + re_mdio_write(sc, 0x19, 0x4844); + re_mdio_write(sc, 0x15, 0x02ef); + re_mdio_write(sc, 0x19, 0x4420); + re_mdio_write(sc, 0x15, 0x02f0); + re_mdio_write(sc, 0x19, 0x6800); + re_mdio_write(sc, 0x15, 0x02f1); + re_mdio_write(sc, 0x19, 0x7dc0); + re_mdio_write(sc, 0x15, 0x02f2); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x02f3); + re_mdio_write(sc, 0x19, 0x7c0b); + re_mdio_write(sc, 0x15, 0x02f4); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x02f5); + re_mdio_write(sc, 0x19, 0x3311); + re_mdio_write(sc, 0x15, 0x02f6); + re_mdio_write(sc, 0x19, 0x9cfd); + re_mdio_write(sc, 0x15, 0x02f7); + re_mdio_write(sc, 0x19, 0xb616); + re_mdio_write(sc, 0x15, 0x02f8); + re_mdio_write(sc, 0x19, 0xc42b); + re_mdio_write(sc, 0x15, 0x02f9); + re_mdio_write(sc, 0x19, 0x00e0); + re_mdio_write(sc, 0x15, 0x02fa); + re_mdio_write(sc, 0x19, 0xc455); + re_mdio_write(sc, 0x15, 0x02fb); + re_mdio_write(sc, 0x19, 0x00b3); + re_mdio_write(sc, 0x15, 0x02fc); + re_mdio_write(sc, 0x19, 0xb20a); + re_mdio_write(sc, 0x15, 0x02fd); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x02fe); + re_mdio_write(sc, 0x19, 0x6c02); + re_mdio_write(sc, 0x15, 0x02ff); + re_mdio_write(sc, 0x19, 0x8204); + re_mdio_write(sc, 0x15, 0x0300); + re_mdio_write(sc, 0x19, 0x7c04); + re_mdio_write(sc, 0x15, 0x0301); + re_mdio_write(sc, 0x19, 0x7404); + re_mdio_write(sc, 0x15, 0x0302); + re_mdio_write(sc, 0x19, 0x32f3); + re_mdio_write(sc, 0x15, 0x0303); + re_mdio_write(sc, 0x19, 0x7c04); + re_mdio_write(sc, 0x15, 0x0304); + re_mdio_write(sc, 0x19, 0x7400); + re_mdio_write(sc, 0x15, 0x0305); + re_mdio_write(sc, 0x19, 0x32f3); + re_mdio_write(sc, 0x15, 0x0306); + re_mdio_write(sc, 0x19, 0xefed); + re_mdio_write(sc, 0x15, 0x0307); + re_mdio_write(sc, 0x19, 0x3342); + re_mdio_write(sc, 0x15, 0x0308); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0309); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x030a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x030b); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x030c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x030d); + re_mdio_write(sc, 0x19, 0x3006); + re_mdio_write(sc, 0x15, 0x030e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x030f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0310); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0311); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0312); + re_mdio_write(sc, 0x19, 0xa207); + re_mdio_write(sc, 0x15, 0x0313); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x0314); + re_mdio_write(sc, 0x19, 0x3322); + re_mdio_write(sc, 0x15, 0x0315); + re_mdio_write(sc, 0x19, 0x4041); + re_mdio_write(sc, 0x15, 0x0316); + re_mdio_write(sc, 0x19, 0x7d07); + re_mdio_write(sc, 0x15, 0x0317); + re_mdio_write(sc, 0x19, 0x4502); + re_mdio_write(sc, 0x15, 0x0318); + re_mdio_write(sc, 0x19, 0x3322); + re_mdio_write(sc, 0x15, 0x0319); + re_mdio_write(sc, 0x19, 0x4c08); + re_mdio_write(sc, 0x15, 0x031a); + re_mdio_write(sc, 0x19, 0x3322); + re_mdio_write(sc, 0x15, 0x031b); + re_mdio_write(sc, 0x19, 0x7d80); + re_mdio_write(sc, 0x15, 0x031c); + re_mdio_write(sc, 0x19, 0x5180); + re_mdio_write(sc, 0x15, 0x031d); + re_mdio_write(sc, 0x19, 0x3320); + re_mdio_write(sc, 0x15, 0x031e); + re_mdio_write(sc, 0x19, 0x7d80); + re_mdio_write(sc, 0x15, 0x031f); + re_mdio_write(sc, 0x19, 0x5000); + re_mdio_write(sc, 0x15, 0x0320); + re_mdio_write(sc, 0x19, 0x7d07); + re_mdio_write(sc, 0x15, 0x0321); + re_mdio_write(sc, 0x19, 0x4402); + re_mdio_write(sc, 0x15, 0x0322); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0323); + re_mdio_write(sc, 0x19, 0x6c02); + re_mdio_write(sc, 0x15, 0x0324); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x0325); + re_mdio_write(sc, 0x19, 0xb30c); + re_mdio_write(sc, 0x15, 0x0326); + re_mdio_write(sc, 0x19, 0xb206); + re_mdio_write(sc, 0x15, 0x0327); + re_mdio_write(sc, 0x19, 0xb103); + re_mdio_write(sc, 0x15, 0x0328); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x0329); + re_mdio_write(sc, 0x19, 0x32f6); + re_mdio_write(sc, 0x15, 0x032a); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x032b); + re_mdio_write(sc, 0x19, 0x3352); + re_mdio_write(sc, 0x15, 0x032c); + re_mdio_write(sc, 0x19, 0xb103); + re_mdio_write(sc, 0x15, 0x032d); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x032e); + re_mdio_write(sc, 0x19, 0x336a); + re_mdio_write(sc, 0x15, 0x032f); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x0330); + re_mdio_write(sc, 0x19, 0x3382); + re_mdio_write(sc, 0x15, 0x0331); + re_mdio_write(sc, 0x19, 0xb206); + re_mdio_write(sc, 0x15, 0x0332); + re_mdio_write(sc, 0x19, 0xb103); + re_mdio_write(sc, 0x15, 0x0333); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x0334); + re_mdio_write(sc, 0x19, 0x3395); + re_mdio_write(sc, 0x15, 0x0335); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x0336); + re_mdio_write(sc, 0x19, 0x33c6); + re_mdio_write(sc, 0x15, 0x0337); + re_mdio_write(sc, 0x19, 0xb103); + re_mdio_write(sc, 0x15, 0x0338); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x0339); + re_mdio_write(sc, 0x19, 0x33d7); + re_mdio_write(sc, 0x15, 0x033a); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x033b); + re_mdio_write(sc, 0x19, 0x33f2); + re_mdio_write(sc, 0x15, 0x033c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x033d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x033e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x033f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0340); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0341); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0342); + re_mdio_write(sc, 0x19, 0x49b5); + re_mdio_write(sc, 0x15, 0x0343); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x15, 0x0344); + re_mdio_write(sc, 0x19, 0x4d00); + re_mdio_write(sc, 0x15, 0x0345); + re_mdio_write(sc, 0x19, 0x6880); + re_mdio_write(sc, 0x15, 0x0346); + re_mdio_write(sc, 0x19, 0x7c08); + re_mdio_write(sc, 0x15, 0x0347); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x0348); + re_mdio_write(sc, 0x19, 0x4925); + re_mdio_write(sc, 0x15, 0x0349); + re_mdio_write(sc, 0x19, 0x403b); + re_mdio_write(sc, 0x15, 0x034a); + re_mdio_write(sc, 0x19, 0xa602); + re_mdio_write(sc, 0x15, 0x034b); + re_mdio_write(sc, 0x19, 0x402f); + re_mdio_write(sc, 0x15, 0x034c); + re_mdio_write(sc, 0x19, 0x4484); + re_mdio_write(sc, 0x15, 0x034d); + re_mdio_write(sc, 0x19, 0x40c8); + re_mdio_write(sc, 0x15, 0x034e); + re_mdio_write(sc, 0x19, 0x44c4); + re_mdio_write(sc, 0x15, 0x034f); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x0350); + re_mdio_write(sc, 0x19, 0x00bd); + re_mdio_write(sc, 0x15, 0x0351); + re_mdio_write(sc, 0x19, 0x3311); + re_mdio_write(sc, 0x15, 0x0352); + re_mdio_write(sc, 0x19, 0xc8ed); + re_mdio_write(sc, 0x15, 0x0353); + re_mdio_write(sc, 0x19, 0x00fc); + re_mdio_write(sc, 0x15, 0x0354); + re_mdio_write(sc, 0x19, 0x8221); + re_mdio_write(sc, 0x15, 0x0355); + re_mdio_write(sc, 0x19, 0xd11d); + re_mdio_write(sc, 0x15, 0x0356); + re_mdio_write(sc, 0x19, 0x001f); + re_mdio_write(sc, 0x15, 0x0357); + re_mdio_write(sc, 0x19, 0xde18); + re_mdio_write(sc, 0x15, 0x0358); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x0359); + re_mdio_write(sc, 0x19, 0x91f6); + re_mdio_write(sc, 0x15, 0x035a); + re_mdio_write(sc, 0x19, 0x3360); + re_mdio_write(sc, 0x15, 0x035b); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x035c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x035d); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x035e); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x035f); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0360); + re_mdio_write(sc, 0x19, 0x4bb6); + re_mdio_write(sc, 0x15, 0x0361); + re_mdio_write(sc, 0x19, 0x4064); + re_mdio_write(sc, 0x15, 0x0362); + re_mdio_write(sc, 0x19, 0x4b26); + re_mdio_write(sc, 0x15, 0x0363); + re_mdio_write(sc, 0x19, 0x4410); + re_mdio_write(sc, 0x15, 0x0364); + re_mdio_write(sc, 0x19, 0x4006); + re_mdio_write(sc, 0x15, 0x0365); + re_mdio_write(sc, 0x19, 0x4490); + re_mdio_write(sc, 0x15, 0x0366); + re_mdio_write(sc, 0x19, 0x6900); + re_mdio_write(sc, 0x15, 0x0367); + re_mdio_write(sc, 0x19, 0xb6a6); + re_mdio_write(sc, 0x15, 0x0368); + re_mdio_write(sc, 0x19, 0x9e02); + re_mdio_write(sc, 0x15, 0x0369); + re_mdio_write(sc, 0x19, 0x3311); + re_mdio_write(sc, 0x15, 0x036a); + re_mdio_write(sc, 0x19, 0xd11d); + re_mdio_write(sc, 0x15, 0x036b); + re_mdio_write(sc, 0x19, 0x000a); + re_mdio_write(sc, 0x15, 0x036c); + re_mdio_write(sc, 0x19, 0xbb0f); + re_mdio_write(sc, 0x15, 0x036d); + re_mdio_write(sc, 0x19, 0x8102); + re_mdio_write(sc, 0x15, 0x036e); + re_mdio_write(sc, 0x19, 0x3371); + re_mdio_write(sc, 0x15, 0x036f); + re_mdio_write(sc, 0x19, 0xa21e); + re_mdio_write(sc, 0x15, 0x0370); + re_mdio_write(sc, 0x19, 0x33b6); + re_mdio_write(sc, 0x15, 0x0371); + re_mdio_write(sc, 0x19, 0x91f6); + re_mdio_write(sc, 0x15, 0x0372); + re_mdio_write(sc, 0x19, 0xc218); + re_mdio_write(sc, 0x15, 0x0373); + re_mdio_write(sc, 0x19, 0x00f4); + re_mdio_write(sc, 0x15, 0x0374); + re_mdio_write(sc, 0x19, 0x33b6); + re_mdio_write(sc, 0x15, 0x0375); + re_mdio_write(sc, 0x19, 0x32ec); + re_mdio_write(sc, 0x15, 0x0376); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0377); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0378); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x0379); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x037a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x037b); + re_mdio_write(sc, 0x19, 0x4b97); + re_mdio_write(sc, 0x15, 0x037c); + re_mdio_write(sc, 0x19, 0x402b); + re_mdio_write(sc, 0x15, 0x037d); + re_mdio_write(sc, 0x19, 0x4b07); + re_mdio_write(sc, 0x15, 0x037e); + re_mdio_write(sc, 0x19, 0x4422); + re_mdio_write(sc, 0x15, 0x037f); + re_mdio_write(sc, 0x19, 0x6980); + re_mdio_write(sc, 0x15, 0x0380); + re_mdio_write(sc, 0x19, 0xb608); + re_mdio_write(sc, 0x15, 0x0381); + re_mdio_write(sc, 0x19, 0x3311); + re_mdio_write(sc, 0x15, 0x0382); + re_mdio_write(sc, 0x19, 0xbc05); + re_mdio_write(sc, 0x15, 0x0383); + re_mdio_write(sc, 0x19, 0xc21c); + re_mdio_write(sc, 0x15, 0x0384); + re_mdio_write(sc, 0x19, 0x0032); + re_mdio_write(sc, 0x15, 0x0385); + re_mdio_write(sc, 0x19, 0xa1fb); + re_mdio_write(sc, 0x15, 0x0386); + re_mdio_write(sc, 0x19, 0x338d); + re_mdio_write(sc, 0x15, 0x0387); + re_mdio_write(sc, 0x19, 0x32ae); + re_mdio_write(sc, 0x15, 0x0388); + re_mdio_write(sc, 0x19, 0x330d); + re_mdio_write(sc, 0x15, 0x0389); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x038a); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x038b); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x038c); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x038d); + re_mdio_write(sc, 0x19, 0x4b97); + re_mdio_write(sc, 0x15, 0x038e); + re_mdio_write(sc, 0x19, 0x6a08); + re_mdio_write(sc, 0x15, 0x038f); + re_mdio_write(sc, 0x19, 0x4b07); + re_mdio_write(sc, 0x15, 0x0390); + re_mdio_write(sc, 0x19, 0x40ac); + re_mdio_write(sc, 0x15, 0x0391); + re_mdio_write(sc, 0x19, 0x4445); + re_mdio_write(sc, 0x15, 0x0392); + re_mdio_write(sc, 0x19, 0x404e); + re_mdio_write(sc, 0x15, 0x0393); + re_mdio_write(sc, 0x19, 0x4461); + re_mdio_write(sc, 0x15, 0x0394); + re_mdio_write(sc, 0x19, 0x3311); + re_mdio_write(sc, 0x15, 0x0395); + re_mdio_write(sc, 0x19, 0x9c0a); + re_mdio_write(sc, 0x15, 0x0396); + re_mdio_write(sc, 0x19, 0x63da); + re_mdio_write(sc, 0x15, 0x0397); + re_mdio_write(sc, 0x19, 0x6f0c); + re_mdio_write(sc, 0x15, 0x0398); + re_mdio_write(sc, 0x19, 0x5440); + re_mdio_write(sc, 0x15, 0x0399); + re_mdio_write(sc, 0x19, 0x4b98); + re_mdio_write(sc, 0x15, 0x039a); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x039b); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x039c); + re_mdio_write(sc, 0x19, 0x4b08); + re_mdio_write(sc, 0x15, 0x039d); + re_mdio_write(sc, 0x19, 0x63d8); + re_mdio_write(sc, 0x15, 0x039e); + re_mdio_write(sc, 0x19, 0x33a5); + re_mdio_write(sc, 0x15, 0x039f); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x03a0); + re_mdio_write(sc, 0x19, 0x00e8); + re_mdio_write(sc, 0x15, 0x03a1); + re_mdio_write(sc, 0x19, 0x820e); + re_mdio_write(sc, 0x15, 0x03a2); + re_mdio_write(sc, 0x19, 0xa10d); + re_mdio_write(sc, 0x15, 0x03a3); + re_mdio_write(sc, 0x19, 0x9df1); + re_mdio_write(sc, 0x15, 0x03a4); + re_mdio_write(sc, 0x19, 0x33af); + re_mdio_write(sc, 0x15, 0x03a5); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x03a6); + re_mdio_write(sc, 0x19, 0x00f9); + re_mdio_write(sc, 0x15, 0x03a7); + re_mdio_write(sc, 0x19, 0xc017); + re_mdio_write(sc, 0x15, 0x03a8); + re_mdio_write(sc, 0x19, 0x0007); + re_mdio_write(sc, 0x15, 0x03a9); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x03aa); + re_mdio_write(sc, 0x19, 0x6c03); + re_mdio_write(sc, 0x15, 0x03ab); + re_mdio_write(sc, 0x19, 0xa104); + re_mdio_write(sc, 0x15, 0x03ac); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x03ad); + re_mdio_write(sc, 0x19, 0x6c00); + re_mdio_write(sc, 0x15, 0x03ae); + re_mdio_write(sc, 0x19, 0x9df7); + re_mdio_write(sc, 0x15, 0x03af); + re_mdio_write(sc, 0x19, 0x7c03); + re_mdio_write(sc, 0x15, 0x03b0); + re_mdio_write(sc, 0x19, 0x6c08); + re_mdio_write(sc, 0x15, 0x03b1); + re_mdio_write(sc, 0x19, 0x33b6); + re_mdio_write(sc, 0x15, 0x03b2); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03b3); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03b4); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03b5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03b6); + re_mdio_write(sc, 0x19, 0x55af); + re_mdio_write(sc, 0x15, 0x03b7); + re_mdio_write(sc, 0x19, 0x7ff0); + re_mdio_write(sc, 0x15, 0x03b8); + re_mdio_write(sc, 0x19, 0x6ff0); + re_mdio_write(sc, 0x15, 0x03b9); + re_mdio_write(sc, 0x19, 0x4bb9); + re_mdio_write(sc, 0x15, 0x03ba); + re_mdio_write(sc, 0x19, 0x6a80); + re_mdio_write(sc, 0x15, 0x03bb); + re_mdio_write(sc, 0x19, 0x4b29); + re_mdio_write(sc, 0x15, 0x03bc); + re_mdio_write(sc, 0x19, 0x4041); + re_mdio_write(sc, 0x15, 0x03bd); + re_mdio_write(sc, 0x19, 0x440a); + re_mdio_write(sc, 0x15, 0x03be); + re_mdio_write(sc, 0x19, 0x4029); + re_mdio_write(sc, 0x15, 0x03bf); + re_mdio_write(sc, 0x19, 0x4418); + re_mdio_write(sc, 0x15, 0x03c0); + re_mdio_write(sc, 0x19, 0x4090); + re_mdio_write(sc, 0x15, 0x03c1); + re_mdio_write(sc, 0x19, 0x4438); + re_mdio_write(sc, 0x15, 0x03c2); + re_mdio_write(sc, 0x19, 0x40c4); + re_mdio_write(sc, 0x15, 0x03c3); + re_mdio_write(sc, 0x19, 0x447b); + re_mdio_write(sc, 0x15, 0x03c4); + re_mdio_write(sc, 0x19, 0xb6c4); + re_mdio_write(sc, 0x15, 0x03c5); + re_mdio_write(sc, 0x19, 0x3311); + re_mdio_write(sc, 0x15, 0x03c6); + re_mdio_write(sc, 0x19, 0x9bfe); + re_mdio_write(sc, 0x15, 0x03c7); + re_mdio_write(sc, 0x19, 0x33cc); + re_mdio_write(sc, 0x15, 0x03c8); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03c9); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03ca); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03cb); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03cc); + re_mdio_write(sc, 0x19, 0x542f); + re_mdio_write(sc, 0x15, 0x03cd); + re_mdio_write(sc, 0x19, 0x499a); + re_mdio_write(sc, 0x15, 0x03ce); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x03cf); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03d0); + re_mdio_write(sc, 0x19, 0x490a); + re_mdio_write(sc, 0x15, 0x03d1); + re_mdio_write(sc, 0x19, 0x405e); + re_mdio_write(sc, 0x15, 0x03d2); + re_mdio_write(sc, 0x19, 0x44f8); + re_mdio_write(sc, 0x15, 0x03d3); + re_mdio_write(sc, 0x19, 0x6b00); + re_mdio_write(sc, 0x15, 0x03d4); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x03d5); + re_mdio_write(sc, 0x19, 0x0028); + re_mdio_write(sc, 0x15, 0x03d6); + re_mdio_write(sc, 0x19, 0x3311); + re_mdio_write(sc, 0x15, 0x03d7); + re_mdio_write(sc, 0x19, 0xbd27); + re_mdio_write(sc, 0x15, 0x03d8); + re_mdio_write(sc, 0x19, 0x9cfc); + re_mdio_write(sc, 0x15, 0x03d9); + re_mdio_write(sc, 0x19, 0xc639); + re_mdio_write(sc, 0x15, 0x03da); + re_mdio_write(sc, 0x19, 0x000f); + re_mdio_write(sc, 0x15, 0x03db); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x03dc); + re_mdio_write(sc, 0x19, 0x7c01); + re_mdio_write(sc, 0x15, 0x03dd); + re_mdio_write(sc, 0x19, 0x4c01); + re_mdio_write(sc, 0x15, 0x03de); + re_mdio_write(sc, 0x19, 0x9af6); + re_mdio_write(sc, 0x15, 0x03df); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03e0); + re_mdio_write(sc, 0x19, 0x4c52); + re_mdio_write(sc, 0x15, 0x03e1); + re_mdio_write(sc, 0x19, 0x4470); + re_mdio_write(sc, 0x15, 0x03e2); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03e3); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03e4); + re_mdio_write(sc, 0x19, 0x33d4); + re_mdio_write(sc, 0x15, 0x03e5); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03e6); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03e7); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03e8); + re_mdio_write(sc, 0x19, 0x0000); + re_mdio_write(sc, 0x15, 0x03e9); + re_mdio_write(sc, 0x19, 0x49bb); + re_mdio_write(sc, 0x15, 0x03ea); + re_mdio_write(sc, 0x19, 0x4478); + re_mdio_write(sc, 0x15, 0x03eb); + re_mdio_write(sc, 0x19, 0x492b); + re_mdio_write(sc, 0x15, 0x03ec); + re_mdio_write(sc, 0x19, 0x6b80); + re_mdio_write(sc, 0x15, 0x03ed); + re_mdio_write(sc, 0x19, 0x7c01); + re_mdio_write(sc, 0x15, 0x03ee); + re_mdio_write(sc, 0x19, 0x4c00); + re_mdio_write(sc, 0x15, 0x03ef); + re_mdio_write(sc, 0x19, 0xd64f); + re_mdio_write(sc, 0x15, 0x03f0); + re_mdio_write(sc, 0x19, 0x000d); + re_mdio_write(sc, 0x15, 0x03f1); + re_mdio_write(sc, 0x19, 0x3311); + re_mdio_write(sc, 0x15, 0x03f2); + re_mdio_write(sc, 0x19, 0xbd0c); + re_mdio_write(sc, 0x15, 0x03f3); + re_mdio_write(sc, 0x19, 0xc428); + re_mdio_write(sc, 0x15, 0x03f4); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x15, 0x03f5); + re_mdio_write(sc, 0x19, 0x9afa); + re_mdio_write(sc, 0x15, 0x03f6); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03f7); + re_mdio_write(sc, 0x19, 0x4c52); + re_mdio_write(sc, 0x15, 0x03f8); + re_mdio_write(sc, 0x19, 0x4470); + re_mdio_write(sc, 0x15, 0x03f9); + re_mdio_write(sc, 0x19, 0x7c12); + re_mdio_write(sc, 0x15, 0x03fa); + re_mdio_write(sc, 0x19, 0x4c40); + re_mdio_write(sc, 0x15, 0x03fb); + re_mdio_write(sc, 0x19, 0x33ef); + re_mdio_write(sc, 0x15, 0x03fc); + re_mdio_write(sc, 0x19, 0x3342); + re_mdio_write(sc, 0x15, 0x03fd); + re_mdio_write(sc, 0x19, 0x330d); + re_mdio_write(sc, 0x15, 0x03fe); + re_mdio_write(sc, 0x19, 0x32ae); + re_mdio_write(sc, 0x15, 0x0000); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0300); + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x48f7); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xa080); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0xf602); + re_mdio_write(sc, 0x06, 0x0112); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x1f02); + re_mdio_write(sc, 0x06, 0x012c); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x3c02); + re_mdio_write(sc, 0x06, 0x0156); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x6d02); + re_mdio_write(sc, 0x06, 0x809d); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x88e1); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8a1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8b); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8c1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8e1e); + re_mdio_write(sc, 0x06, 0x01a0); + re_mdio_write(sc, 0x06, 0x00c7); + re_mdio_write(sc, 0x06, 0xaebb); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xc702); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0xd105); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xcd02); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xca02); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0xd105); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xd002); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0xd481); + re_mdio_write(sc, 0x06, 0xc9e4); + re_mdio_write(sc, 0x06, 0x8b90); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x91d4); + re_mdio_write(sc, 0x06, 0x81b8); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x92e5); + re_mdio_write(sc, 0x06, 0x8b93); + re_mdio_write(sc, 0x06, 0xbf8b); + re_mdio_write(sc, 0x06, 0x88ec); + re_mdio_write(sc, 0x06, 0x0019); + re_mdio_write(sc, 0x06, 0xa98b); + re_mdio_write(sc, 0x06, 0x90f9); + re_mdio_write(sc, 0x06, 0xeeff); + re_mdio_write(sc, 0x06, 0xf600); + re_mdio_write(sc, 0x06, 0xeeff); + re_mdio_write(sc, 0x06, 0xf7fc); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xc102); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xc402); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x201a); + re_mdio_write(sc, 0x06, 0xf620); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x824b); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x1902); + re_mdio_write(sc, 0x06, 0x2c9d); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x9602); + re_mdio_write(sc, 0x06, 0x0473); + re_mdio_write(sc, 0x06, 0x022e); + re_mdio_write(sc, 0x06, 0x3902); + re_mdio_write(sc, 0x06, 0x044d); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x210b); + re_mdio_write(sc, 0x06, 0xf621); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x0416); + re_mdio_write(sc, 0x06, 0x021b); + re_mdio_write(sc, 0x06, 0xa4e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad22); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x22e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2305); + re_mdio_write(sc, 0x06, 0xf623); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8ee0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x24e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2505); + re_mdio_write(sc, 0x06, 0xf625); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8ee0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x08f6); + re_mdio_write(sc, 0x06, 0x26e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0xdae0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x27e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x5cfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad21); + re_mdio_write(sc, 0x06, 0x57e0); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x2358); + re_mdio_write(sc, 0x06, 0xc059); + re_mdio_write(sc, 0x06, 0x021e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b3c); + re_mdio_write(sc, 0x06, 0x1f10); + re_mdio_write(sc, 0x06, 0x9e44); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x3cad); + re_mdio_write(sc, 0x06, 0x211d); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x84f7); + re_mdio_write(sc, 0x06, 0x29e5); + re_mdio_write(sc, 0x06, 0x8b84); + re_mdio_write(sc, 0x06, 0xac27); + re_mdio_write(sc, 0x06, 0x0dac); + re_mdio_write(sc, 0x06, 0x2605); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x7fae); + re_mdio_write(sc, 0x06, 0x2b02); + re_mdio_write(sc, 0x06, 0x2c23); + re_mdio_write(sc, 0x06, 0xae26); + re_mdio_write(sc, 0x06, 0x022c); + re_mdio_write(sc, 0x06, 0x41ae); + re_mdio_write(sc, 0x06, 0x21e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xad22); + re_mdio_write(sc, 0x06, 0x18e0); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0x58fc); + re_mdio_write(sc, 0x06, 0xe4ff); + re_mdio_write(sc, 0x06, 0xf7d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x2eee); + re_mdio_write(sc, 0x06, 0x0232); + re_mdio_write(sc, 0x06, 0x0ad1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x82e8); + re_mdio_write(sc, 0x06, 0x0232); + re_mdio_write(sc, 0x06, 0x0a02); + re_mdio_write(sc, 0x06, 0x2bdf); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x04d0); + re_mdio_write(sc, 0x06, 0x0202); + re_mdio_write(sc, 0x06, 0x1e97); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2228); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xd302); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0xd10c); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xd602); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0xd104); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xd902); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xe802); + re_mdio_write(sc, 0x06, 0x320a); + re_mdio_write(sc, 0x06, 0xe0ff); + re_mdio_write(sc, 0x06, 0xf768); + re_mdio_write(sc, 0x06, 0x03e4); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xd004); + re_mdio_write(sc, 0x06, 0x0228); + re_mdio_write(sc, 0x06, 0x7a04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0xe234); + re_mdio_write(sc, 0x06, 0xe1e2); + re_mdio_write(sc, 0x06, 0x35f6); + re_mdio_write(sc, 0x06, 0x2be4); + re_mdio_write(sc, 0x06, 0xe234); + re_mdio_write(sc, 0x06, 0xe5e2); + re_mdio_write(sc, 0x06, 0x35fc); + re_mdio_write(sc, 0x06, 0x05f8); + re_mdio_write(sc, 0x06, 0xe0e2); + re_mdio_write(sc, 0x06, 0x34e1); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xf72b); + re_mdio_write(sc, 0x06, 0xe4e2); + re_mdio_write(sc, 0x06, 0x34e5); + re_mdio_write(sc, 0x06, 0xe235); + re_mdio_write(sc, 0x06, 0xfc05); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69ac); + re_mdio_write(sc, 0x06, 0x1b4c); + re_mdio_write(sc, 0x06, 0xbf2e); + re_mdio_write(sc, 0x06, 0x3002); + re_mdio_write(sc, 0x06, 0x31dd); + re_mdio_write(sc, 0x06, 0xef01); + re_mdio_write(sc, 0x06, 0xe28a); + re_mdio_write(sc, 0x06, 0x76e4); + re_mdio_write(sc, 0x06, 0x8a76); + re_mdio_write(sc, 0x06, 0x1f12); + re_mdio_write(sc, 0x06, 0x9e3a); + re_mdio_write(sc, 0x06, 0xef12); + re_mdio_write(sc, 0x06, 0x5907); + re_mdio_write(sc, 0x06, 0x9f12); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b40); + re_mdio_write(sc, 0x06, 0xf721); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x40d0); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x287a); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x34fc); + re_mdio_write(sc, 0x06, 0xa000); + re_mdio_write(sc, 0x06, 0x1002); + re_mdio_write(sc, 0x06, 0x2dc3); + re_mdio_write(sc, 0x06, 0x022e); + re_mdio_write(sc, 0x06, 0x21e0); + re_mdio_write(sc, 0x06, 0x8b40); + re_mdio_write(sc, 0x06, 0xf621); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x40ae); + re_mdio_write(sc, 0x06, 0x0fbf); + re_mdio_write(sc, 0x06, 0x3fa5); + re_mdio_write(sc, 0x06, 0x0231); + re_mdio_write(sc, 0x06, 0x6cbf); + re_mdio_write(sc, 0x06, 0x3fa2); + re_mdio_write(sc, 0x06, 0x0231); + re_mdio_write(sc, 0x06, 0x6c02); + re_mdio_write(sc, 0x06, 0x2dc3); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0xe2f4); + re_mdio_write(sc, 0x06, 0xe1e2); + re_mdio_write(sc, 0x06, 0xf5e4); + re_mdio_write(sc, 0x06, 0x8a78); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0x79ee); + re_mdio_write(sc, 0x06, 0xe2f4); + re_mdio_write(sc, 0x06, 0xd8ee); + re_mdio_write(sc, 0x06, 0xe2f5); + re_mdio_write(sc, 0x06, 0x20fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2065); + re_mdio_write(sc, 0x06, 0xd200); + re_mdio_write(sc, 0x06, 0xbf2e); + re_mdio_write(sc, 0x06, 0xe802); + re_mdio_write(sc, 0x06, 0x31dd); + re_mdio_write(sc, 0x06, 0x1e21); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xdf02); + re_mdio_write(sc, 0x06, 0x31dd); + re_mdio_write(sc, 0x06, 0x0c11); + re_mdio_write(sc, 0x06, 0x1e21); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xe202); + re_mdio_write(sc, 0x06, 0x31dd); + re_mdio_write(sc, 0x06, 0x0c12); + re_mdio_write(sc, 0x06, 0x1e21); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xe502); + re_mdio_write(sc, 0x06, 0x31dd); + re_mdio_write(sc, 0x06, 0x0c13); + re_mdio_write(sc, 0x06, 0x1e21); + re_mdio_write(sc, 0x06, 0xbf1f); + re_mdio_write(sc, 0x06, 0x5302); + re_mdio_write(sc, 0x06, 0x31dd); + re_mdio_write(sc, 0x06, 0x0c14); + re_mdio_write(sc, 0x06, 0x1e21); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0xeb02); + re_mdio_write(sc, 0x06, 0x31dd); + re_mdio_write(sc, 0x06, 0x0c16); + re_mdio_write(sc, 0x06, 0x1e21); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0xe01f); + re_mdio_write(sc, 0x06, 0x029e); + re_mdio_write(sc, 0x06, 0x22e6); + re_mdio_write(sc, 0x06, 0x83e0); + re_mdio_write(sc, 0x06, 0xad31); + re_mdio_write(sc, 0x06, 0x14ad); + re_mdio_write(sc, 0x06, 0x3011); + re_mdio_write(sc, 0x06, 0xef02); + re_mdio_write(sc, 0x06, 0x580c); + re_mdio_write(sc, 0x06, 0x9e07); + re_mdio_write(sc, 0x06, 0xad36); + re_mdio_write(sc, 0x06, 0x085a); + re_mdio_write(sc, 0x06, 0x309f); + re_mdio_write(sc, 0x06, 0x04d1); + re_mdio_write(sc, 0x06, 0x01ae); + re_mdio_write(sc, 0x06, 0x02d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x82dc); + re_mdio_write(sc, 0x06, 0x0232); + re_mdio_write(sc, 0x06, 0x0aef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x0400); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0x77e1); + re_mdio_write(sc, 0x06, 0x4010); + re_mdio_write(sc, 0x06, 0xe150); + re_mdio_write(sc, 0x06, 0x32e1); + re_mdio_write(sc, 0x06, 0x5030); + re_mdio_write(sc, 0x06, 0xe144); + re_mdio_write(sc, 0x06, 0x74e1); + re_mdio_write(sc, 0x06, 0x44bb); + re_mdio_write(sc, 0x06, 0xe2d2); + re_mdio_write(sc, 0x06, 0x40e0); + re_mdio_write(sc, 0x06, 0x2cfc); + re_mdio_write(sc, 0x06, 0xe2cc); + re_mdio_write(sc, 0x06, 0xcce2); + re_mdio_write(sc, 0x06, 0x00cc); + re_mdio_write(sc, 0x06, 0xe000); + re_mdio_write(sc, 0x06, 0x99e0); + re_mdio_write(sc, 0x06, 0x3688); + re_mdio_write(sc, 0x06, 0xe036); + re_mdio_write(sc, 0x06, 0x99e1); + re_mdio_write(sc, 0x06, 0x40dd); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x05, 0xe142); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06, PhyRegValue); + re_mdio_write(sc, 0x05, 0xe140); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x00); + if (PhyRegValue & BIT_7) + break; } - MP_WritePhyUshort(sc, 0x1F, 0x0000); - break; - case MACFG_61: - case MACFG_62: - case MACFG_67: - OOB_mutex_lock(sc); - data = MP_ReadMcuAccessRegWord(sc, 0xE052); - data &= ~BIT_0; - MP_WriteMcuAccessRegWord(sc, 0xE052, data); - OOB_mutex_unlock(sc); - data = MP_ReadMcuAccessRegWord(sc, 0xE056); - data &= 0xFF0F; - data |= (BIT_4 | BIT_5 | BIT_6); - MP_WriteMcuAccessRegWord(sc, 0xE056, data); - break; - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - OOB_mutex_lock(sc); - if (sc->HwPkgDet == 0x0F) - SetMcuAccessRegBit(sc, 0xE052, BIT_0); - else - ClearMcuAccessRegBit(sc, 0xE052, BIT_0); - OOB_mutex_unlock(sc); - break; - case MACFG_68: - case MACFG_69: - case MACFG_74: - case MACFG_75: - ClearMcuAccessRegBit(sc, 0xE052, BIT_0); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - data = MP_ReadPhyUshort(sc, 0x10) | BIT_15; - MP_WritePhyUshort(sc, 0x10, data); - - MP_WritePhyUshort(sc, 0x1F, 0x0A44); - data = MP_ReadPhyUshort(sc, 0x11) | BIT_13 | BIT_14; - data &= ~(BIT_12); - MP_WritePhyUshort(sc, 0x11, data); - break; - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - ClearMcuAccessRegBit(sc, 0xE052, BIT_0); - ClearEthPhyOcpBit(sc, 0xA442, BIT_12 | BIT_13); - ClearEthPhyOcpBit(sc, 0xA430, BIT_15); - break; - } - - switch (sc->re_type) { - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - re_clear_phy_mcu_patch_request(sc); - break; - } - return ret; + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x0B, 0x6C14); + re_mdio_write(sc, 0x14, 0x7F3D); + re_mdio_write(sc, 0x1C, 0xFAFE); + re_mdio_write(sc, 0x08, 0x07C5); + re_mdio_write(sc, 0x10, 0xF090); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x14, 0x641A); + re_mdio_write(sc, 0x1A, 0x0606); + re_mdio_write(sc, 0x12, 0xF480); + re_mdio_write(sc, 0x13, 0x0747); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x0D, 0x0207); + re_mdio_write(sc, 0x02, 0x5FD0); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x09, 0xA20F); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + PhyRegValue = re_mdio_read(sc, 0x19); + PhyRegValue &= ~BIT_0; + re_mdio_write(sc, 0x19, PhyRegValue); + PhyRegValue = re_mdio_read(sc, 0x10); + PhyRegValue &= ~BIT_10; + re_mdio_write(sc, 0x10, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~BIT_0; + PhyRegValue |= BIT_2; + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x1f, 0x0000); } -static int re_disable_EEE(struct re_softc* sc) +static void re_set_phy_mcu_8168evl_2(struct re_softc *sc) { - int ret; - u_int16_t data; - - ret = 0; - switch (sc->re_type) { - case MACFG_42: - case MACFG_43: - re_eri_write(sc, 0x1B0, 2, 0, ERIAR_ExGMAC); - MP_WritePhyUshort(sc, 0x1F, 0x0004); - MP_WritePhyUshort(sc, 0x10, 0x401F); - MP_WritePhyUshort(sc, 0x19, 0x7030); - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0007); - MP_WritePhyUshort(sc, 0x0E, 0x003C); - MP_WritePhyUshort(sc, 0x0D, 0x4007); - MP_WritePhyUshort(sc, 0x0E, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0003); - MP_WritePhyUshort(sc, 0x0E, 0x0015); - MP_WritePhyUshort(sc, 0x0D, 0x4003); - MP_WritePhyUshort(sc, 0x0E, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0000); - - MP_WritePhyUshort(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); - break; - - case MACFG_53: - re_eri_write(sc, 0x1B0, 2, 0, ERIAR_ExGMAC); - MP_WritePhyUshort(sc, 0x1F, 0x0004); - MP_WritePhyUshort(sc, 0x10, 0x401F); - MP_WritePhyUshort(sc, 0x19, 0x7030); - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0007); - MP_WritePhyUshort(sc, 0x0E, 0x003C); - MP_WritePhyUshort(sc, 0x0D, 0x4007); - MP_WritePhyUshort(sc, 0x0E, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0000); - - MP_WritePhyUshort(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); - break; - - case MACFG_54: - case MACFG_55: - re_eri_write(sc, 0x1B0, 2, 0, ERIAR_ExGMAC); - MP_WritePhyUshort(sc, 0x1F, 0x0004); - MP_WritePhyUshort(sc, 0x10, 0xC07F); - MP_WritePhyUshort(sc, 0x19, 0x7030); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0007); - MP_WritePhyUshort(sc, 0x0E, 0x003C); - MP_WritePhyUshort(sc, 0x0D, 0x4007); - MP_WritePhyUshort(sc, 0x0E, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0000); - - MP_WritePhyUshort(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG); - break; + u_int16_t PhyRegValue; + int i; - case MACFG_36: - case MACFG_37: - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x0020); - data = MP_ReadPhyUshort(sc, 0x15) & ~0x0100; - MP_WritePhyUshort(sc, 0x15, data); - MP_WritePhyUshort(sc, 0x1F, 0x0006); - MP_WritePhyUshort(sc, 0x00, 0x5A00); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0007); - MP_WritePhyUshort(sc, 0x0E, 0x003C); - MP_WritePhyUshort(sc, 0x0D, 0x4007); - MP_WritePhyUshort(sc, 0x0E, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0000); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - if (CSR_READ_1(sc, RE_CFG4) & RL_CFG4_CUSTOMIZED_LED) { - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B82); - data = MP_ReadPhyUshort(sc, 0x06) & ~0x0010; - MP_WritePhyUshort(sc, 0x05, 0x8B82); - MP_WritePhyUshort(sc, 0x06, data); - MP_WritePhyUshort(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + PhyRegValue = re_mdio_read(sc, 0x15); + PhyRegValue &= ~(BIT_12); + re_mdio_write(sc, 0x15, PhyRegValue); + re_mdio_write(sc, 0x00, 0x4800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x002f); + for (i = 0; i < 1000; i++) { + if (re_mdio_read(sc, 0x1c) & BIT_7) + break; + DELAY(100); + } + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + for (i = 0; i < 200; i++) { + if ((re_mdio_read(sc, 0x17) & BIT_0) == 0) + break; + DELAY(100); + } + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0307); + re_mdio_write(sc, 0x15, 0x00AF); + re_mdio_write(sc, 0x19, 0x4060); + re_mdio_write(sc, 0x15, 0x00B0); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x00B1); + re_mdio_write(sc, 0x19, 0x7e00); + re_mdio_write(sc, 0x15, 0x00B2); + re_mdio_write(sc, 0x19, 0x72B0); + re_mdio_write(sc, 0x15, 0x00B3); + re_mdio_write(sc, 0x19, 0x7F00); + re_mdio_write(sc, 0x15, 0x00B4); + re_mdio_write(sc, 0x19, 0x73B0); + re_mdio_write(sc, 0x15, 0x0101); + re_mdio_write(sc, 0x19, 0x0005); + re_mdio_write(sc, 0x15, 0x0103); + re_mdio_write(sc, 0x19, 0x0003); + re_mdio_write(sc, 0x15, 0x0105); + re_mdio_write(sc, 0x19, 0x30FD); + re_mdio_write(sc, 0x15, 0x0106); + re_mdio_write(sc, 0x19, 0x9DF7); + re_mdio_write(sc, 0x15, 0x0107); + re_mdio_write(sc, 0x19, 0x30C6); + re_mdio_write(sc, 0x15, 0x0098); + re_mdio_write(sc, 0x19, 0x7c0b); + re_mdio_write(sc, 0x15, 0x0099); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x00eb); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x00f8); + re_mdio_write(sc, 0x19, 0x6f0b); + re_mdio_write(sc, 0x15, 0x00fe); + re_mdio_write(sc, 0x19, 0x6f0f); + re_mdio_write(sc, 0x15, 0x00db); + re_mdio_write(sc, 0x19, 0x6f09); + re_mdio_write(sc, 0x15, 0x00dc); + re_mdio_write(sc, 0x19, 0xaefd); + re_mdio_write(sc, 0x15, 0x00dd); + re_mdio_write(sc, 0x19, 0x6f0b); + re_mdio_write(sc, 0x15, 0x00de); + re_mdio_write(sc, 0x19, 0xc60b); + re_mdio_write(sc, 0x15, 0x00df); + re_mdio_write(sc, 0x19, 0x00fa); + re_mdio_write(sc, 0x15, 0x00e0); + re_mdio_write(sc, 0x19, 0x30e1); + re_mdio_write(sc, 0x15, 0x020c); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x020e); + re_mdio_write(sc, 0x19, 0x9813); + re_mdio_write(sc, 0x15, 0x020f); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x0210); + re_mdio_write(sc, 0x19, 0x930f); + re_mdio_write(sc, 0x15, 0x0211); + re_mdio_write(sc, 0x19, 0x9206); + re_mdio_write(sc, 0x15, 0x0212); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0213); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0214); + re_mdio_write(sc, 0x19, 0x588f); + re_mdio_write(sc, 0x15, 0x0215); + re_mdio_write(sc, 0x19, 0x5520); + re_mdio_write(sc, 0x15, 0x0216); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x0217); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0218); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0219); + re_mdio_write(sc, 0x19, 0x588d); + re_mdio_write(sc, 0x15, 0x021a); + re_mdio_write(sc, 0x19, 0x5540); + re_mdio_write(sc, 0x15, 0x021b); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x021c); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x021d); + re_mdio_write(sc, 0x19, 0x6840); + re_mdio_write(sc, 0x15, 0x021e); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x021f); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0220); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x0221); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x0222); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0223); + re_mdio_write(sc, 0x19, 0x6840); + re_mdio_write(sc, 0x15, 0x0224); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0225); + re_mdio_write(sc, 0x19, 0x3231); + re_mdio_write(sc, 0x15, 0x0000); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0300); + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x17, 0x2160); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0040); + re_mdio_write(sc, 0x18, 0x0004); + re_mdio_write(sc, 0x18, 0x09d4); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x09e4); + re_mdio_write(sc, 0x19, 0x0800); + re_mdio_write(sc, 0x18, 0x09f4); + re_mdio_write(sc, 0x19, 0xff00); + re_mdio_write(sc, 0x18, 0x0a04); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x0a14); + re_mdio_write(sc, 0x19, 0x0c00); + re_mdio_write(sc, 0x18, 0x0a24); + re_mdio_write(sc, 0x19, 0xff00); + re_mdio_write(sc, 0x18, 0x0a74); + re_mdio_write(sc, 0x19, 0xf600); + re_mdio_write(sc, 0x18, 0x1a24); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x18, 0x1a64); + re_mdio_write(sc, 0x19, 0x0500); + re_mdio_write(sc, 0x18, 0x1a74); + re_mdio_write(sc, 0x19, 0x9500); + re_mdio_write(sc, 0x18, 0x1a84); + re_mdio_write(sc, 0x19, 0x8000); + re_mdio_write(sc, 0x18, 0x1a94); + re_mdio_write(sc, 0x19, 0x7d00); + re_mdio_write(sc, 0x18, 0x1aa4); + re_mdio_write(sc, 0x19, 0x9600); + re_mdio_write(sc, 0x18, 0x1ac4); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x1ad4); + re_mdio_write(sc, 0x19, 0x0800); + re_mdio_write(sc, 0x18, 0x1af4); + re_mdio_write(sc, 0x19, 0xc400); + re_mdio_write(sc, 0x18, 0x1b04); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x1b14); + re_mdio_write(sc, 0x19, 0x0800); + re_mdio_write(sc, 0x18, 0x1b24); + re_mdio_write(sc, 0x19, 0xfd00); + re_mdio_write(sc, 0x18, 0x1b34); + re_mdio_write(sc, 0x19, 0x4000); + re_mdio_write(sc, 0x18, 0x1b44); + re_mdio_write(sc, 0x19, 0x0400); + re_mdio_write(sc, 0x18, 0x1b94); + re_mdio_write(sc, 0x19, 0xf100); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x17, 0x2100); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0040); + re_mdio_write(sc, 0x18, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x48f7); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xa080); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0xf602); + re_mdio_write(sc, 0x06, 0x0115); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x2202); + re_mdio_write(sc, 0x06, 0x80a0); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x3f02); + re_mdio_write(sc, 0x06, 0x0159); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0xbd02); + re_mdio_write(sc, 0x06, 0x80da); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x88e1); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8a1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8b); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8c1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8e1e); + re_mdio_write(sc, 0x06, 0x01a0); + re_mdio_write(sc, 0x06, 0x00c7); + re_mdio_write(sc, 0x06, 0xaebb); + re_mdio_write(sc, 0x06, 0xd481); + re_mdio_write(sc, 0x06, 0xd2e4); + re_mdio_write(sc, 0x06, 0x8b92); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x93d1); + re_mdio_write(sc, 0x06, 0x03bf); + re_mdio_write(sc, 0x06, 0x859e); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x23d1); + re_mdio_write(sc, 0x06, 0x02bf); + re_mdio_write(sc, 0x06, 0x85a1); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x23ee); + re_mdio_write(sc, 0x06, 0x8608); + re_mdio_write(sc, 0x06, 0x03ee); + re_mdio_write(sc, 0x06, 0x860a); + re_mdio_write(sc, 0x06, 0x60ee); + re_mdio_write(sc, 0x06, 0x8610); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8611); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8abe); + re_mdio_write(sc, 0x06, 0x07ee); + re_mdio_write(sc, 0x06, 0x8abf); + re_mdio_write(sc, 0x06, 0x73ee); + re_mdio_write(sc, 0x06, 0x8a95); + re_mdio_write(sc, 0x06, 0x02bf); + re_mdio_write(sc, 0x06, 0x8b88); + re_mdio_write(sc, 0x06, 0xec00); + re_mdio_write(sc, 0x06, 0x19a9); + re_mdio_write(sc, 0x06, 0x8b90); + re_mdio_write(sc, 0x06, 0xf9ee); + re_mdio_write(sc, 0x06, 0xfff6); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xfed1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x8595); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x23d1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x8598); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x2304); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b8a); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x14ee); + re_mdio_write(sc, 0x06, 0x8b8a); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x1f9a); + re_mdio_write(sc, 0x06, 0xe0e4); + re_mdio_write(sc, 0x06, 0x26e1); + re_mdio_write(sc, 0x06, 0xe427); + re_mdio_write(sc, 0x06, 0xeee4); + re_mdio_write(sc, 0x06, 0x2623); + re_mdio_write(sc, 0x06, 0xe5e4); + re_mdio_write(sc, 0x06, 0x27fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8dad); + re_mdio_write(sc, 0x06, 0x2014); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8d00); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0x5a78); + re_mdio_write(sc, 0x06, 0x039e); + re_mdio_write(sc, 0x06, 0x0902); + re_mdio_write(sc, 0x06, 0x05db); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x7b02); + re_mdio_write(sc, 0x06, 0x3231); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x1df6); + re_mdio_write(sc, 0x06, 0x20e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x5c02); + re_mdio_write(sc, 0x06, 0x2bcb); + re_mdio_write(sc, 0x06, 0x022d); + re_mdio_write(sc, 0x06, 0x2902); + re_mdio_write(sc, 0x06, 0x03b4); + re_mdio_write(sc, 0x06, 0x0285); + re_mdio_write(sc, 0x06, 0x6402); + re_mdio_write(sc, 0x06, 0x2eca); + re_mdio_write(sc, 0x06, 0x0284); + re_mdio_write(sc, 0x06, 0xcd02); + re_mdio_write(sc, 0x06, 0x046f); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x210b); + re_mdio_write(sc, 0x06, 0xf621); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x8520); + re_mdio_write(sc, 0x06, 0x021b); + re_mdio_write(sc, 0x06, 0xe8e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad22); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x22e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2308); + re_mdio_write(sc, 0x06, 0xf623); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x311c); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2405); + re_mdio_write(sc, 0x06, 0xf624); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8ee0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x25e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2608); + re_mdio_write(sc, 0x06, 0xf626); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x2df5); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2705); + re_mdio_write(sc, 0x06, 0xf627); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x037a); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x65d2); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x2fe9); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf61e); + re_mdio_write(sc, 0x06, 0x21bf); + re_mdio_write(sc, 0x06, 0x2ff5); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf60c); + re_mdio_write(sc, 0x06, 0x111e); + re_mdio_write(sc, 0x06, 0x21bf); + re_mdio_write(sc, 0x06, 0x2ff8); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf60c); + re_mdio_write(sc, 0x06, 0x121e); + re_mdio_write(sc, 0x06, 0x21bf); + re_mdio_write(sc, 0x06, 0x2ffb); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf60c); + re_mdio_write(sc, 0x06, 0x131e); + re_mdio_write(sc, 0x06, 0x21bf); + re_mdio_write(sc, 0x06, 0x1f97); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf60c); + re_mdio_write(sc, 0x06, 0x141e); + re_mdio_write(sc, 0x06, 0x21bf); + re_mdio_write(sc, 0x06, 0x859b); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf60c); + re_mdio_write(sc, 0x06, 0x161e); + re_mdio_write(sc, 0x06, 0x21e0); + re_mdio_write(sc, 0x06, 0x8a8c); + re_mdio_write(sc, 0x06, 0x1f02); + re_mdio_write(sc, 0x06, 0x9e22); + re_mdio_write(sc, 0x06, 0xe68a); + re_mdio_write(sc, 0x06, 0x8cad); + re_mdio_write(sc, 0x06, 0x3114); + re_mdio_write(sc, 0x06, 0xad30); + re_mdio_write(sc, 0x06, 0x11ef); + re_mdio_write(sc, 0x06, 0x0258); + re_mdio_write(sc, 0x06, 0x0c9e); + re_mdio_write(sc, 0x06, 0x07ad); + re_mdio_write(sc, 0x06, 0x3608); + re_mdio_write(sc, 0x06, 0x5a30); + re_mdio_write(sc, 0x06, 0x9f04); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xae02); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf2f); + re_mdio_write(sc, 0x06, 0xf202); + re_mdio_write(sc, 0x06, 0x3723); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xface); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69fa); + re_mdio_write(sc, 0x06, 0xd401); + re_mdio_write(sc, 0x06, 0x55b4); + re_mdio_write(sc, 0x06, 0xfebf); + re_mdio_write(sc, 0x06, 0x85a7); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf6ac); + re_mdio_write(sc, 0x06, 0x280b); + re_mdio_write(sc, 0x06, 0xbf85); + re_mdio_write(sc, 0x06, 0xa402); + re_mdio_write(sc, 0x06, 0x36f6); + re_mdio_write(sc, 0x06, 0xac28); + re_mdio_write(sc, 0x06, 0x49ae); + re_mdio_write(sc, 0x06, 0x64bf); + re_mdio_write(sc, 0x06, 0x85a4); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf6ac); + re_mdio_write(sc, 0x06, 0x285b); + re_mdio_write(sc, 0x06, 0xd000); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x60ac); + re_mdio_write(sc, 0x06, 0x2105); + re_mdio_write(sc, 0x06, 0xac22); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x4ebf); + re_mdio_write(sc, 0x06, 0xe0c4); + re_mdio_write(sc, 0x06, 0xbe86); + re_mdio_write(sc, 0x06, 0x14d2); + re_mdio_write(sc, 0x06, 0x04d8); + re_mdio_write(sc, 0x06, 0x19d9); + re_mdio_write(sc, 0x06, 0x1907); + re_mdio_write(sc, 0x06, 0xdc19); + re_mdio_write(sc, 0x06, 0xdd19); + re_mdio_write(sc, 0x06, 0x0789); + re_mdio_write(sc, 0x06, 0x89ef); + re_mdio_write(sc, 0x06, 0x645e); + re_mdio_write(sc, 0x06, 0x07ff); + re_mdio_write(sc, 0x06, 0x0d65); + re_mdio_write(sc, 0x06, 0x5cf8); + re_mdio_write(sc, 0x06, 0x001e); + re_mdio_write(sc, 0x06, 0x46dc); + re_mdio_write(sc, 0x06, 0x19dd); + re_mdio_write(sc, 0x06, 0x19b2); + re_mdio_write(sc, 0x06, 0xe2d4); + re_mdio_write(sc, 0x06, 0x0001); + re_mdio_write(sc, 0x06, 0xbf85); + re_mdio_write(sc, 0x06, 0xa402); + re_mdio_write(sc, 0x06, 0x3723); + re_mdio_write(sc, 0x06, 0xae1d); + re_mdio_write(sc, 0x06, 0xbee0); + re_mdio_write(sc, 0x06, 0xc4bf); + re_mdio_write(sc, 0x06, 0x8614); + re_mdio_write(sc, 0x06, 0xd204); + re_mdio_write(sc, 0x06, 0xd819); + re_mdio_write(sc, 0x06, 0xd919); + re_mdio_write(sc, 0x06, 0x07dc); + re_mdio_write(sc, 0x06, 0x19dd); + re_mdio_write(sc, 0x06, 0x1907); + re_mdio_write(sc, 0x06, 0xb2f4); + re_mdio_write(sc, 0x06, 0xd400); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x85a4); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x23fe); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfec6); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc05); + re_mdio_write(sc, 0x06, 0xf9e2); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe3e0); + re_mdio_write(sc, 0x06, 0xeb5a); + re_mdio_write(sc, 0x06, 0x070c); + re_mdio_write(sc, 0x06, 0x031e); + re_mdio_write(sc, 0x06, 0x20e6); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe7e0); + re_mdio_write(sc, 0x06, 0xebe0); + re_mdio_write(sc, 0x06, 0xe0fc); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0xfdfd); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac26); + re_mdio_write(sc, 0x06, 0x1ae0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x14e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xac20); + re_mdio_write(sc, 0x06, 0x0ee0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xac23); + re_mdio_write(sc, 0x06, 0x08e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xac24); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x3802); + re_mdio_write(sc, 0x06, 0x1ab5); + re_mdio_write(sc, 0x06, 0xeee4); + re_mdio_write(sc, 0x06, 0x1c04); + re_mdio_write(sc, 0x06, 0xeee4); + re_mdio_write(sc, 0x06, 0x1d04); + re_mdio_write(sc, 0x06, 0xe2e0); + re_mdio_write(sc, 0x06, 0x7ce3); + re_mdio_write(sc, 0x06, 0xe07d); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x38e1); + re_mdio_write(sc, 0x06, 0xe039); + re_mdio_write(sc, 0x06, 0xad2e); + re_mdio_write(sc, 0x06, 0x1bad); + re_mdio_write(sc, 0x06, 0x390d); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf21); + re_mdio_write(sc, 0x06, 0xd502); + re_mdio_write(sc, 0x06, 0x3723); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0xd8ae); + re_mdio_write(sc, 0x06, 0x0bac); + re_mdio_write(sc, 0x06, 0x3802); + re_mdio_write(sc, 0x06, 0xae06); + re_mdio_write(sc, 0x06, 0x0283); + re_mdio_write(sc, 0x06, 0x1802); + re_mdio_write(sc, 0x06, 0x8360); + re_mdio_write(sc, 0x06, 0x021a); + re_mdio_write(sc, 0x06, 0xc6fd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e1); + re_mdio_write(sc, 0x06, 0x8af4); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2605); + re_mdio_write(sc, 0x06, 0x0222); + re_mdio_write(sc, 0x06, 0xa4f7); + re_mdio_write(sc, 0x06, 0x28e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xad21); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x23a9); + re_mdio_write(sc, 0x06, 0xf729); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ad); + re_mdio_write(sc, 0x06, 0x2005); + re_mdio_write(sc, 0x06, 0x0214); + re_mdio_write(sc, 0x06, 0xabf7); + re_mdio_write(sc, 0x06, 0x2ae0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad23); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x12e7); + re_mdio_write(sc, 0x06, 0xf72b); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2405); + re_mdio_write(sc, 0x06, 0x0283); + re_mdio_write(sc, 0x06, 0xbcf7); + re_mdio_write(sc, 0x06, 0x2ce5); + re_mdio_write(sc, 0x06, 0x8af4); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x21e5); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2109); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xf4ac); + re_mdio_write(sc, 0x06, 0x2003); + re_mdio_write(sc, 0x06, 0x0223); + re_mdio_write(sc, 0x06, 0x98e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x09e0); + re_mdio_write(sc, 0x06, 0x8af4); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x13fb); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ad); + re_mdio_write(sc, 0x06, 0x2309); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xf4ac); + re_mdio_write(sc, 0x06, 0x2203); + re_mdio_write(sc, 0x06, 0x0212); + re_mdio_write(sc, 0x06, 0xfae0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x09e0); + re_mdio_write(sc, 0x06, 0x8af4); + re_mdio_write(sc, 0x06, 0xac23); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x83c1); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e1); + re_mdio_write(sc, 0x06, 0x8af4); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2608); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0xd2ad); + re_mdio_write(sc, 0x06, 0x2502); + re_mdio_write(sc, 0x06, 0xf628); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x210a); + re_mdio_write(sc, 0x06, 0xe084); + re_mdio_write(sc, 0x06, 0x0af6); + re_mdio_write(sc, 0x06, 0x27a0); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0xf629); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ad); + re_mdio_write(sc, 0x06, 0x2008); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xe8ad); + re_mdio_write(sc, 0x06, 0x2102); + re_mdio_write(sc, 0x06, 0xf62a); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ad); + re_mdio_write(sc, 0x06, 0x2308); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x20a0); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0xf62b); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2408); + re_mdio_write(sc, 0x06, 0xe086); + re_mdio_write(sc, 0x06, 0x02a0); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0xf62c); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0xf4a1); + re_mdio_write(sc, 0x06, 0x0008); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf21); + re_mdio_write(sc, 0x06, 0xd502); + re_mdio_write(sc, 0x06, 0x3723); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x0200); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x241e); + re_mdio_write(sc, 0x06, 0xe086); + re_mdio_write(sc, 0x06, 0x02a0); + re_mdio_write(sc, 0x06, 0x0005); + re_mdio_write(sc, 0x06, 0x0283); + re_mdio_write(sc, 0x06, 0xe8ae); + re_mdio_write(sc, 0x06, 0xf5a0); + re_mdio_write(sc, 0x06, 0x0105); + re_mdio_write(sc, 0x06, 0x0283); + re_mdio_write(sc, 0x06, 0xf8ae); + re_mdio_write(sc, 0x06, 0x0ba0); + re_mdio_write(sc, 0x06, 0x0205); + re_mdio_write(sc, 0x06, 0x0284); + re_mdio_write(sc, 0x06, 0x14ae); + re_mdio_write(sc, 0x06, 0x03a0); + re_mdio_write(sc, 0x06, 0x0300); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0x0284); + re_mdio_write(sc, 0x06, 0x2bee); + re_mdio_write(sc, 0x06, 0x8602); + re_mdio_write(sc, 0x06, 0x01ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8ee); + re_mdio_write(sc, 0x06, 0x8609); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x8461); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xae10); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8608); + re_mdio_write(sc, 0x06, 0xe186); + re_mdio_write(sc, 0x06, 0x091f); + re_mdio_write(sc, 0x06, 0x019e); + re_mdio_write(sc, 0x06, 0x0611); + re_mdio_write(sc, 0x06, 0xe586); + re_mdio_write(sc, 0x06, 0x09ae); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0x8602); + re_mdio_write(sc, 0x06, 0x01fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xfbbf); + re_mdio_write(sc, 0x06, 0x8604); + re_mdio_write(sc, 0x06, 0xef79); + re_mdio_write(sc, 0x06, 0xd200); + re_mdio_write(sc, 0x06, 0xd400); + re_mdio_write(sc, 0x06, 0x221e); + re_mdio_write(sc, 0x06, 0x02bf); + re_mdio_write(sc, 0x06, 0x2fec); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x23bf); + re_mdio_write(sc, 0x06, 0x13f2); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf60d); + re_mdio_write(sc, 0x06, 0x4559); + re_mdio_write(sc, 0x06, 0x1fef); + re_mdio_write(sc, 0x06, 0x97dd); + re_mdio_write(sc, 0x06, 0xd308); + re_mdio_write(sc, 0x06, 0x1a93); + re_mdio_write(sc, 0x06, 0xdd12); + re_mdio_write(sc, 0x06, 0x17a2); + re_mdio_write(sc, 0x06, 0x04de); + re_mdio_write(sc, 0x06, 0xffef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xfbee); + re_mdio_write(sc, 0x06, 0x8602); + re_mdio_write(sc, 0x06, 0x03d5); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x06, 0xbf86); + re_mdio_write(sc, 0x06, 0x04ef); + re_mdio_write(sc, 0x06, 0x79ef); + re_mdio_write(sc, 0x06, 0x45bf); + re_mdio_write(sc, 0x06, 0x2fec); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x23bf); + re_mdio_write(sc, 0x06, 0x13f2); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf6ad); + re_mdio_write(sc, 0x06, 0x2702); + re_mdio_write(sc, 0x06, 0x78ff); + re_mdio_write(sc, 0x06, 0xe186); + re_mdio_write(sc, 0x06, 0x0a1b); + re_mdio_write(sc, 0x06, 0x01aa); + re_mdio_write(sc, 0x06, 0x2eef); + re_mdio_write(sc, 0x06, 0x97d9); + re_mdio_write(sc, 0x06, 0x7900); + re_mdio_write(sc, 0x06, 0x9e2b); + re_mdio_write(sc, 0x06, 0x81dd); + re_mdio_write(sc, 0x06, 0xbf85); + re_mdio_write(sc, 0x06, 0xad02); + re_mdio_write(sc, 0x06, 0x3723); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xef02); + re_mdio_write(sc, 0x06, 0x100c); + re_mdio_write(sc, 0x06, 0x11b0); + re_mdio_write(sc, 0x06, 0xfc0d); + re_mdio_write(sc, 0x06, 0x11bf); + re_mdio_write(sc, 0x06, 0x85aa); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x23d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x85aa); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x23ee); + re_mdio_write(sc, 0x06, 0x8602); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x0413); + re_mdio_write(sc, 0x06, 0xa38b); + re_mdio_write(sc, 0x06, 0xb4d3); + re_mdio_write(sc, 0x06, 0x8012); + re_mdio_write(sc, 0x06, 0x17a2); + re_mdio_write(sc, 0x06, 0x04ad); + re_mdio_write(sc, 0x06, 0xffef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x48e0); + re_mdio_write(sc, 0x06, 0x8a96); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0x977c); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x9e35); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0x9600); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0x9700); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xbee1); + re_mdio_write(sc, 0x06, 0x8abf); + re_mdio_write(sc, 0x06, 0xe286); + re_mdio_write(sc, 0x06, 0x10e3); + re_mdio_write(sc, 0x06, 0x8611); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0x1aad); + re_mdio_write(sc, 0x06, 0x2012); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0x9603); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0x97b7); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x1000); + re_mdio_write(sc, 0x06, 0xee86); + re_mdio_write(sc, 0x06, 0x1100); + re_mdio_write(sc, 0x06, 0xae11); + re_mdio_write(sc, 0x06, 0x15e6); + re_mdio_write(sc, 0x06, 0x8610); + re_mdio_write(sc, 0x06, 0xe786); + re_mdio_write(sc, 0x06, 0x11ae); + re_mdio_write(sc, 0x06, 0x08ee); + re_mdio_write(sc, 0x06, 0x8610); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8611); + re_mdio_write(sc, 0x06, 0x00fd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0xe001); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x32e0); + re_mdio_write(sc, 0x06, 0x8b40); + re_mdio_write(sc, 0x06, 0xf720); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x40bf); + re_mdio_write(sc, 0x06, 0x31f5); + re_mdio_write(sc, 0x06, 0x0236); + re_mdio_write(sc, 0x06, 0xf6ad); + re_mdio_write(sc, 0x06, 0x2821); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x20e1); + re_mdio_write(sc, 0x06, 0xe021); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x18e0); + re_mdio_write(sc, 0x06, 0x8b40); + re_mdio_write(sc, 0x06, 0xf620); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x40ee); + re_mdio_write(sc, 0x06, 0x8b3b); + re_mdio_write(sc, 0x06, 0xffe0); + re_mdio_write(sc, 0x06, 0x8a8a); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0x8be4); + re_mdio_write(sc, 0x06, 0xe000); + re_mdio_write(sc, 0x06, 0xe5e0); + re_mdio_write(sc, 0x06, 0x01ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x80ad); + re_mdio_write(sc, 0x06, 0x2722); + re_mdio_write(sc, 0x06, 0xbf44); + re_mdio_write(sc, 0x06, 0xfc02); + re_mdio_write(sc, 0x06, 0x36f6); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x441f); + re_mdio_write(sc, 0x06, 0x019e); + re_mdio_write(sc, 0x06, 0x15e5); + re_mdio_write(sc, 0x06, 0x8b44); + re_mdio_write(sc, 0x06, 0xad29); + re_mdio_write(sc, 0x06, 0x07ac); + re_mdio_write(sc, 0x06, 0x2804); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xae02); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf85); + re_mdio_write(sc, 0x06, 0xb002); + re_mdio_write(sc, 0x06, 0x3723); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x0400); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0x77e1); + re_mdio_write(sc, 0x06, 0x40dd); + re_mdio_write(sc, 0x06, 0xe022); + re_mdio_write(sc, 0x06, 0x32e1); + re_mdio_write(sc, 0x06, 0x5074); + re_mdio_write(sc, 0x06, 0xe144); + re_mdio_write(sc, 0x06, 0xffe0); + re_mdio_write(sc, 0x06, 0xdaff); + re_mdio_write(sc, 0x06, 0xe0c0); + re_mdio_write(sc, 0x06, 0x52e0); + re_mdio_write(sc, 0x06, 0xeed9); + re_mdio_write(sc, 0x06, 0xe04c); + re_mdio_write(sc, 0x06, 0xbbe0); + re_mdio_write(sc, 0x06, 0x2a00); + re_mdio_write(sc, 0x05, 0xe142); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06, PhyRegValue); + re_mdio_write(sc, 0x05, 0xe140); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x00); + if (PhyRegValue & BIT_7) + break; } - break; - - case MACFG_50: - case MACFG_51: - case MACFG_52: - data = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC) & ~0x0003; - re_eri_write(sc, 0x1B0, 4, data, ERIAR_ExGMAC); - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B85); - data = MP_ReadPhyUshort(sc, 0x06) & ~0x2000; - MP_WritePhyUshort(sc, 0x06, data); - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x0020); - data = MP_ReadPhyUshort(sc, 0x15) & ~0x0100; - MP_WritePhyUshort(sc, 0x15, data); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0007); - MP_WritePhyUshort(sc, 0x0E, 0x003C); - MP_WritePhyUshort(sc, 0x0D, 0x4007); - MP_WritePhyUshort(sc, 0x0E, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0000); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - break; - - case MACFG_38: - case MACFG_39: - data = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); - data &= ~(BIT_1 | BIT_0); - re_eri_write(sc, 0x1B0, 4, data, ERIAR_ExGMAC); - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B85); - data = MP_ReadPhyUshort(sc, 0x06); - data &= ~BIT_13; - MP_WritePhyUshort(sc, 0x06, data); - MP_WritePhyUshort(sc, 0x1F, 0x0004); - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0020); - data = MP_ReadPhyUshort(sc, 0x15); - data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x15, data); - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0007); - MP_WritePhyUshort(sc, 0x0E, 0x003C); - MP_WritePhyUshort(sc, 0x0D, 0x4007); - MP_WritePhyUshort(sc, 0x0E, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0000); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - break; - - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - data = re_eri_read(sc, 0x1B0, 4, ERIAR_ExGMAC); - data &= ~(BIT_1 | BIT_0); - re_eri_write(sc, 0x1B0, 4, data, ERIAR_ExGMAC); - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - data = MP_ReadPhyUshort(sc, 0x11); - if (sc->re_type == MACFG_75) - MP_WritePhyUshort(sc, 0x11, data | BIT_4); - else - MP_WritePhyUshort(sc, 0x11, data & ~BIT_4); - MP_WritePhyUshort(sc, 0x1F, 0x0A5D); - MP_WritePhyUshort(sc, 0x10, 0x0000); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - break; - - case MACFG_80: - case MACFG_81: - ClearMcuAccessRegBit(sc, 0xE040, (BIT_1 | BIT_0)); - ClearMcuAccessRegBit(sc, 0xEB62, (BIT_2 | BIT_1)); - - ClearEthPhyOcpBit(sc, 0xA432, BIT_4); - ClearEthPhyOcpBit(sc, 0xA5D0, (BIT_2 | BIT_1)); - ClearEthPhyOcpBit(sc, 0xA6D4, BIT_0); - - ClearEthPhyOcpBit(sc, 0xA6D8, BIT_4); - ClearEthPhyOcpBit(sc, 0xA428, BIT_7); - ClearEthPhyOcpBit(sc, 0xA4A2, BIT_9); - break; - - case MACFG_82: - case MACFG_83: - ClearMcuAccessRegBit(sc, 0xE040, (BIT_1 | BIT_0)); - - ClearEthPhyOcpBit(sc, 0xA5D0, (BIT_2 | BIT_1)); - ClearEthPhyOcpBit(sc, 0xA6D4, BIT_0); - - ClearEthPhyOcpBit(sc, 0xA6D8, BIT_4); - ClearEthPhyOcpBit(sc, 0xA428, BIT_7); - ClearEthPhyOcpBit(sc, 0xA4A2, BIT_9); - break; - - case MACFG_90: - case MACFG_91: - case MACFG_92: - ClearMcuAccessRegBit(sc, 0xE040, (BIT_1 | BIT_0)); - - ClearEthPhyOcpBit(sc, 0xA5D0, (BIT_2 | BIT_1)); - ClearEthPhyOcpBit(sc, 0xA6D4, (BIT_0 | BIT_1)); - - ClearEthPhyOcpBit(sc, 0xA428, BIT_7); - ClearEthPhyOcpBit(sc, 0xA4A2, BIT_9); - break; - - default: - ret = -EOPNOTSUPP; - break; - } - - switch (sc->re_type) { - case MACFG_68: - case MACFG_69: - case MACFG_74: - case MACFG_75: - MP_WritePhyUshort(sc, 0x1F, 0x0A42); - ClearEthPhyBit(sc, 0x14, BIT_7); - MP_WritePhyUshort(sc, 0x1F, 0x0A4A); - ClearEthPhyBit(sc, 0x11, BIT_9); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - break; - } - - /*Advanced EEE*/ - switch (sc->re_type) { - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - re_set_phy_mcu_patch_request(sc); - break; - } - - switch (sc->re_type) { - case MACFG_59: - re_eri_write(sc, 0x1EA, 1, 0x00, ERIAR_ExGMAC); - - MP_WritePhyUshort(sc, 0x1F, 0x0A42); - data = MP_ReadPhyUshort(sc, 0x16); - data &= ~(BIT_1); - MP_WritePhyUshort(sc, 0x16, data); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - break; - case MACFG_60: - data = MP_ReadMcuAccessRegWord(sc, 0xE052); - data &= ~(BIT_0); - MP_WriteMcuAccessRegWord(sc, 0xE052, data); - - MP_WritePhyUshort(sc, 0x1F, 0x0A42); - data = MP_ReadPhyUshort(sc, 0x16); - data &= ~(BIT_1); - MP_WritePhyUshort(sc, 0x16, data); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - break; - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - data = MP_ReadMcuAccessRegWord(sc, 0xE052); - data &= ~(BIT_0); - MP_WriteMcuAccessRegWord(sc, 0xE052, data); - break; - case MACFG_68: - case MACFG_69: - case MACFG_74: - case MACFG_75: - data = MP_ReadMcuAccessRegWord(sc, 0xE052); - data &= ~(BIT_0); - MP_WriteMcuAccessRegWord(sc, 0xE052, data); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - data = MP_ReadPhyUshort(sc, 0x10) & ~(BIT_15); - MP_WritePhyUshort(sc, 0x10, data); - - MP_WritePhyUshort(sc, 0x1F, 0x0A44); - data = MP_ReadPhyUshort(sc, 0x11) & ~(BIT_12 | BIT_13 | BIT_14); - MP_WritePhyUshort(sc, 0x11, data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - break; - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - ClearMcuAccessRegBit(sc, 0xE052, BIT_0); - ClearEthPhyOcpBit(sc, 0xA442, BIT_12 | BIT_13); - ClearEthPhyOcpBit(sc, 0xA430, BIT_15); - break; - } - - switch (sc->re_type) { - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - re_clear_phy_mcu_patch_request(sc); - break; - } - return ret; + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x09, 0xA20F); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + PhyRegValue = re_mdio_read(sc, 0x19); + PhyRegValue &= ~BIT_0; + re_mdio_write(sc, 0x19, PhyRegValue); + PhyRegValue = re_mdio_read(sc, 0x10); + PhyRegValue &= ~BIT_10; + re_mdio_write(sc, 0x10, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0042); + re_mdio_write(sc, 0x18, 0x2300); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + if (sc->RequiredSecLanDonglePatch) + PhyRegValue &= ~(BIT_2); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); } -static int re_phy_ram_code_check(struct re_softc* sc) +static void re_set_phy_mcu_8168f_1(struct re_softc *sc) { - u_int16_t PhyRegValue; - int retval = TRUE; - - switch (sc->re_type) { - case MACFG_56: - MP_WritePhyUshort(sc, 0x1f, 0x0A40); - PhyRegValue = MP_ReadPhyUshort(sc, 0x10); - PhyRegValue &= ~(BIT_11); - MP_WritePhyUshort(sc, 0x10, PhyRegValue); - - - MP_WritePhyUshort(sc, 0x1f, 0x0A00); - PhyRegValue = MP_ReadPhyUshort(sc, 0x10); - PhyRegValue &= ~(BIT_12 | BIT_13 | BIT_14 | BIT_15); - MP_WritePhyUshort(sc, 0x10, PhyRegValue); - - MP_WritePhyUshort(sc, 0x1f, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8010); - PhyRegValue = MP_ReadPhyUshort(sc, 0x14); - PhyRegValue &= ~(BIT_11); - MP_WritePhyUshort(sc, 0x14, PhyRegValue); - - retval = re_set_phy_mcu_patch_request(sc); - - MP_WritePhyUshort(sc, 0x1f, 0x0A40); - MP_WritePhyUshort(sc, 0x10, 0x0140); + u_int16_t PhyRegValue; + int i; - MP_WritePhyUshort(sc, 0x1f, 0x0A4A); - PhyRegValue = MP_ReadPhyUshort(sc, 0x13); - PhyRegValue &= ~(BIT_6); - PhyRegValue |= (BIT_7); - MP_WritePhyUshort(sc, 0x13, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + PhyRegValue = re_mdio_read(sc, 0x15); + PhyRegValue &= ~(BIT_12); + re_mdio_write(sc, 0x15, PhyRegValue); + re_mdio_write(sc, 0x00, 0x4800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x002f); + for (i = 0; i < 1000; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x1c); + if (PhyRegValue & BIT_7) + break; + } + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x18); + if (!(PhyRegValue & BIT_0)) + break; + } + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0307); + re_mdio_write(sc, 0x15, 0x0194); + re_mdio_write(sc, 0x19, 0x407D); + re_mdio_write(sc, 0x15, 0x0098); + re_mdio_write(sc, 0x19, 0x7c0b); + re_mdio_write(sc, 0x15, 0x0099); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x00eb); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x00f8); + re_mdio_write(sc, 0x19, 0x6f0b); + re_mdio_write(sc, 0x15, 0x00fe); + re_mdio_write(sc, 0x19, 0x6f0f); + re_mdio_write(sc, 0x15, 0x00db); + re_mdio_write(sc, 0x19, 0x6f09); + re_mdio_write(sc, 0x15, 0x00dc); + re_mdio_write(sc, 0x19, 0xaefd); + re_mdio_write(sc, 0x15, 0x00dd); + re_mdio_write(sc, 0x19, 0x6f0b); + re_mdio_write(sc, 0x15, 0x00de); + re_mdio_write(sc, 0x19, 0xc60b); + re_mdio_write(sc, 0x15, 0x00df); + re_mdio_write(sc, 0x19, 0x00fa); + re_mdio_write(sc, 0x15, 0x00e0); + re_mdio_write(sc, 0x19, 0x30e1); + re_mdio_write(sc, 0x15, 0x020c); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x020e); + re_mdio_write(sc, 0x19, 0x9813); + re_mdio_write(sc, 0x15, 0x020f); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x0210); + re_mdio_write(sc, 0x19, 0x930f); + re_mdio_write(sc, 0x15, 0x0211); + re_mdio_write(sc, 0x19, 0x9206); + re_mdio_write(sc, 0x15, 0x0212); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0213); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0214); + re_mdio_write(sc, 0x19, 0x588f); + re_mdio_write(sc, 0x15, 0x0215); + re_mdio_write(sc, 0x19, 0x5520); + re_mdio_write(sc, 0x15, 0x0216); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x0217); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0218); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0219); + re_mdio_write(sc, 0x19, 0x588d); + re_mdio_write(sc, 0x15, 0x021a); + re_mdio_write(sc, 0x19, 0x5540); + re_mdio_write(sc, 0x15, 0x021b); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x021c); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x021d); + re_mdio_write(sc, 0x19, 0x6840); + re_mdio_write(sc, 0x15, 0x021e); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x021f); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0220); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x0221); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x0222); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0223); + re_mdio_write(sc, 0x19, 0x6840); + re_mdio_write(sc, 0x15, 0x0224); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0225); + re_mdio_write(sc, 0x19, 0x3231); + re_mdio_write(sc, 0x15, 0x0000); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0300); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x48f7); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xa080); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0xf602); + re_mdio_write(sc, 0x06, 0x0118); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x2502); + re_mdio_write(sc, 0x06, 0x8090); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x4202); + re_mdio_write(sc, 0x06, 0x015c); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0xad02); + re_mdio_write(sc, 0x06, 0x80ca); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x88e1); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8a1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8b); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8c1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8e1e); + re_mdio_write(sc, 0x06, 0x01a0); + re_mdio_write(sc, 0x06, 0x00c7); + re_mdio_write(sc, 0x06, 0xaebb); + re_mdio_write(sc, 0x06, 0xd484); + re_mdio_write(sc, 0x06, 0x3ce4); + re_mdio_write(sc, 0x06, 0x8b92); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x93ee); + re_mdio_write(sc, 0x06, 0x8ac8); + re_mdio_write(sc, 0x06, 0x03ee); + re_mdio_write(sc, 0x06, 0x8aca); + re_mdio_write(sc, 0x06, 0x60ee); + re_mdio_write(sc, 0x06, 0x8ac0); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8ac1); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8abe); + re_mdio_write(sc, 0x06, 0x07ee); + re_mdio_write(sc, 0x06, 0x8abf); + re_mdio_write(sc, 0x06, 0x73ee); + re_mdio_write(sc, 0x06, 0x8a95); + re_mdio_write(sc, 0x06, 0x02bf); + re_mdio_write(sc, 0x06, 0x8b88); + re_mdio_write(sc, 0x06, 0xec00); + re_mdio_write(sc, 0x06, 0x19a9); + re_mdio_write(sc, 0x06, 0x8b90); + re_mdio_write(sc, 0x06, 0xf9ee); + re_mdio_write(sc, 0x06, 0xfff6); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xfed1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x85a4); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x7dd1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x85a7); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x7d04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b8a); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x14ee); + re_mdio_write(sc, 0x06, 0x8b8a); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x204b); + re_mdio_write(sc, 0x06, 0xe0e4); + re_mdio_write(sc, 0x06, 0x26e1); + re_mdio_write(sc, 0x06, 0xe427); + re_mdio_write(sc, 0x06, 0xeee4); + re_mdio_write(sc, 0x06, 0x2623); + re_mdio_write(sc, 0x06, 0xe5e4); + re_mdio_write(sc, 0x06, 0x27fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8dad); + re_mdio_write(sc, 0x06, 0x2014); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8d00); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0x5a78); + re_mdio_write(sc, 0x06, 0x039e); + re_mdio_write(sc, 0x06, 0x0902); + re_mdio_write(sc, 0x06, 0x05e8); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x4f02); + re_mdio_write(sc, 0x06, 0x326c); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x1df6); + re_mdio_write(sc, 0x06, 0x20e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x0902); + re_mdio_write(sc, 0x06, 0x2ab0); + re_mdio_write(sc, 0x06, 0x0285); + re_mdio_write(sc, 0x06, 0x1602); + re_mdio_write(sc, 0x06, 0x03ba); + re_mdio_write(sc, 0x06, 0x0284); + re_mdio_write(sc, 0x06, 0xe502); + re_mdio_write(sc, 0x06, 0x2df1); + re_mdio_write(sc, 0x06, 0x0283); + re_mdio_write(sc, 0x06, 0x8302); + re_mdio_write(sc, 0x06, 0x0475); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x210b); + re_mdio_write(sc, 0x06, 0xf621); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x83f8); + re_mdio_write(sc, 0x06, 0x021c); + re_mdio_write(sc, 0x06, 0x99e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad22); + re_mdio_write(sc, 0x06, 0x08f6); + re_mdio_write(sc, 0x06, 0x22e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0235); + re_mdio_write(sc, 0x06, 0x63e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad23); + re_mdio_write(sc, 0x06, 0x08f6); + re_mdio_write(sc, 0x06, 0x23e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0231); + re_mdio_write(sc, 0x06, 0x57e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x24e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2505); + re_mdio_write(sc, 0x06, 0xf625); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8ee0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x08f6); + re_mdio_write(sc, 0x06, 0x26e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x022d); + re_mdio_write(sc, 0x06, 0x1ce0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x27e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x80fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac26); + re_mdio_write(sc, 0x06, 0x1ae0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x14e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xac20); + re_mdio_write(sc, 0x06, 0x0ee0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xac23); + re_mdio_write(sc, 0x06, 0x08e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xac24); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x3802); + re_mdio_write(sc, 0x06, 0x1ac2); + re_mdio_write(sc, 0x06, 0xeee4); + re_mdio_write(sc, 0x06, 0x1c04); + re_mdio_write(sc, 0x06, 0xeee4); + re_mdio_write(sc, 0x06, 0x1d04); + re_mdio_write(sc, 0x06, 0xe2e0); + re_mdio_write(sc, 0x06, 0x7ce3); + re_mdio_write(sc, 0x06, 0xe07d); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x38e1); + re_mdio_write(sc, 0x06, 0xe039); + re_mdio_write(sc, 0x06, 0xad2e); + re_mdio_write(sc, 0x06, 0x1bad); + re_mdio_write(sc, 0x06, 0x390d); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf22); + re_mdio_write(sc, 0x06, 0x7a02); + re_mdio_write(sc, 0x06, 0x387d); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0xacae); + re_mdio_write(sc, 0x06, 0x0bac); + re_mdio_write(sc, 0x06, 0x3802); + re_mdio_write(sc, 0x06, 0xae06); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0xe902); + re_mdio_write(sc, 0x06, 0x822e); + re_mdio_write(sc, 0x06, 0x021a); + re_mdio_write(sc, 0x06, 0xd3fd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e1); + re_mdio_write(sc, 0x06, 0x8af4); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2602); + re_mdio_write(sc, 0x06, 0xf728); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2105); + re_mdio_write(sc, 0x06, 0x0222); + re_mdio_write(sc, 0x06, 0x8ef7); + re_mdio_write(sc, 0x06, 0x29e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x14b8); + re_mdio_write(sc, 0x06, 0xf72a); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ad); + re_mdio_write(sc, 0x06, 0x2305); + re_mdio_write(sc, 0x06, 0x0212); + re_mdio_write(sc, 0x06, 0xf4f7); + re_mdio_write(sc, 0x06, 0x2be0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0x8284); + re_mdio_write(sc, 0x06, 0xf72c); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0xf4fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2600); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2109); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xf4ac); + re_mdio_write(sc, 0x06, 0x2003); + re_mdio_write(sc, 0x06, 0x0222); + re_mdio_write(sc, 0x06, 0x7de0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x09e0); + re_mdio_write(sc, 0x06, 0x8af4); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x1408); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ad); + re_mdio_write(sc, 0x06, 0x2309); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xf4ac); + re_mdio_write(sc, 0x06, 0x2203); + re_mdio_write(sc, 0x06, 0x0213); + re_mdio_write(sc, 0x06, 0x07e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x09e0); + re_mdio_write(sc, 0x06, 0x8af4); + re_mdio_write(sc, 0x06, 0xac23); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0x8289); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e1); + re_mdio_write(sc, 0x06, 0x8af4); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x2602); + re_mdio_write(sc, 0x06, 0xf628); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ad); + re_mdio_write(sc, 0x06, 0x210a); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0xecf6); + re_mdio_write(sc, 0x06, 0x27a0); + re_mdio_write(sc, 0x06, 0x0502); + re_mdio_write(sc, 0x06, 0xf629); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ad); + re_mdio_write(sc, 0x06, 0x2008); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xe8ad); + re_mdio_write(sc, 0x06, 0x2102); + re_mdio_write(sc, 0x06, 0xf62a); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ad); + re_mdio_write(sc, 0x06, 0x2308); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x20a0); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0xf62b); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x2408); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xc2a0); + re_mdio_write(sc, 0x06, 0x0302); + re_mdio_write(sc, 0x06, 0xf62c); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0xf4a1); + re_mdio_write(sc, 0x06, 0x0008); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf22); + re_mdio_write(sc, 0x06, 0x7a02); + re_mdio_write(sc, 0x06, 0x387d); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xc200); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ad); + re_mdio_write(sc, 0x06, 0x241e); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xc2a0); + re_mdio_write(sc, 0x06, 0x0005); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0xb0ae); + re_mdio_write(sc, 0x06, 0xf5a0); + re_mdio_write(sc, 0x06, 0x0105); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0xc0ae); + re_mdio_write(sc, 0x06, 0x0ba0); + re_mdio_write(sc, 0x06, 0x0205); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0xcaae); + re_mdio_write(sc, 0x06, 0x03a0); + re_mdio_write(sc, 0x06, 0x0300); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0xe1ee); + re_mdio_write(sc, 0x06, 0x8ac2); + re_mdio_write(sc, 0x06, 0x01ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8ee); + re_mdio_write(sc, 0x06, 0x8ac9); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x8317); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8ac8); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0xc91f); + re_mdio_write(sc, 0x06, 0x019e); + re_mdio_write(sc, 0x06, 0x0611); + re_mdio_write(sc, 0x06, 0xe58a); + re_mdio_write(sc, 0x06, 0xc9ae); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0x8ac2); + re_mdio_write(sc, 0x06, 0x01fc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xfbbf); + re_mdio_write(sc, 0x06, 0x8ac4); + re_mdio_write(sc, 0x06, 0xef79); + re_mdio_write(sc, 0x06, 0xd200); + re_mdio_write(sc, 0x06, 0xd400); + re_mdio_write(sc, 0x06, 0x221e); + re_mdio_write(sc, 0x06, 0x02bf); + re_mdio_write(sc, 0x06, 0x3024); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x7dbf); + re_mdio_write(sc, 0x06, 0x13ff); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x500d); + re_mdio_write(sc, 0x06, 0x4559); + re_mdio_write(sc, 0x06, 0x1fef); + re_mdio_write(sc, 0x06, 0x97dd); + re_mdio_write(sc, 0x06, 0xd308); + re_mdio_write(sc, 0x06, 0x1a93); + re_mdio_write(sc, 0x06, 0xdd12); + re_mdio_write(sc, 0x06, 0x17a2); + re_mdio_write(sc, 0x06, 0x04de); + re_mdio_write(sc, 0x06, 0xffef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xfbee); + re_mdio_write(sc, 0x06, 0x8ac2); + re_mdio_write(sc, 0x06, 0x03d5); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x06, 0xbf8a); + re_mdio_write(sc, 0x06, 0xc4ef); + re_mdio_write(sc, 0x06, 0x79ef); + re_mdio_write(sc, 0x06, 0x45bf); + re_mdio_write(sc, 0x06, 0x3024); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x7dbf); + re_mdio_write(sc, 0x06, 0x13ff); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x50ad); + re_mdio_write(sc, 0x06, 0x2702); + re_mdio_write(sc, 0x06, 0x78ff); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0xca1b); + re_mdio_write(sc, 0x06, 0x01aa); + re_mdio_write(sc, 0x06, 0x2eef); + re_mdio_write(sc, 0x06, 0x97d9); + re_mdio_write(sc, 0x06, 0x7900); + re_mdio_write(sc, 0x06, 0x9e2b); + re_mdio_write(sc, 0x06, 0x81dd); + re_mdio_write(sc, 0x06, 0xbf85); + re_mdio_write(sc, 0x06, 0xad02); + re_mdio_write(sc, 0x06, 0x387d); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xef02); + re_mdio_write(sc, 0x06, 0x100c); + re_mdio_write(sc, 0x06, 0x11b0); + re_mdio_write(sc, 0x06, 0xfc0d); + re_mdio_write(sc, 0x06, 0x11bf); + re_mdio_write(sc, 0x06, 0x85aa); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x7dd1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x85aa); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x7dee); + re_mdio_write(sc, 0x06, 0x8ac2); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x0413); + re_mdio_write(sc, 0x06, 0xa38b); + re_mdio_write(sc, 0x06, 0xb4d3); + re_mdio_write(sc, 0x06, 0x8012); + re_mdio_write(sc, 0x06, 0x17a2); + re_mdio_write(sc, 0x06, 0x04ad); + re_mdio_write(sc, 0x06, 0xffef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x48e0); + re_mdio_write(sc, 0x06, 0x8a96); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0x977c); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x9e35); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0x9600); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0x9700); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0xbee1); + re_mdio_write(sc, 0x06, 0x8abf); + re_mdio_write(sc, 0x06, 0xe28a); + re_mdio_write(sc, 0x06, 0xc0e3); + re_mdio_write(sc, 0x06, 0x8ac1); + re_mdio_write(sc, 0x06, 0x0237); + re_mdio_write(sc, 0x06, 0x74ad); + re_mdio_write(sc, 0x06, 0x2012); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0x9603); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0x97b7); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xc000); + re_mdio_write(sc, 0x06, 0xee8a); + re_mdio_write(sc, 0x06, 0xc100); + re_mdio_write(sc, 0x06, 0xae11); + re_mdio_write(sc, 0x06, 0x15e6); + re_mdio_write(sc, 0x06, 0x8ac0); + re_mdio_write(sc, 0x06, 0xe78a); + re_mdio_write(sc, 0x06, 0xc1ae); + re_mdio_write(sc, 0x06, 0x08ee); + re_mdio_write(sc, 0x06, 0x8ac0); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8ac1); + re_mdio_write(sc, 0x06, 0x00fd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xae20); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0xe001); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x32e0); + re_mdio_write(sc, 0x06, 0x8b40); + re_mdio_write(sc, 0x06, 0xf720); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x40bf); + re_mdio_write(sc, 0x06, 0x3230); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x50ad); + re_mdio_write(sc, 0x06, 0x2821); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x20e1); + re_mdio_write(sc, 0x06, 0xe021); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x18e0); + re_mdio_write(sc, 0x06, 0x8b40); + re_mdio_write(sc, 0x06, 0xf620); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x40ee); + re_mdio_write(sc, 0x06, 0x8b3b); + re_mdio_write(sc, 0x06, 0xffe0); + re_mdio_write(sc, 0x06, 0x8a8a); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0x8be4); + re_mdio_write(sc, 0x06, 0xe000); + re_mdio_write(sc, 0x06, 0xe5e0); + re_mdio_write(sc, 0x06, 0x01ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xface); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69fa); + re_mdio_write(sc, 0x06, 0xd401); + re_mdio_write(sc, 0x06, 0x55b4); + re_mdio_write(sc, 0x06, 0xfebf); + re_mdio_write(sc, 0x06, 0x1c1e); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x50ac); + re_mdio_write(sc, 0x06, 0x280b); + re_mdio_write(sc, 0x06, 0xbf1c); + re_mdio_write(sc, 0x06, 0x1b02); + re_mdio_write(sc, 0x06, 0x3850); + re_mdio_write(sc, 0x06, 0xac28); + re_mdio_write(sc, 0x06, 0x49ae); + re_mdio_write(sc, 0x06, 0x64bf); + re_mdio_write(sc, 0x06, 0x1c1b); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x50ac); + re_mdio_write(sc, 0x06, 0x285b); + re_mdio_write(sc, 0x06, 0xd000); + re_mdio_write(sc, 0x06, 0x0284); + re_mdio_write(sc, 0x06, 0xcaac); + re_mdio_write(sc, 0x06, 0x2105); + re_mdio_write(sc, 0x06, 0xac22); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x4ebf); + re_mdio_write(sc, 0x06, 0xe0c4); + re_mdio_write(sc, 0x06, 0xbe85); + re_mdio_write(sc, 0x06, 0xf6d2); + re_mdio_write(sc, 0x06, 0x04d8); + re_mdio_write(sc, 0x06, 0x19d9); + re_mdio_write(sc, 0x06, 0x1907); + re_mdio_write(sc, 0x06, 0xdc19); + re_mdio_write(sc, 0x06, 0xdd19); + re_mdio_write(sc, 0x06, 0x0789); + re_mdio_write(sc, 0x06, 0x89ef); + re_mdio_write(sc, 0x06, 0x645e); + re_mdio_write(sc, 0x06, 0x07ff); + re_mdio_write(sc, 0x06, 0x0d65); + re_mdio_write(sc, 0x06, 0x5cf8); + re_mdio_write(sc, 0x06, 0x001e); + re_mdio_write(sc, 0x06, 0x46dc); + re_mdio_write(sc, 0x06, 0x19dd); + re_mdio_write(sc, 0x06, 0x19b2); + re_mdio_write(sc, 0x06, 0xe2d4); + re_mdio_write(sc, 0x06, 0x0001); + re_mdio_write(sc, 0x06, 0xbf1c); + re_mdio_write(sc, 0x06, 0x1b02); + re_mdio_write(sc, 0x06, 0x387d); + re_mdio_write(sc, 0x06, 0xae1d); + re_mdio_write(sc, 0x06, 0xbee0); + re_mdio_write(sc, 0x06, 0xc4bf); + re_mdio_write(sc, 0x06, 0x85f6); + re_mdio_write(sc, 0x06, 0xd204); + re_mdio_write(sc, 0x06, 0xd819); + re_mdio_write(sc, 0x06, 0xd919); + re_mdio_write(sc, 0x06, 0x07dc); + re_mdio_write(sc, 0x06, 0x19dd); + re_mdio_write(sc, 0x06, 0x1907); + re_mdio_write(sc, 0x06, 0xb2f4); + re_mdio_write(sc, 0x06, 0xd400); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x1c1b); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x7dfe); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfec6); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc05); + re_mdio_write(sc, 0x06, 0xf9e2); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe3e0); + re_mdio_write(sc, 0x06, 0xeb5a); + re_mdio_write(sc, 0x06, 0x070c); + re_mdio_write(sc, 0x06, 0x031e); + re_mdio_write(sc, 0x06, 0x20e6); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe7e0); + re_mdio_write(sc, 0x06, 0xebe0); + re_mdio_write(sc, 0x06, 0xe0fc); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0xfdfd); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69e0); + re_mdio_write(sc, 0x06, 0x8b80); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x22bf); + re_mdio_write(sc, 0x06, 0x4616); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x50e0); + re_mdio_write(sc, 0x06, 0x8b44); + re_mdio_write(sc, 0x06, 0x1f01); + re_mdio_write(sc, 0x06, 0x9e15); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x44ad); + re_mdio_write(sc, 0x06, 0x2907); + re_mdio_write(sc, 0x06, 0xac28); + re_mdio_write(sc, 0x06, 0x04d1); + re_mdio_write(sc, 0x06, 0x01ae); + re_mdio_write(sc, 0x06, 0x02d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x85b0); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x7def); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x30e0); + re_mdio_write(sc, 0x06, 0xe036); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x37e1); + re_mdio_write(sc, 0x06, 0x8b3f); + re_mdio_write(sc, 0x06, 0x1f10); + re_mdio_write(sc, 0x06, 0x9e23); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x3fac); + re_mdio_write(sc, 0x06, 0x200b); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x0dac); + re_mdio_write(sc, 0x06, 0x250f); + re_mdio_write(sc, 0x06, 0xac27); + re_mdio_write(sc, 0x06, 0x11ae); + re_mdio_write(sc, 0x06, 0x1202); + re_mdio_write(sc, 0x06, 0x2c47); + re_mdio_write(sc, 0x06, 0xae0d); + re_mdio_write(sc, 0x06, 0x0285); + re_mdio_write(sc, 0x06, 0x4fae); + re_mdio_write(sc, 0x06, 0x0802); + re_mdio_write(sc, 0x06, 0x2c69); + re_mdio_write(sc, 0x06, 0xae03); + re_mdio_write(sc, 0x06, 0x022c); + re_mdio_write(sc, 0x06, 0x7cfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x6902); + re_mdio_write(sc, 0x06, 0x856c); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x14e1); + re_mdio_write(sc, 0x06, 0xe015); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x08d1); + re_mdio_write(sc, 0x06, 0x1ebf); + re_mdio_write(sc, 0x06, 0x2cd9); + re_mdio_write(sc, 0x06, 0x0238); + re_mdio_write(sc, 0x06, 0x7def); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x2fd0); + re_mdio_write(sc, 0x06, 0x0b02); + re_mdio_write(sc, 0x06, 0x3682); + re_mdio_write(sc, 0x06, 0x5882); + re_mdio_write(sc, 0x06, 0x7882); + re_mdio_write(sc, 0x06, 0x9f24); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x32e1); + re_mdio_write(sc, 0x06, 0x8b33); + re_mdio_write(sc, 0x06, 0x1f10); + re_mdio_write(sc, 0x06, 0x9e1a); + re_mdio_write(sc, 0x06, 0x10e4); + re_mdio_write(sc, 0x06, 0x8b32); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x28e1); + re_mdio_write(sc, 0x06, 0xe029); + re_mdio_write(sc, 0x06, 0xf72c); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0x28e5); + re_mdio_write(sc, 0x06, 0xe029); + re_mdio_write(sc, 0x06, 0xf62c); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0x28e5); + re_mdio_write(sc, 0x06, 0xe029); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0x4077); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0x52e0); + re_mdio_write(sc, 0x06, 0xeed9); + re_mdio_write(sc, 0x06, 0xe04c); + re_mdio_write(sc, 0x06, 0xbbe0); + re_mdio_write(sc, 0x06, 0x2a00); + re_mdio_write(sc, 0x05, 0xe142); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06, PhyRegValue); + re_mdio_write(sc, 0x05, 0xe140); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x00); + if (PhyRegValue & BIT_7) + break; + } - MP_WritePhyUshort(sc, 0x1f, 0x0A44); - PhyRegValue = MP_ReadPhyUshort(sc, 0x14); - PhyRegValue |= (BIT_2); - MP_WritePhyUshort(sc, 0x14, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue |= BIT_1; + if (sc->RequiredSecLanDonglePatch) + PhyRegValue &= ~(BIT_2); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + re_mdio_write(sc, 0x09, 0xA20F); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + re_mdio_write(sc, 0x01, 0x328A); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + PhyRegValue = re_mdio_read(sc, 0x19); + PhyRegValue &= ~BIT_0; + re_mdio_write(sc, 0x19, PhyRegValue); + PhyRegValue = re_mdio_read(sc, 0x10); + PhyRegValue &= ~BIT_10; + re_mdio_write(sc, 0x10, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + + + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); +} - MP_WritePhyUshort(sc, 0x1f, 0x0A50); - PhyRegValue = MP_ReadPhyUshort(sc, 0x11); - PhyRegValue |= (BIT_11 | BIT_12); - MP_WritePhyUshort(sc, 0x11, PhyRegValue); +static void re_set_phy_mcu_8168f_2(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + int i; - retval = re_clear_phy_mcu_patch_request(sc); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + PhyRegValue = re_mdio_read(sc, 0x15); + PhyRegValue &= ~(BIT_12); + re_mdio_write(sc, 0x15, PhyRegValue); + re_mdio_write(sc, 0x00, 0x4800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x002f); + for (i = 0; i < 1000; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x1c); + if (PhyRegValue & BIT_7) + break; + } + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x18); + if (!(PhyRegValue & BIT_0)) + break; + } + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0307); + re_mdio_write(sc, 0x15, 0x0098); + re_mdio_write(sc, 0x19, 0x7c0b); + re_mdio_write(sc, 0x15, 0x0099); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x00eb); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x00f8); + re_mdio_write(sc, 0x19, 0x6f0b); + re_mdio_write(sc, 0x15, 0x00fe); + re_mdio_write(sc, 0x19, 0x6f0f); + re_mdio_write(sc, 0x15, 0x00db); + re_mdio_write(sc, 0x19, 0x6f09); + re_mdio_write(sc, 0x15, 0x00dc); + re_mdio_write(sc, 0x19, 0xaefd); + re_mdio_write(sc, 0x15, 0x00dd); + re_mdio_write(sc, 0x19, 0x6f0b); + re_mdio_write(sc, 0x15, 0x00de); + re_mdio_write(sc, 0x19, 0xc60b); + re_mdio_write(sc, 0x15, 0x00df); + re_mdio_write(sc, 0x19, 0x00fa); + re_mdio_write(sc, 0x15, 0x00e0); + re_mdio_write(sc, 0x19, 0x30e1); + re_mdio_write(sc, 0x15, 0x020c); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x020e); + re_mdio_write(sc, 0x19, 0x9813); + re_mdio_write(sc, 0x15, 0x020f); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x0210); + re_mdio_write(sc, 0x19, 0x930f); + re_mdio_write(sc, 0x15, 0x0211); + re_mdio_write(sc, 0x19, 0x9206); + re_mdio_write(sc, 0x15, 0x0212); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0213); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0214); + re_mdio_write(sc, 0x19, 0x588f); + re_mdio_write(sc, 0x15, 0x0215); + re_mdio_write(sc, 0x19, 0x5520); + re_mdio_write(sc, 0x15, 0x0216); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x0217); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0218); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0219); + re_mdio_write(sc, 0x19, 0x588d); + re_mdio_write(sc, 0x15, 0x021a); + re_mdio_write(sc, 0x19, 0x5540); + re_mdio_write(sc, 0x15, 0x021b); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x021c); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x021d); + re_mdio_write(sc, 0x19, 0x6840); + re_mdio_write(sc, 0x15, 0x021e); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x021f); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0220); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x0221); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x0222); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0223); + re_mdio_write(sc, 0x19, 0x6840); + re_mdio_write(sc, 0x15, 0x0224); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0225); + re_mdio_write(sc, 0x19, 0x3231); + re_mdio_write(sc, 0x15, 0x0000); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0300); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x48f7); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xa080); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0xf602); + re_mdio_write(sc, 0x06, 0x011b); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x2802); + re_mdio_write(sc, 0x06, 0x0135); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x4502); + re_mdio_write(sc, 0x06, 0x015f); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x6b02); + re_mdio_write(sc, 0x06, 0x80e5); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x88e1); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8a1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8b); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8c1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8e1e); + re_mdio_write(sc, 0x06, 0x01a0); + re_mdio_write(sc, 0x06, 0x00c7); + re_mdio_write(sc, 0x06, 0xaebb); + re_mdio_write(sc, 0x06, 0xbf8b); + re_mdio_write(sc, 0x06, 0x88ec); + re_mdio_write(sc, 0x06, 0x0019); + re_mdio_write(sc, 0x06, 0xa98b); + re_mdio_write(sc, 0x06, 0x90f9); + re_mdio_write(sc, 0x06, 0xeeff); + re_mdio_write(sc, 0x06, 0xf600); + re_mdio_write(sc, 0x06, 0xeeff); + re_mdio_write(sc, 0x06, 0xf7fe); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf81); + re_mdio_write(sc, 0x06, 0x9802); + re_mdio_write(sc, 0x06, 0x39f3); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf81); + re_mdio_write(sc, 0x06, 0x9b02); + re_mdio_write(sc, 0x06, 0x39f3); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8dad); + re_mdio_write(sc, 0x06, 0x2014); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8d00); + re_mdio_write(sc, 0x06, 0xe08a); + re_mdio_write(sc, 0x06, 0x5a78); + re_mdio_write(sc, 0x06, 0x039e); + re_mdio_write(sc, 0x06, 0x0902); + re_mdio_write(sc, 0x06, 0x05fc); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x8802); + re_mdio_write(sc, 0x06, 0x32dd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ac); + re_mdio_write(sc, 0x06, 0x261a); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x81ac); + re_mdio_write(sc, 0x06, 0x2114); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ac); + re_mdio_write(sc, 0x06, 0x200e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x85ac); + re_mdio_write(sc, 0x06, 0x2308); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x87ac); + re_mdio_write(sc, 0x06, 0x2402); + re_mdio_write(sc, 0x06, 0xae38); + re_mdio_write(sc, 0x06, 0x021a); + re_mdio_write(sc, 0x06, 0xd6ee); + re_mdio_write(sc, 0x06, 0xe41c); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0xe41d); + re_mdio_write(sc, 0x06, 0x04e2); + re_mdio_write(sc, 0x06, 0xe07c); + re_mdio_write(sc, 0x06, 0xe3e0); + re_mdio_write(sc, 0x06, 0x7de0); + re_mdio_write(sc, 0x06, 0xe038); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x39ad); + re_mdio_write(sc, 0x06, 0x2e1b); + re_mdio_write(sc, 0x06, 0xad39); + re_mdio_write(sc, 0x06, 0x0dd1); + re_mdio_write(sc, 0x06, 0x01bf); + re_mdio_write(sc, 0x06, 0x22c8); + re_mdio_write(sc, 0x06, 0x0239); + re_mdio_write(sc, 0x06, 0xf302); + re_mdio_write(sc, 0x06, 0x21f0); + re_mdio_write(sc, 0x06, 0xae0b); + re_mdio_write(sc, 0x06, 0xac38); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x0602); + re_mdio_write(sc, 0x06, 0x222d); + re_mdio_write(sc, 0x06, 0x0222); + re_mdio_write(sc, 0x06, 0x7202); + re_mdio_write(sc, 0x06, 0x1ae7); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x201a); + re_mdio_write(sc, 0x06, 0xf620); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x2afe); + re_mdio_write(sc, 0x06, 0x022c); + re_mdio_write(sc, 0x06, 0x5c02); + re_mdio_write(sc, 0x06, 0x03c5); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x6702); + re_mdio_write(sc, 0x06, 0x2e4f); + re_mdio_write(sc, 0x06, 0x0204); + re_mdio_write(sc, 0x06, 0x8902); + re_mdio_write(sc, 0x06, 0x2f7a); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x210b); + re_mdio_write(sc, 0x06, 0xf621); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x0445); + re_mdio_write(sc, 0x06, 0x021c); + re_mdio_write(sc, 0x06, 0xb8e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad22); + re_mdio_write(sc, 0x06, 0x08f6); + re_mdio_write(sc, 0x06, 0x22e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0235); + re_mdio_write(sc, 0x06, 0xd4e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad23); + re_mdio_write(sc, 0x06, 0x08f6); + re_mdio_write(sc, 0x06, 0x23e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0231); + re_mdio_write(sc, 0x06, 0xc8e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad24); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x24e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2505); + re_mdio_write(sc, 0x06, 0xf625); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8ee0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x08f6); + re_mdio_write(sc, 0x06, 0x26e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x022d); + re_mdio_write(sc, 0x06, 0x6ae0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x27e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0x8bfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69e0); + re_mdio_write(sc, 0x06, 0x8b80); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x22bf); + re_mdio_write(sc, 0x06, 0x479a); + re_mdio_write(sc, 0x06, 0x0239); + re_mdio_write(sc, 0x06, 0xc6e0); + re_mdio_write(sc, 0x06, 0x8b44); + re_mdio_write(sc, 0x06, 0x1f01); + re_mdio_write(sc, 0x06, 0x9e15); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x44ad); + re_mdio_write(sc, 0x06, 0x2907); + re_mdio_write(sc, 0x06, 0xac28); + re_mdio_write(sc, 0x06, 0x04d1); + re_mdio_write(sc, 0x06, 0x01ae); + re_mdio_write(sc, 0x06, 0x02d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x819e); + re_mdio_write(sc, 0x06, 0x0239); + re_mdio_write(sc, 0x06, 0xf3ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0x4077); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0xbbe0); + re_mdio_write(sc, 0x06, 0x2a00); + re_mdio_write(sc, 0x05, 0xe142); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06, PhyRegValue); + re_mdio_write(sc, 0x05, 0xe140); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x00); + if (PhyRegValue & BIT_7) + break; + } - MP_WritePhyUshort(sc, 0x1f, 0x0A40); - MP_WritePhyUshort(sc, 0x10, 0x1040); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue |= BIT_1; + if (sc->RequiredSecLanDonglePatch) + PhyRegValue &= ~(BIT_2); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + PhyRegValue = re_mdio_read(sc, 0x19); + PhyRegValue &= ~BIT_0; + re_mdio_write(sc, 0x19, PhyRegValue); + PhyRegValue = re_mdio_read(sc, 0x10); + PhyRegValue &= ~BIT_10; + re_mdio_write(sc, 0x10, PhyRegValue); + + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); +} - MP_WritePhyUshort(sc, 0x1f, 0x0A4A); - PhyRegValue = MP_ReadPhyUshort(sc, 0x13); - PhyRegValue &= ~(BIT_6 | BIT_7); - MP_WritePhyUshort(sc, 0x13, PhyRegValue); +static void re_set_phy_mcu_8411_1(struct re_softc *sc) +{ + u_int16_t PhyRegValue; + int i; - MP_WritePhyUshort(sc, 0x1f, 0x0A44); - PhyRegValue = MP_ReadPhyUshort(sc, 0x14); - PhyRegValue &= ~(BIT_2); - MP_WritePhyUshort(sc, 0x14, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + PhyRegValue = re_mdio_read(sc, 0x15); + PhyRegValue &= ~(BIT_12); + re_mdio_write(sc, 0x15, PhyRegValue); + re_mdio_write(sc, 0x00, 0x4800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x002f); + for (i = 0; i < 1000; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x1c); + if (PhyRegValue & BIT_7) + break; + } + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x1800); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x18); + if (!(PhyRegValue & BIT_0)) + break; + } + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0307); + re_mdio_write(sc, 0x15, 0x0098); + re_mdio_write(sc, 0x19, 0x7c0b); + re_mdio_write(sc, 0x15, 0x0099); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x00eb); + re_mdio_write(sc, 0x19, 0x6c0b); + re_mdio_write(sc, 0x15, 0x00f8); + re_mdio_write(sc, 0x19, 0x6f0b); + re_mdio_write(sc, 0x15, 0x00fe); + re_mdio_write(sc, 0x19, 0x6f0f); + re_mdio_write(sc, 0x15, 0x00db); + re_mdio_write(sc, 0x19, 0x6f09); + re_mdio_write(sc, 0x15, 0x00dc); + re_mdio_write(sc, 0x19, 0xaefd); + re_mdio_write(sc, 0x15, 0x00dd); + re_mdio_write(sc, 0x19, 0x6f0b); + re_mdio_write(sc, 0x15, 0x00de); + re_mdio_write(sc, 0x19, 0xc60b); + re_mdio_write(sc, 0x15, 0x00df); + re_mdio_write(sc, 0x19, 0x00fa); + re_mdio_write(sc, 0x15, 0x00e0); + re_mdio_write(sc, 0x19, 0x30e1); + re_mdio_write(sc, 0x15, 0x020c); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x020e); + re_mdio_write(sc, 0x19, 0x9813); + re_mdio_write(sc, 0x15, 0x020f); + re_mdio_write(sc, 0x19, 0x7801); + re_mdio_write(sc, 0x15, 0x0210); + re_mdio_write(sc, 0x19, 0x930f); + re_mdio_write(sc, 0x15, 0x0211); + re_mdio_write(sc, 0x19, 0x9206); + re_mdio_write(sc, 0x15, 0x0212); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0213); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0214); + re_mdio_write(sc, 0x19, 0x588f); + re_mdio_write(sc, 0x15, 0x0215); + re_mdio_write(sc, 0x19, 0x5520); + re_mdio_write(sc, 0x15, 0x0216); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x0217); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0218); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0219); + re_mdio_write(sc, 0x19, 0x588d); + re_mdio_write(sc, 0x15, 0x021a); + re_mdio_write(sc, 0x19, 0x5540); + re_mdio_write(sc, 0x15, 0x021b); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x021c); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x021d); + re_mdio_write(sc, 0x19, 0x6840); + re_mdio_write(sc, 0x15, 0x021e); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x021f); + re_mdio_write(sc, 0x19, 0x4002); + re_mdio_write(sc, 0x15, 0x0220); + re_mdio_write(sc, 0x19, 0x3224); + re_mdio_write(sc, 0x15, 0x0221); + re_mdio_write(sc, 0x19, 0x9e03); + re_mdio_write(sc, 0x15, 0x0222); + re_mdio_write(sc, 0x19, 0x7c40); + re_mdio_write(sc, 0x15, 0x0223); + re_mdio_write(sc, 0x19, 0x6840); + re_mdio_write(sc, 0x15, 0x0224); + re_mdio_write(sc, 0x19, 0x7800); + re_mdio_write(sc, 0x15, 0x0225); + re_mdio_write(sc, 0x19, 0x3231); + re_mdio_write(sc, 0x15, 0x0000); + re_mdio_write(sc, 0x16, 0x0306); + re_mdio_write(sc, 0x16, 0x0300); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x48f7); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0xfff7); + re_mdio_write(sc, 0x06, 0xa080); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0xf602); + re_mdio_write(sc, 0x06, 0x011e); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x2b02); + re_mdio_write(sc, 0x06, 0x8077); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x4802); + re_mdio_write(sc, 0x06, 0x0162); + re_mdio_write(sc, 0x06, 0x0280); + re_mdio_write(sc, 0x06, 0x9402); + re_mdio_write(sc, 0x06, 0x810e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x88e1); + re_mdio_write(sc, 0x06, 0x8b89); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8a1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8b); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8c1e); + re_mdio_write(sc, 0x06, 0x01e1); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x1e01); + re_mdio_write(sc, 0x06, 0xe18b); + re_mdio_write(sc, 0x06, 0x8e1e); + re_mdio_write(sc, 0x06, 0x01a0); + re_mdio_write(sc, 0x06, 0x00c7); + re_mdio_write(sc, 0x06, 0xaebb); + re_mdio_write(sc, 0x06, 0xd481); + re_mdio_write(sc, 0x06, 0xd4e4); + re_mdio_write(sc, 0x06, 0x8b92); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x9302); + re_mdio_write(sc, 0x06, 0x2e5a); + re_mdio_write(sc, 0x06, 0xbf8b); + re_mdio_write(sc, 0x06, 0x88ec); + re_mdio_write(sc, 0x06, 0x0019); + re_mdio_write(sc, 0x06, 0xa98b); + re_mdio_write(sc, 0x06, 0x90f9); + re_mdio_write(sc, 0x06, 0xeeff); + re_mdio_write(sc, 0x06, 0xf600); + re_mdio_write(sc, 0x06, 0xeeff); + re_mdio_write(sc, 0x06, 0xf7fc); + re_mdio_write(sc, 0x06, 0xd100); + re_mdio_write(sc, 0x06, 0xbf83); + re_mdio_write(sc, 0x06, 0x3c02); + re_mdio_write(sc, 0x06, 0x3a21); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf83); + re_mdio_write(sc, 0x06, 0x3f02); + re_mdio_write(sc, 0x06, 0x3a21); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8aad); + re_mdio_write(sc, 0x06, 0x2014); + re_mdio_write(sc, 0x06, 0xee8b); + re_mdio_write(sc, 0x06, 0x8a00); + re_mdio_write(sc, 0x06, 0x0220); + re_mdio_write(sc, 0x06, 0x8be0); + re_mdio_write(sc, 0x06, 0xe426); + re_mdio_write(sc, 0x06, 0xe1e4); + re_mdio_write(sc, 0x06, 0x27ee); + re_mdio_write(sc, 0x06, 0xe426); + re_mdio_write(sc, 0x06, 0x23e5); + re_mdio_write(sc, 0x06, 0xe427); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x14ee); + re_mdio_write(sc, 0x06, 0x8b8d); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0x8a5a); + re_mdio_write(sc, 0x06, 0x7803); + re_mdio_write(sc, 0x06, 0x9e09); + re_mdio_write(sc, 0x06, 0x0206); + re_mdio_write(sc, 0x06, 0x2802); + re_mdio_write(sc, 0x06, 0x80b1); + re_mdio_write(sc, 0x06, 0x0232); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xf9e0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac26); + re_mdio_write(sc, 0x06, 0x1ae0); + re_mdio_write(sc, 0x06, 0x8b81); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x14e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xac20); + re_mdio_write(sc, 0x06, 0x0ee0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xac23); + re_mdio_write(sc, 0x06, 0x08e0); + re_mdio_write(sc, 0x06, 0x8b87); + re_mdio_write(sc, 0x06, 0xac24); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x3802); + re_mdio_write(sc, 0x06, 0x1b02); + re_mdio_write(sc, 0x06, 0xeee4); + re_mdio_write(sc, 0x06, 0x1c04); + re_mdio_write(sc, 0x06, 0xeee4); + re_mdio_write(sc, 0x06, 0x1d04); + re_mdio_write(sc, 0x06, 0xe2e0); + re_mdio_write(sc, 0x06, 0x7ce3); + re_mdio_write(sc, 0x06, 0xe07d); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x38e1); + re_mdio_write(sc, 0x06, 0xe039); + re_mdio_write(sc, 0x06, 0xad2e); + re_mdio_write(sc, 0x06, 0x1bad); + re_mdio_write(sc, 0x06, 0x390d); + re_mdio_write(sc, 0x06, 0xd101); + re_mdio_write(sc, 0x06, 0xbf22); + re_mdio_write(sc, 0x06, 0xe802); + re_mdio_write(sc, 0x06, 0x3a21); + re_mdio_write(sc, 0x06, 0x0222); + re_mdio_write(sc, 0x06, 0x10ae); + re_mdio_write(sc, 0x06, 0x0bac); + re_mdio_write(sc, 0x06, 0x3802); + re_mdio_write(sc, 0x06, 0xae06); + re_mdio_write(sc, 0x06, 0x0222); + re_mdio_write(sc, 0x06, 0x4d02); + re_mdio_write(sc, 0x06, 0x2292); + re_mdio_write(sc, 0x06, 0x021b); + re_mdio_write(sc, 0x06, 0x13fd); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x1af6); + re_mdio_write(sc, 0x06, 0x20e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x022b); + re_mdio_write(sc, 0x06, 0x1e02); + re_mdio_write(sc, 0x06, 0x82ae); + re_mdio_write(sc, 0x06, 0x0203); + re_mdio_write(sc, 0x06, 0xc002); + re_mdio_write(sc, 0x06, 0x827d); + re_mdio_write(sc, 0x06, 0x022e); + re_mdio_write(sc, 0x06, 0x6f02); + re_mdio_write(sc, 0x06, 0x047b); + re_mdio_write(sc, 0x06, 0x022f); + re_mdio_write(sc, 0x06, 0x9ae0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad21); + re_mdio_write(sc, 0x06, 0x0bf6); + re_mdio_write(sc, 0x06, 0x21e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0x9002); + re_mdio_write(sc, 0x06, 0x1cd9); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2208); + re_mdio_write(sc, 0x06, 0xf622); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x35f4); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2308); + re_mdio_write(sc, 0x06, 0xf623); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x31e8); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2405); + re_mdio_write(sc, 0x06, 0xf624); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8ee0); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xad25); + re_mdio_write(sc, 0x06, 0x05f6); + re_mdio_write(sc, 0x06, 0x25e4); + re_mdio_write(sc, 0x06, 0x8b8e); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2608); + re_mdio_write(sc, 0x06, 0xf626); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x2d8a); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x8ead); + re_mdio_write(sc, 0x06, 0x2705); + re_mdio_write(sc, 0x06, 0xf627); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x8e02); + re_mdio_write(sc, 0x06, 0x0386); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xef69); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0xe001); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x32e0); + re_mdio_write(sc, 0x06, 0x8b40); + re_mdio_write(sc, 0x06, 0xf720); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x40bf); + re_mdio_write(sc, 0x06, 0x32c1); + re_mdio_write(sc, 0x06, 0x0239); + re_mdio_write(sc, 0x06, 0xf4ad); + re_mdio_write(sc, 0x06, 0x2821); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x20e1); + re_mdio_write(sc, 0x06, 0xe021); + re_mdio_write(sc, 0x06, 0xad20); + re_mdio_write(sc, 0x06, 0x18e0); + re_mdio_write(sc, 0x06, 0x8b40); + re_mdio_write(sc, 0x06, 0xf620); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x40ee); + re_mdio_write(sc, 0x06, 0x8b3b); + re_mdio_write(sc, 0x06, 0xffe0); + re_mdio_write(sc, 0x06, 0x8a8a); + re_mdio_write(sc, 0x06, 0xe18a); + re_mdio_write(sc, 0x06, 0x8be4); + re_mdio_write(sc, 0x06, 0xe000); + re_mdio_write(sc, 0x06, 0xe5e0); + re_mdio_write(sc, 0x06, 0x01ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xface); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69fa); + re_mdio_write(sc, 0x06, 0xd401); + re_mdio_write(sc, 0x06, 0x55b4); + re_mdio_write(sc, 0x06, 0xfebf); + re_mdio_write(sc, 0x06, 0x1c5e); + re_mdio_write(sc, 0x06, 0x0239); + re_mdio_write(sc, 0x06, 0xf4ac); + re_mdio_write(sc, 0x06, 0x280b); + re_mdio_write(sc, 0x06, 0xbf1c); + re_mdio_write(sc, 0x06, 0x5b02); + re_mdio_write(sc, 0x06, 0x39f4); + re_mdio_write(sc, 0x06, 0xac28); + re_mdio_write(sc, 0x06, 0x49ae); + re_mdio_write(sc, 0x06, 0x64bf); + re_mdio_write(sc, 0x06, 0x1c5b); + re_mdio_write(sc, 0x06, 0x0239); + re_mdio_write(sc, 0x06, 0xf4ac); + re_mdio_write(sc, 0x06, 0x285b); + re_mdio_write(sc, 0x06, 0xd000); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x62ac); + re_mdio_write(sc, 0x06, 0x2105); + re_mdio_write(sc, 0x06, 0xac22); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x4ebf); + re_mdio_write(sc, 0x06, 0xe0c4); + re_mdio_write(sc, 0x06, 0xbe85); + re_mdio_write(sc, 0x06, 0xecd2); + re_mdio_write(sc, 0x06, 0x04d8); + re_mdio_write(sc, 0x06, 0x19d9); + re_mdio_write(sc, 0x06, 0x1907); + re_mdio_write(sc, 0x06, 0xdc19); + re_mdio_write(sc, 0x06, 0xdd19); + re_mdio_write(sc, 0x06, 0x0789); + re_mdio_write(sc, 0x06, 0x89ef); + re_mdio_write(sc, 0x06, 0x645e); + re_mdio_write(sc, 0x06, 0x07ff); + re_mdio_write(sc, 0x06, 0x0d65); + re_mdio_write(sc, 0x06, 0x5cf8); + re_mdio_write(sc, 0x06, 0x001e); + re_mdio_write(sc, 0x06, 0x46dc); + re_mdio_write(sc, 0x06, 0x19dd); + re_mdio_write(sc, 0x06, 0x19b2); + re_mdio_write(sc, 0x06, 0xe2d4); + re_mdio_write(sc, 0x06, 0x0001); + re_mdio_write(sc, 0x06, 0xbf1c); + re_mdio_write(sc, 0x06, 0x5b02); + re_mdio_write(sc, 0x06, 0x3a21); + re_mdio_write(sc, 0x06, 0xae1d); + re_mdio_write(sc, 0x06, 0xbee0); + re_mdio_write(sc, 0x06, 0xc4bf); + re_mdio_write(sc, 0x06, 0x85ec); + re_mdio_write(sc, 0x06, 0xd204); + re_mdio_write(sc, 0x06, 0xd819); + re_mdio_write(sc, 0x06, 0xd919); + re_mdio_write(sc, 0x06, 0x07dc); + re_mdio_write(sc, 0x06, 0x19dd); + re_mdio_write(sc, 0x06, 0x1907); + re_mdio_write(sc, 0x06, 0xb2f4); + re_mdio_write(sc, 0x06, 0xd400); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x1c5b); + re_mdio_write(sc, 0x06, 0x023a); + re_mdio_write(sc, 0x06, 0x21fe); + re_mdio_write(sc, 0x06, 0xef96); + re_mdio_write(sc, 0x06, 0xfec6); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc05); + re_mdio_write(sc, 0x06, 0xf9e2); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe3e0); + re_mdio_write(sc, 0x06, 0xeb5a); + re_mdio_write(sc, 0x06, 0x070c); + re_mdio_write(sc, 0x06, 0x031e); + re_mdio_write(sc, 0x06, 0x20e6); + re_mdio_write(sc, 0x06, 0xe0ea); + re_mdio_write(sc, 0x06, 0xe7e0); + re_mdio_write(sc, 0x06, 0xebe0); + re_mdio_write(sc, 0x06, 0xe0fc); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0xfdfd); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x69e0); + re_mdio_write(sc, 0x06, 0x8b80); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x22bf); + re_mdio_write(sc, 0x06, 0x47ba); + re_mdio_write(sc, 0x06, 0x0239); + re_mdio_write(sc, 0x06, 0xf4e0); + re_mdio_write(sc, 0x06, 0x8b44); + re_mdio_write(sc, 0x06, 0x1f01); + re_mdio_write(sc, 0x06, 0x9e15); + re_mdio_write(sc, 0x06, 0xe58b); + re_mdio_write(sc, 0x06, 0x44ad); + re_mdio_write(sc, 0x06, 0x2907); + re_mdio_write(sc, 0x06, 0xac28); + re_mdio_write(sc, 0x06, 0x04d1); + re_mdio_write(sc, 0x06, 0x01ae); + re_mdio_write(sc, 0x06, 0x02d1); + re_mdio_write(sc, 0x06, 0x00bf); + re_mdio_write(sc, 0x06, 0x8342); + re_mdio_write(sc, 0x06, 0x023a); + re_mdio_write(sc, 0x06, 0x21ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x30e0); + re_mdio_write(sc, 0x06, 0xe036); + re_mdio_write(sc, 0x06, 0xe1e0); + re_mdio_write(sc, 0x06, 0x37e1); + re_mdio_write(sc, 0x06, 0x8b3f); + re_mdio_write(sc, 0x06, 0x1f10); + re_mdio_write(sc, 0x06, 0x9e23); + re_mdio_write(sc, 0x06, 0xe48b); + re_mdio_write(sc, 0x06, 0x3fac); + re_mdio_write(sc, 0x06, 0x200b); + re_mdio_write(sc, 0x06, 0xac21); + re_mdio_write(sc, 0x06, 0x0dac); + re_mdio_write(sc, 0x06, 0x250f); + re_mdio_write(sc, 0x06, 0xac27); + re_mdio_write(sc, 0x06, 0x11ae); + re_mdio_write(sc, 0x06, 0x1202); + re_mdio_write(sc, 0x06, 0x2cb5); + re_mdio_write(sc, 0x06, 0xae0d); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0xe7ae); + re_mdio_write(sc, 0x06, 0x0802); + re_mdio_write(sc, 0x06, 0x2cd7); + re_mdio_write(sc, 0x06, 0xae03); + re_mdio_write(sc, 0x06, 0x022c); + re_mdio_write(sc, 0x06, 0xeafc); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x6902); + re_mdio_write(sc, 0x06, 0x8304); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x14e1); + re_mdio_write(sc, 0x06, 0xe015); + re_mdio_write(sc, 0x06, 0xad26); + re_mdio_write(sc, 0x06, 0x08d1); + re_mdio_write(sc, 0x06, 0x1ebf); + re_mdio_write(sc, 0x06, 0x2d47); + re_mdio_write(sc, 0x06, 0x023a); + re_mdio_write(sc, 0x06, 0x21ef); + re_mdio_write(sc, 0x06, 0x96fe); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0x8b85); + re_mdio_write(sc, 0x06, 0xad27); + re_mdio_write(sc, 0x06, 0x2fd0); + re_mdio_write(sc, 0x06, 0x0b02); + re_mdio_write(sc, 0x06, 0x3826); + re_mdio_write(sc, 0x06, 0x5882); + re_mdio_write(sc, 0x06, 0x7882); + re_mdio_write(sc, 0x06, 0x9f24); + re_mdio_write(sc, 0x06, 0xe08b); + re_mdio_write(sc, 0x06, 0x32e1); + re_mdio_write(sc, 0x06, 0x8b33); + re_mdio_write(sc, 0x06, 0x1f10); + re_mdio_write(sc, 0x06, 0x9e1a); + re_mdio_write(sc, 0x06, 0x10e4); + re_mdio_write(sc, 0x06, 0x8b32); + re_mdio_write(sc, 0x06, 0xe0e0); + re_mdio_write(sc, 0x06, 0x28e1); + re_mdio_write(sc, 0x06, 0xe029); + re_mdio_write(sc, 0x06, 0xf72c); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0x28e5); + re_mdio_write(sc, 0x06, 0xe029); + re_mdio_write(sc, 0x06, 0xf62c); + re_mdio_write(sc, 0x06, 0xe4e0); + re_mdio_write(sc, 0x06, 0x28e5); + re_mdio_write(sc, 0x06, 0xe029); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0x00e1); + re_mdio_write(sc, 0x06, 0x4077); + re_mdio_write(sc, 0x06, 0xe140); + re_mdio_write(sc, 0x06, 0xbbe0); + re_mdio_write(sc, 0x06, 0x2a00); + re_mdio_write(sc, 0x05, 0xe142); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06,PhyRegValue); + re_mdio_write(sc, 0x05, 0xe140); + PhyRegValue = re_mdio_read(sc, 0x06); + PhyRegValue |= BIT_0; + re_mdio_write(sc, 0x06, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0005); + for (i = 0; i < 200; i++) { + DELAY(100); + PhyRegValue = re_mdio_read(sc, 0x00); + if (PhyRegValue & BIT_7) + break; + } + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x0023); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue |= BIT_1; + if (sc->RequiredSecLanDonglePatch) + PhyRegValue &= ~(BIT_2); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0003); + re_mdio_write(sc, 0x09, 0xA20F); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0003); + re_mdio_write(sc, 0x01, 0x328A); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1f, 0x0003); + PhyRegValue = re_mdio_read(sc, 0x19); + PhyRegValue &= ~BIT_0; + re_mdio_write(sc, 0x19, PhyRegValue); + PhyRegValue = re_mdio_read(sc, 0x10); + PhyRegValue &= ~BIT_10; + re_mdio_write(sc, 0x10, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); +} - MP_WritePhyUshort(sc, 0x1f, 0x0A50); - PhyRegValue = MP_ReadPhyUshort(sc, 0x11); - PhyRegValue &= ~(BIT_11 | BIT_12); - MP_WritePhyUshort(sc, 0x11, PhyRegValue); +static void re_set_phy_mcu_8168g_1(struct re_softc *sc) +{ + u_int16_t PhyRegValue; - MP_WritePhyUshort(sc, 0x1f, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8010); - PhyRegValue = MP_ReadPhyUshort(sc, 0x14); - PhyRegValue |= (BIT_11); - MP_WritePhyUshort(sc, 0x14, PhyRegValue); + re_set_phy_mcu_patch_request(sc); - retval = re_set_phy_mcu_patch_request(sc); + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8146); + re_mdio_write(sc, 0x14, 0x2300); + re_mdio_write(sc, 0x13, 0xB820); + re_mdio_write(sc, 0x14, 0x0210); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0xB820); + re_mdio_write(sc, 0x14, 0x0290); + re_mdio_write(sc, 0x13, 0xA012); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xA014); + re_mdio_write(sc, 0x14, 0x2c04); + re_mdio_write(sc, 0x14, 0x2c0c); + re_mdio_write(sc, 0x14, 0x2c6c); + re_mdio_write(sc, 0x14, 0x2d0d); + re_mdio_write(sc, 0x14, 0x31ce); + re_mdio_write(sc, 0x14, 0x506d); + re_mdio_write(sc, 0x14, 0xd708); + re_mdio_write(sc, 0x14, 0x3108); + re_mdio_write(sc, 0x14, 0x106d); + re_mdio_write(sc, 0x14, 0x1560); + re_mdio_write(sc, 0x14, 0x15a9); + re_mdio_write(sc, 0x14, 0x206e); + re_mdio_write(sc, 0x14, 0x175b); + re_mdio_write(sc, 0x14, 0x6062); + re_mdio_write(sc, 0x14, 0xd700); + re_mdio_write(sc, 0x14, 0x5fae); + re_mdio_write(sc, 0x14, 0xd708); + re_mdio_write(sc, 0x14, 0x3107); + re_mdio_write(sc, 0x14, 0x4c1e); + re_mdio_write(sc, 0x14, 0x4169); + re_mdio_write(sc, 0x14, 0x316a); + re_mdio_write(sc, 0x14, 0x0c19); + re_mdio_write(sc, 0x14, 0x31aa); + re_mdio_write(sc, 0x14, 0x0c19); + re_mdio_write(sc, 0x14, 0x2c1b); + re_mdio_write(sc, 0x14, 0x5e62); + re_mdio_write(sc, 0x14, 0x26b5); + re_mdio_write(sc, 0x14, 0x31ab); + re_mdio_write(sc, 0x14, 0x5c1e); + re_mdio_write(sc, 0x14, 0x2c0c); + re_mdio_write(sc, 0x14, 0xc040); + re_mdio_write(sc, 0x14, 0x8808); + re_mdio_write(sc, 0x14, 0xc520); + re_mdio_write(sc, 0x14, 0xc421); + re_mdio_write(sc, 0x14, 0xd05a); + re_mdio_write(sc, 0x14, 0xd19a); + re_mdio_write(sc, 0x14, 0xd709); + re_mdio_write(sc, 0x14, 0x608f); + re_mdio_write(sc, 0x14, 0xd06b); + re_mdio_write(sc, 0x14, 0xd18a); + re_mdio_write(sc, 0x14, 0x2c2c); + re_mdio_write(sc, 0x14, 0xd0be); + re_mdio_write(sc, 0x14, 0xd188); + re_mdio_write(sc, 0x14, 0x2c2c); + re_mdio_write(sc, 0x14, 0xd708); + re_mdio_write(sc, 0x14, 0x4072); + re_mdio_write(sc, 0x14, 0xc104); + re_mdio_write(sc, 0x14, 0x2c3e); + re_mdio_write(sc, 0x14, 0x4076); + re_mdio_write(sc, 0x14, 0xc110); + re_mdio_write(sc, 0x14, 0x2c3e); + re_mdio_write(sc, 0x14, 0x4071); + re_mdio_write(sc, 0x14, 0xc102); + re_mdio_write(sc, 0x14, 0x2c3e); + re_mdio_write(sc, 0x14, 0x4070); + re_mdio_write(sc, 0x14, 0xc101); + re_mdio_write(sc, 0x14, 0x2c3e); + re_mdio_write(sc, 0x14, 0x175b); + re_mdio_write(sc, 0x14, 0xd709); + re_mdio_write(sc, 0x14, 0x3390); + re_mdio_write(sc, 0x14, 0x5c39); + re_mdio_write(sc, 0x14, 0x2c4e); + re_mdio_write(sc, 0x14, 0x175b); + re_mdio_write(sc, 0x14, 0xd708); + re_mdio_write(sc, 0x14, 0x6193); + re_mdio_write(sc, 0x14, 0xd709); + re_mdio_write(sc, 0x14, 0x5f9d); + re_mdio_write(sc, 0x14, 0x408b); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x6042); + re_mdio_write(sc, 0x14, 0xb401); + re_mdio_write(sc, 0x14, 0x175b); + re_mdio_write(sc, 0x14, 0xd708); + re_mdio_write(sc, 0x14, 0x6073); + re_mdio_write(sc, 0x14, 0x5fbc); + re_mdio_write(sc, 0x14, 0x2c4d); + re_mdio_write(sc, 0x14, 0x26ed); + re_mdio_write(sc, 0x14, 0xb280); + re_mdio_write(sc, 0x14, 0xa841); + re_mdio_write(sc, 0x14, 0x9420); + re_mdio_write(sc, 0x14, 0x8710); + re_mdio_write(sc, 0x14, 0xd709); + re_mdio_write(sc, 0x14, 0x42ec); + re_mdio_write(sc, 0x14, 0x606d); + re_mdio_write(sc, 0x14, 0xd207); + re_mdio_write(sc, 0x14, 0x2c57); + re_mdio_write(sc, 0x14, 0xd203); + re_mdio_write(sc, 0x14, 0x33ff); + re_mdio_write(sc, 0x14, 0x563b); + re_mdio_write(sc, 0x14, 0x3275); + re_mdio_write(sc, 0x14, 0x7c5e); + re_mdio_write(sc, 0x14, 0xb240); + re_mdio_write(sc, 0x14, 0xb402); + re_mdio_write(sc, 0x14, 0x263b); + re_mdio_write(sc, 0x14, 0x6096); + re_mdio_write(sc, 0x14, 0xb240); + re_mdio_write(sc, 0x14, 0xb406); + re_mdio_write(sc, 0x14, 0x263b); + re_mdio_write(sc, 0x14, 0x31d7); + re_mdio_write(sc, 0x14, 0x7c67); + re_mdio_write(sc, 0x14, 0xb240); + re_mdio_write(sc, 0x14, 0xb40e); + re_mdio_write(sc, 0x14, 0x263b); + re_mdio_write(sc, 0x14, 0xb410); + re_mdio_write(sc, 0x14, 0x8802); + re_mdio_write(sc, 0x14, 0xb240); + re_mdio_write(sc, 0x14, 0x940e); + re_mdio_write(sc, 0x14, 0x263b); + re_mdio_write(sc, 0x14, 0xba04); + re_mdio_write(sc, 0x14, 0x1cd6); + re_mdio_write(sc, 0x14, 0xa902); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x4045); + re_mdio_write(sc, 0x14, 0xa980); + re_mdio_write(sc, 0x14, 0x3003); + re_mdio_write(sc, 0x14, 0x59b1); + re_mdio_write(sc, 0x14, 0xa540); + re_mdio_write(sc, 0x14, 0xa601); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4043); + re_mdio_write(sc, 0x14, 0xa910); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x60a0); + re_mdio_write(sc, 0x14, 0xca33); + re_mdio_write(sc, 0x14, 0xcb33); + re_mdio_write(sc, 0x14, 0xa941); + re_mdio_write(sc, 0x14, 0x2c82); + re_mdio_write(sc, 0x14, 0xcaff); + re_mdio_write(sc, 0x14, 0xcbff); + re_mdio_write(sc, 0x14, 0xa921); + re_mdio_write(sc, 0x14, 0xce02); + re_mdio_write(sc, 0x14, 0xe070); + re_mdio_write(sc, 0x14, 0x0f10); + re_mdio_write(sc, 0x14, 0xaf01); + re_mdio_write(sc, 0x14, 0x8f01); + re_mdio_write(sc, 0x14, 0x1766); + re_mdio_write(sc, 0x14, 0x8e02); + re_mdio_write(sc, 0x14, 0x1787); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x609c); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cd4); + re_mdio_write(sc, 0x14, 0x1ce9); + re_mdio_write(sc, 0x14, 0xce04); + re_mdio_write(sc, 0x14, 0xe070); + re_mdio_write(sc, 0x14, 0x0f20); + re_mdio_write(sc, 0x14, 0xaf01); + re_mdio_write(sc, 0x14, 0x8f01); + re_mdio_write(sc, 0x14, 0x1766); + re_mdio_write(sc, 0x14, 0x8e04); + re_mdio_write(sc, 0x14, 0x6044); + re_mdio_write(sc, 0x14, 0x2cd4); + re_mdio_write(sc, 0x14, 0xa520); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4043); + re_mdio_write(sc, 0x14, 0x2cc1); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0501); + re_mdio_write(sc, 0x14, 0x1cef); + re_mdio_write(sc, 0x14, 0xb801); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x4060); + re_mdio_write(sc, 0x14, 0x7fc4); + re_mdio_write(sc, 0x14, 0x2cd4); + re_mdio_write(sc, 0x14, 0x1cf5); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0502); + re_mdio_write(sc, 0x14, 0x1cef); + re_mdio_write(sc, 0x14, 0xb802); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x4061); + re_mdio_write(sc, 0x14, 0x7fc4); + re_mdio_write(sc, 0x14, 0x2cd4); + re_mdio_write(sc, 0x14, 0x1cf5); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0504); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6099); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cd4); + re_mdio_write(sc, 0x14, 0xc17f); + re_mdio_write(sc, 0x14, 0xc200); + re_mdio_write(sc, 0x14, 0xc43f); + re_mdio_write(sc, 0x14, 0xcc03); + re_mdio_write(sc, 0x14, 0xa701); + re_mdio_write(sc, 0x14, 0xa510); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4018); + re_mdio_write(sc, 0x14, 0x9910); + re_mdio_write(sc, 0x14, 0x8510); + re_mdio_write(sc, 0x14, 0x2860); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0504); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6099); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cd4); + re_mdio_write(sc, 0x14, 0xa608); + re_mdio_write(sc, 0x14, 0xc17d); + re_mdio_write(sc, 0x14, 0xc200); + re_mdio_write(sc, 0x14, 0xc43f); + re_mdio_write(sc, 0x14, 0xcc03); + re_mdio_write(sc, 0x14, 0xa701); + re_mdio_write(sc, 0x14, 0xa510); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4018); + re_mdio_write(sc, 0x14, 0x9910); + re_mdio_write(sc, 0x14, 0x8510); + re_mdio_write(sc, 0x14, 0x2926); + re_mdio_write(sc, 0x14, 0x1792); + re_mdio_write(sc, 0x14, 0x27db); + re_mdio_write(sc, 0x14, 0xc000); + re_mdio_write(sc, 0x14, 0xc100); + re_mdio_write(sc, 0x14, 0xc200); + re_mdio_write(sc, 0x14, 0xc300); + re_mdio_write(sc, 0x14, 0xc400); + re_mdio_write(sc, 0x14, 0xc500); + re_mdio_write(sc, 0x14, 0xc600); + re_mdio_write(sc, 0x14, 0xc7c1); + re_mdio_write(sc, 0x14, 0xc800); + re_mdio_write(sc, 0x14, 0xcc00); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xca0f); + re_mdio_write(sc, 0x14, 0xcbff); + re_mdio_write(sc, 0x14, 0xa901); + re_mdio_write(sc, 0x14, 0x8902); + re_mdio_write(sc, 0x14, 0xc900); + re_mdio_write(sc, 0x14, 0xca00); + re_mdio_write(sc, 0x14, 0xcb00); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xb804); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x6044); + re_mdio_write(sc, 0x14, 0x9804); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6099); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cd4); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xa510); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6098); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cd4); + re_mdio_write(sc, 0x14, 0x8510); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x3003); + re_mdio_write(sc, 0x14, 0x1d01); + re_mdio_write(sc, 0x14, 0x2d0b); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x60be); + re_mdio_write(sc, 0x14, 0xe060); + re_mdio_write(sc, 0x14, 0x0920); + re_mdio_write(sc, 0x14, 0x1cd6); + re_mdio_write(sc, 0x14, 0x2c89); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x3063); + re_mdio_write(sc, 0x14, 0x1948); + re_mdio_write(sc, 0x14, 0x288a); + re_mdio_write(sc, 0x14, 0x1cd6); + re_mdio_write(sc, 0x14, 0x29bd); + re_mdio_write(sc, 0x14, 0xa802); + re_mdio_write(sc, 0x14, 0xa303); + re_mdio_write(sc, 0x14, 0x843f); + re_mdio_write(sc, 0x14, 0x81ff); + re_mdio_write(sc, 0x14, 0x8208); + re_mdio_write(sc, 0x14, 0xa201); + re_mdio_write(sc, 0x14, 0xc001); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x30a0); + re_mdio_write(sc, 0x14, 0x0d1c); + re_mdio_write(sc, 0x14, 0x30a0); + re_mdio_write(sc, 0x14, 0x3d13); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7f4c); + re_mdio_write(sc, 0x14, 0x2ab6); + re_mdio_write(sc, 0x14, 0xe003); + re_mdio_write(sc, 0x14, 0x0202); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6090); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fac); + re_mdio_write(sc, 0x14, 0x2ab6); + re_mdio_write(sc, 0x14, 0xa20c); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6091); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fac); + re_mdio_write(sc, 0x14, 0x2ab6); + re_mdio_write(sc, 0x14, 0x820e); + re_mdio_write(sc, 0x14, 0xa3e0); + re_mdio_write(sc, 0x14, 0xa520); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x609d); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fac); + re_mdio_write(sc, 0x14, 0x2ab6); + re_mdio_write(sc, 0x14, 0x8520); + re_mdio_write(sc, 0x14, 0x6703); + re_mdio_write(sc, 0x14, 0x2d34); + re_mdio_write(sc, 0x14, 0xa13e); + re_mdio_write(sc, 0x14, 0xc001); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x6046); + re_mdio_write(sc, 0x14, 0x2d0d); + re_mdio_write(sc, 0x14, 0xa43f); + re_mdio_write(sc, 0x14, 0xa101); + re_mdio_write(sc, 0x14, 0xc020); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x3121); + re_mdio_write(sc, 0x14, 0x0d45); + re_mdio_write(sc, 0x14, 0x30c0); + re_mdio_write(sc, 0x14, 0x3d0d); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7f4c); + re_mdio_write(sc, 0x14, 0x2ab6); + re_mdio_write(sc, 0x14, 0xa540); + re_mdio_write(sc, 0x14, 0xc001); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4001); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0501); + re_mdio_write(sc, 0x14, 0x1dac); + re_mdio_write(sc, 0x14, 0xc1c4); + re_mdio_write(sc, 0x14, 0xa268); + re_mdio_write(sc, 0x14, 0xa303); + re_mdio_write(sc, 0x14, 0x8420); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0502); + re_mdio_write(sc, 0x14, 0x1dac); + re_mdio_write(sc, 0x14, 0xc002); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x8208); + re_mdio_write(sc, 0x14, 0x8410); + re_mdio_write(sc, 0x14, 0xa121); + re_mdio_write(sc, 0x14, 0xc002); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x8120); + re_mdio_write(sc, 0x14, 0x8180); + re_mdio_write(sc, 0x14, 0x1d97); + re_mdio_write(sc, 0x14, 0xa180); + re_mdio_write(sc, 0x14, 0xa13a); + re_mdio_write(sc, 0x14, 0x8240); + re_mdio_write(sc, 0x14, 0xa430); + re_mdio_write(sc, 0x14, 0xc010); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x30e1); + re_mdio_write(sc, 0x14, 0x0abc); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7f8c); + re_mdio_write(sc, 0x14, 0x2ab6); + re_mdio_write(sc, 0x14, 0xa480); + re_mdio_write(sc, 0x14, 0xa230); + re_mdio_write(sc, 0x14, 0xa303); + re_mdio_write(sc, 0x14, 0xc001); + re_mdio_write(sc, 0x14, 0xd70c); + re_mdio_write(sc, 0x14, 0x4124); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6120); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x3128); + re_mdio_write(sc, 0x14, 0x3d76); + re_mdio_write(sc, 0x14, 0x2d70); + re_mdio_write(sc, 0x14, 0xa801); + re_mdio_write(sc, 0x14, 0x2d6c); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0xe018); + re_mdio_write(sc, 0x14, 0x0208); + re_mdio_write(sc, 0x14, 0xa1f8); + re_mdio_write(sc, 0x14, 0x8480); + re_mdio_write(sc, 0x14, 0xc004); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x6046); + re_mdio_write(sc, 0x14, 0x2d0d); + re_mdio_write(sc, 0x14, 0xa43f); + re_mdio_write(sc, 0x14, 0xa105); + re_mdio_write(sc, 0x14, 0x8228); + re_mdio_write(sc, 0x14, 0xc004); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x81bc); + re_mdio_write(sc, 0x14, 0xa220); + re_mdio_write(sc, 0x14, 0x1d97); + re_mdio_write(sc, 0x14, 0x8220); + re_mdio_write(sc, 0x14, 0xa1bc); + re_mdio_write(sc, 0x14, 0xc040); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x30e1); + re_mdio_write(sc, 0x14, 0x0abc); + re_mdio_write(sc, 0x14, 0x30e1); + re_mdio_write(sc, 0x14, 0x3d0d); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7f4c); + re_mdio_write(sc, 0x14, 0x2ab6); + re_mdio_write(sc, 0x14, 0xa802); + re_mdio_write(sc, 0x14, 0xd70c); + re_mdio_write(sc, 0x14, 0x4244); + re_mdio_write(sc, 0x14, 0xa301); + re_mdio_write(sc, 0x14, 0xc004); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x3128); + re_mdio_write(sc, 0x14, 0x3da5); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x5f80); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x3109); + re_mdio_write(sc, 0x14, 0x3da7); + re_mdio_write(sc, 0x14, 0x2dab); + re_mdio_write(sc, 0x14, 0xa801); + re_mdio_write(sc, 0x14, 0x2d9a); + re_mdio_write(sc, 0x14, 0xa802); + re_mdio_write(sc, 0x14, 0xc004); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xa510); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x609a); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fac); + re_mdio_write(sc, 0x14, 0x2ab6); + re_mdio_write(sc, 0x14, 0x8510); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x13, 0xA01A); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xA006); + re_mdio_write(sc, 0x14, 0x0ad6); + re_mdio_write(sc, 0x13, 0xA004); + re_mdio_write(sc, 0x14, 0x07f5); + re_mdio_write(sc, 0x13, 0xA002); + re_mdio_write(sc, 0x14, 0x06a9); + re_mdio_write(sc, 0x13, 0xA000); + re_mdio_write(sc, 0x14, 0xf069); + re_mdio_write(sc, 0x13, 0xB820); + re_mdio_write(sc, 0x14, 0x0210); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x83a0); + re_mdio_write(sc, 0x14, 0xaf83); + re_mdio_write(sc, 0x14, 0xacaf); + re_mdio_write(sc, 0x14, 0x83b8); + re_mdio_write(sc, 0x14, 0xaf83); + re_mdio_write(sc, 0x14, 0xcdaf); + re_mdio_write(sc, 0x14, 0x83d3); + re_mdio_write(sc, 0x14, 0x0204); + re_mdio_write(sc, 0x14, 0x9a02); + re_mdio_write(sc, 0x14, 0x09a9); + re_mdio_write(sc, 0x14, 0x0284); + re_mdio_write(sc, 0x14, 0x61af); + re_mdio_write(sc, 0x14, 0x02fc); + re_mdio_write(sc, 0x14, 0xad20); + re_mdio_write(sc, 0x14, 0x0302); + re_mdio_write(sc, 0x14, 0x867c); + re_mdio_write(sc, 0x14, 0xad21); + re_mdio_write(sc, 0x14, 0x0302); + re_mdio_write(sc, 0x14, 0x85c9); + re_mdio_write(sc, 0x14, 0xad22); + re_mdio_write(sc, 0x14, 0x0302); + re_mdio_write(sc, 0x14, 0x1bc0); + re_mdio_write(sc, 0x14, 0xaf17); + re_mdio_write(sc, 0x14, 0xe302); + re_mdio_write(sc, 0x14, 0x8703); + re_mdio_write(sc, 0x14, 0xaf18); + re_mdio_write(sc, 0x14, 0x6201); + re_mdio_write(sc, 0x14, 0x06e0); + re_mdio_write(sc, 0x14, 0x8148); + re_mdio_write(sc, 0x14, 0xaf3c); + re_mdio_write(sc, 0x14, 0x69f8); + re_mdio_write(sc, 0x14, 0xf9fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0x10f7); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0x131f); + re_mdio_write(sc, 0x14, 0xd104); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0xf302); + re_mdio_write(sc, 0x14, 0x4259); + re_mdio_write(sc, 0x14, 0x0287); + re_mdio_write(sc, 0x14, 0x88bf); + re_mdio_write(sc, 0x14, 0x87cf); + re_mdio_write(sc, 0x14, 0xd7b8); + re_mdio_write(sc, 0x14, 0x22d0); + re_mdio_write(sc, 0x14, 0x0c02); + re_mdio_write(sc, 0x14, 0x4252); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0xcda0); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0xce8b); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0xd1f5); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0xd2a9); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0xd30a); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0xf010); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0xf38f); + re_mdio_write(sc, 0x14, 0xee81); + re_mdio_write(sc, 0x14, 0x011e); + re_mdio_write(sc, 0x14, 0xee81); + re_mdio_write(sc, 0x14, 0x0b4a); + re_mdio_write(sc, 0x14, 0xee81); + re_mdio_write(sc, 0x14, 0x0c7c); + re_mdio_write(sc, 0x14, 0xee81); + re_mdio_write(sc, 0x14, 0x127f); + re_mdio_write(sc, 0x14, 0xd100); + re_mdio_write(sc, 0x14, 0x0210); + re_mdio_write(sc, 0x14, 0xb5ee); + re_mdio_write(sc, 0x14, 0x8088); + re_mdio_write(sc, 0x14, 0xa4ee); + re_mdio_write(sc, 0x14, 0x8089); + re_mdio_write(sc, 0x14, 0x44ee); + re_mdio_write(sc, 0x14, 0x809a); + re_mdio_write(sc, 0x14, 0xa4ee); + re_mdio_write(sc, 0x14, 0x809b); + re_mdio_write(sc, 0x14, 0x44ee); + re_mdio_write(sc, 0x14, 0x809c); + re_mdio_write(sc, 0x14, 0xa7ee); + re_mdio_write(sc, 0x14, 0x80a5); + re_mdio_write(sc, 0x14, 0xa7d2); + re_mdio_write(sc, 0x14, 0x0002); + re_mdio_write(sc, 0x14, 0x0e66); + re_mdio_write(sc, 0x14, 0x0285); + re_mdio_write(sc, 0x14, 0xc0ee); + re_mdio_write(sc, 0x14, 0x87fc); + re_mdio_write(sc, 0x14, 0x00e0); + re_mdio_write(sc, 0x14, 0x8245); + re_mdio_write(sc, 0x14, 0xf622); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x45ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfdfc); + re_mdio_write(sc, 0x14, 0x0402); + re_mdio_write(sc, 0x14, 0x847a); + re_mdio_write(sc, 0x14, 0x0284); + re_mdio_write(sc, 0x14, 0xb302); + re_mdio_write(sc, 0x14, 0x0cab); + re_mdio_write(sc, 0x14, 0x020c); + re_mdio_write(sc, 0x14, 0xc402); + re_mdio_write(sc, 0x14, 0x0cef); + re_mdio_write(sc, 0x14, 0x020d); + re_mdio_write(sc, 0x14, 0x0802); + re_mdio_write(sc, 0x14, 0x0d33); + re_mdio_write(sc, 0x14, 0x020c); + re_mdio_write(sc, 0x14, 0x3d04); + re_mdio_write(sc, 0x14, 0xf8fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xe182); + re_mdio_write(sc, 0x14, 0x2fac); + re_mdio_write(sc, 0x14, 0x291a); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x24ac); + re_mdio_write(sc, 0x14, 0x2102); + re_mdio_write(sc, 0x14, 0xae22); + re_mdio_write(sc, 0x14, 0x0210); + re_mdio_write(sc, 0x14, 0x57f6); + re_mdio_write(sc, 0x14, 0x21e4); + re_mdio_write(sc, 0x14, 0x8224); + re_mdio_write(sc, 0x14, 0xd101); + re_mdio_write(sc, 0x14, 0xbf44); + re_mdio_write(sc, 0x14, 0xd202); + re_mdio_write(sc, 0x14, 0x4259); + re_mdio_write(sc, 0x14, 0xae10); + re_mdio_write(sc, 0x14, 0x0212); + re_mdio_write(sc, 0x14, 0x4cf6); + re_mdio_write(sc, 0x14, 0x29e5); + re_mdio_write(sc, 0x14, 0x822f); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x24f6); + re_mdio_write(sc, 0x14, 0x21e4); + re_mdio_write(sc, 0x14, 0x8224); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefc); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xe182); + re_mdio_write(sc, 0x14, 0x2fac); + re_mdio_write(sc, 0x14, 0x2a18); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x24ac); + re_mdio_write(sc, 0x14, 0x2202); + re_mdio_write(sc, 0x14, 0xae26); + re_mdio_write(sc, 0x14, 0x0284); + re_mdio_write(sc, 0x14, 0xf802); + re_mdio_write(sc, 0x14, 0x8565); + re_mdio_write(sc, 0x14, 0xd101); + re_mdio_write(sc, 0x14, 0xbf44); + re_mdio_write(sc, 0x14, 0xd502); + re_mdio_write(sc, 0x14, 0x4259); + re_mdio_write(sc, 0x14, 0xae0e); + re_mdio_write(sc, 0x14, 0x0284); + re_mdio_write(sc, 0x14, 0xea02); + re_mdio_write(sc, 0x14, 0x85a9); + re_mdio_write(sc, 0x14, 0xe182); + re_mdio_write(sc, 0x14, 0x2ff6); + re_mdio_write(sc, 0x14, 0x2ae5); + re_mdio_write(sc, 0x14, 0x822f); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x24f6); + re_mdio_write(sc, 0x14, 0x22e4); + re_mdio_write(sc, 0x14, 0x8224); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf9e2); + re_mdio_write(sc, 0x14, 0x8011); + re_mdio_write(sc, 0x14, 0xad31); + re_mdio_write(sc, 0x14, 0x05d2); + re_mdio_write(sc, 0x14, 0x0002); + re_mdio_write(sc, 0x14, 0x0e66); + re_mdio_write(sc, 0x14, 0xfd04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69e0); + re_mdio_write(sc, 0x14, 0x8011); + re_mdio_write(sc, 0x14, 0xad21); + re_mdio_write(sc, 0x14, 0x5cbf); + re_mdio_write(sc, 0x14, 0x43be); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x97ac); + re_mdio_write(sc, 0x14, 0x281b); + re_mdio_write(sc, 0x14, 0xbf43); + re_mdio_write(sc, 0x14, 0xc102); + re_mdio_write(sc, 0x14, 0x4297); + re_mdio_write(sc, 0x14, 0xac28); + re_mdio_write(sc, 0x14, 0x12bf); + re_mdio_write(sc, 0x14, 0x43c7); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x97ac); + re_mdio_write(sc, 0x14, 0x2804); + re_mdio_write(sc, 0x14, 0xd300); + re_mdio_write(sc, 0x14, 0xae07); + re_mdio_write(sc, 0x14, 0xd306); + re_mdio_write(sc, 0x14, 0xaf85); + re_mdio_write(sc, 0x14, 0x56d3); + re_mdio_write(sc, 0x14, 0x03e0); + re_mdio_write(sc, 0x14, 0x8011); + re_mdio_write(sc, 0x14, 0xad26); + re_mdio_write(sc, 0x14, 0x25bf); + re_mdio_write(sc, 0x14, 0x4559); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x97e2); + re_mdio_write(sc, 0x14, 0x8073); + re_mdio_write(sc, 0x14, 0x0d21); + re_mdio_write(sc, 0x14, 0xf637); + re_mdio_write(sc, 0x14, 0x0d11); + re_mdio_write(sc, 0x14, 0xf62f); + re_mdio_write(sc, 0x14, 0x1b21); + re_mdio_write(sc, 0x14, 0xaa02); + re_mdio_write(sc, 0x14, 0xae10); + re_mdio_write(sc, 0x14, 0xe280); + re_mdio_write(sc, 0x14, 0x740d); + re_mdio_write(sc, 0x14, 0x21f6); + re_mdio_write(sc, 0x14, 0x371b); + re_mdio_write(sc, 0x14, 0x21aa); + re_mdio_write(sc, 0x14, 0x0313); + re_mdio_write(sc, 0x14, 0xae02); + re_mdio_write(sc, 0x14, 0x2b02); + re_mdio_write(sc, 0x14, 0x020e); + re_mdio_write(sc, 0x14, 0x5102); + re_mdio_write(sc, 0x14, 0x0e66); + re_mdio_write(sc, 0x14, 0x020f); + re_mdio_write(sc, 0x14, 0xa3ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfdfc); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xf9fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xe080); + re_mdio_write(sc, 0x14, 0x12ad); + re_mdio_write(sc, 0x14, 0x2733); + re_mdio_write(sc, 0x14, 0xbf43); + re_mdio_write(sc, 0x14, 0xbe02); + re_mdio_write(sc, 0x14, 0x4297); + re_mdio_write(sc, 0x14, 0xac28); + re_mdio_write(sc, 0x14, 0x09bf); + re_mdio_write(sc, 0x14, 0x43c1); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x97ad); + re_mdio_write(sc, 0x14, 0x2821); + re_mdio_write(sc, 0x14, 0xbf45); + re_mdio_write(sc, 0x14, 0x5902); + re_mdio_write(sc, 0x14, 0x4297); + re_mdio_write(sc, 0x14, 0xe387); + re_mdio_write(sc, 0x14, 0xffd2); + re_mdio_write(sc, 0x14, 0x001b); + re_mdio_write(sc, 0x14, 0x45ac); + re_mdio_write(sc, 0x14, 0x2711); + re_mdio_write(sc, 0x14, 0xe187); + re_mdio_write(sc, 0x14, 0xfebf); + re_mdio_write(sc, 0x14, 0x87e4); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x590d); + re_mdio_write(sc, 0x14, 0x11bf); + re_mdio_write(sc, 0x14, 0x87e7); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x59ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfdfc); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69d1); + re_mdio_write(sc, 0x14, 0x00bf); + re_mdio_write(sc, 0x14, 0x87e4); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x59bf); + re_mdio_write(sc, 0x14, 0x87e7); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x59ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xee87); + re_mdio_write(sc, 0x14, 0xff46); + re_mdio_write(sc, 0x14, 0xee87); + re_mdio_write(sc, 0x14, 0xfe01); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69e0); + re_mdio_write(sc, 0x14, 0x8241); + re_mdio_write(sc, 0x14, 0xa000); + re_mdio_write(sc, 0x14, 0x0502); + re_mdio_write(sc, 0x14, 0x85eb); + re_mdio_write(sc, 0x14, 0xae0e); + re_mdio_write(sc, 0x14, 0xa001); + re_mdio_write(sc, 0x14, 0x0502); + re_mdio_write(sc, 0x14, 0x1a5a); + re_mdio_write(sc, 0x14, 0xae06); + re_mdio_write(sc, 0x14, 0xa002); + re_mdio_write(sc, 0x14, 0x0302); + re_mdio_write(sc, 0x14, 0x1ae6); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefc); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xf9fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x29f6); + re_mdio_write(sc, 0x14, 0x21e4); + re_mdio_write(sc, 0x14, 0x8229); + re_mdio_write(sc, 0x14, 0xe080); + re_mdio_write(sc, 0x14, 0x10ac); + re_mdio_write(sc, 0x14, 0x2202); + re_mdio_write(sc, 0x14, 0xae76); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x27f7); + re_mdio_write(sc, 0x14, 0x21e4); + re_mdio_write(sc, 0x14, 0x8227); + re_mdio_write(sc, 0x14, 0xbf43); + re_mdio_write(sc, 0x14, 0x1302); + re_mdio_write(sc, 0x14, 0x4297); + re_mdio_write(sc, 0x14, 0xef21); + re_mdio_write(sc, 0x14, 0xbf43); + re_mdio_write(sc, 0x14, 0x1602); + re_mdio_write(sc, 0x14, 0x4297); + re_mdio_write(sc, 0x14, 0x0c11); + re_mdio_write(sc, 0x14, 0x1e21); + re_mdio_write(sc, 0x14, 0xbf43); + re_mdio_write(sc, 0x14, 0x1902); + re_mdio_write(sc, 0x14, 0x4297); + re_mdio_write(sc, 0x14, 0x0c12); + re_mdio_write(sc, 0x14, 0x1e21); + re_mdio_write(sc, 0x14, 0xe682); + re_mdio_write(sc, 0x14, 0x43a2); + re_mdio_write(sc, 0x14, 0x000a); + re_mdio_write(sc, 0x14, 0xe182); + re_mdio_write(sc, 0x14, 0x27f6); + re_mdio_write(sc, 0x14, 0x29e5); + re_mdio_write(sc, 0x14, 0x8227); + re_mdio_write(sc, 0x14, 0xae42); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x44f7); + re_mdio_write(sc, 0x14, 0x21e4); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0x0246); + re_mdio_write(sc, 0x14, 0xaebf); + re_mdio_write(sc, 0x14, 0x4325); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x97ef); + re_mdio_write(sc, 0x14, 0x21bf); + re_mdio_write(sc, 0x14, 0x431c); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x970c); + re_mdio_write(sc, 0x14, 0x121e); + re_mdio_write(sc, 0x14, 0x21bf); + re_mdio_write(sc, 0x14, 0x431f); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x970c); + re_mdio_write(sc, 0x14, 0x131e); + re_mdio_write(sc, 0x14, 0x21bf); + re_mdio_write(sc, 0x14, 0x4328); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x970c); + re_mdio_write(sc, 0x14, 0x141e); + re_mdio_write(sc, 0x14, 0x21bf); + re_mdio_write(sc, 0x14, 0x44b1); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x970c); + re_mdio_write(sc, 0x14, 0x161e); + re_mdio_write(sc, 0x14, 0x21e6); + re_mdio_write(sc, 0x14, 0x8242); + re_mdio_write(sc, 0x14, 0xee82); + re_mdio_write(sc, 0x14, 0x4101); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x46a0); + re_mdio_write(sc, 0x14, 0x0005); + re_mdio_write(sc, 0x14, 0x0286); + re_mdio_write(sc, 0x14, 0x96ae); + re_mdio_write(sc, 0x14, 0x06a0); + re_mdio_write(sc, 0x14, 0x0103); + re_mdio_write(sc, 0x14, 0x0219); + re_mdio_write(sc, 0x14, 0x19ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x29f6); + re_mdio_write(sc, 0x14, 0x20e4); + re_mdio_write(sc, 0x14, 0x8229); + re_mdio_write(sc, 0x14, 0xe080); + re_mdio_write(sc, 0x14, 0x10ac); + re_mdio_write(sc, 0x14, 0x2102); + re_mdio_write(sc, 0x14, 0xae54); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x27f7); + re_mdio_write(sc, 0x14, 0x20e4); + re_mdio_write(sc, 0x14, 0x8227); + re_mdio_write(sc, 0x14, 0xbf42); + re_mdio_write(sc, 0x14, 0xe602); + re_mdio_write(sc, 0x14, 0x4297); + re_mdio_write(sc, 0x14, 0xac28); + re_mdio_write(sc, 0x14, 0x22bf); + re_mdio_write(sc, 0x14, 0x430d); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x97e5); + re_mdio_write(sc, 0x14, 0x8247); + re_mdio_write(sc, 0x14, 0xac28); + re_mdio_write(sc, 0x14, 0x20d1); + re_mdio_write(sc, 0x14, 0x03bf); + re_mdio_write(sc, 0x14, 0x4307); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x59ee); + re_mdio_write(sc, 0x14, 0x8246); + re_mdio_write(sc, 0x14, 0x00e1); + re_mdio_write(sc, 0x14, 0x8227); + re_mdio_write(sc, 0x14, 0xf628); + re_mdio_write(sc, 0x14, 0xe582); + re_mdio_write(sc, 0x14, 0x27ae); + re_mdio_write(sc, 0x14, 0x21d1); + re_mdio_write(sc, 0x14, 0x04bf); + re_mdio_write(sc, 0x14, 0x4307); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x59ae); + re_mdio_write(sc, 0x14, 0x08d1); + re_mdio_write(sc, 0x14, 0x05bf); + re_mdio_write(sc, 0x14, 0x4307); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x59e0); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0xf720); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x4402); + re_mdio_write(sc, 0x14, 0x46ae); + re_mdio_write(sc, 0x14, 0xee82); + re_mdio_write(sc, 0x14, 0x4601); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefc); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69e0); + re_mdio_write(sc, 0x14, 0x8013); + re_mdio_write(sc, 0x14, 0xad24); + re_mdio_write(sc, 0x14, 0x1cbf); + re_mdio_write(sc, 0x14, 0x87f0); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x97ad); + re_mdio_write(sc, 0x14, 0x2813); + re_mdio_write(sc, 0x14, 0xe087); + re_mdio_write(sc, 0x14, 0xfca0); + re_mdio_write(sc, 0x14, 0x0005); + re_mdio_write(sc, 0x14, 0x0287); + re_mdio_write(sc, 0x14, 0x36ae); + re_mdio_write(sc, 0x14, 0x10a0); + re_mdio_write(sc, 0x14, 0x0105); + re_mdio_write(sc, 0x14, 0x0287); + re_mdio_write(sc, 0x14, 0x48ae); + re_mdio_write(sc, 0x14, 0x08e0); + re_mdio_write(sc, 0x14, 0x8230); + re_mdio_write(sc, 0x14, 0xf626); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x30ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8e0); + re_mdio_write(sc, 0x14, 0x8245); + re_mdio_write(sc, 0x14, 0xf722); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x4502); + re_mdio_write(sc, 0x14, 0x46ae); + re_mdio_write(sc, 0x14, 0xee87); + re_mdio_write(sc, 0x14, 0xfc01); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xfb02); + re_mdio_write(sc, 0x14, 0x46d3); + re_mdio_write(sc, 0x14, 0xad50); + re_mdio_write(sc, 0x14, 0x2fbf); + re_mdio_write(sc, 0x14, 0x87ed); + re_mdio_write(sc, 0x14, 0xd101); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x59bf); + re_mdio_write(sc, 0x14, 0x87ed); + re_mdio_write(sc, 0x14, 0xd100); + re_mdio_write(sc, 0x14, 0x0242); + re_mdio_write(sc, 0x14, 0x59e0); + re_mdio_write(sc, 0x14, 0x8245); + re_mdio_write(sc, 0x14, 0xf622); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x4502); + re_mdio_write(sc, 0x14, 0x46ae); + re_mdio_write(sc, 0x14, 0xd100); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0xf002); + re_mdio_write(sc, 0x14, 0x4259); + re_mdio_write(sc, 0x14, 0xee87); + re_mdio_write(sc, 0x14, 0xfc00); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x30f6); + re_mdio_write(sc, 0x14, 0x26e4); + re_mdio_write(sc, 0x14, 0x8230); + re_mdio_write(sc, 0x14, 0xffef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xface); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69fb); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0xb3d7); + re_mdio_write(sc, 0x14, 0x001c); + re_mdio_write(sc, 0x14, 0xd819); + re_mdio_write(sc, 0x14, 0xd919); + re_mdio_write(sc, 0x14, 0xda19); + re_mdio_write(sc, 0x14, 0xdb19); + re_mdio_write(sc, 0x14, 0x07ef); + re_mdio_write(sc, 0x14, 0x9502); + re_mdio_write(sc, 0x14, 0x4259); + re_mdio_write(sc, 0x14, 0x073f); + re_mdio_write(sc, 0x14, 0x0004); + re_mdio_write(sc, 0x14, 0x9fec); + re_mdio_write(sc, 0x14, 0xffef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xc6fe); + re_mdio_write(sc, 0x14, 0xfdfc); + re_mdio_write(sc, 0x14, 0x0400); + re_mdio_write(sc, 0x14, 0x0145); + re_mdio_write(sc, 0x14, 0x7d00); + re_mdio_write(sc, 0x14, 0x0345); + re_mdio_write(sc, 0x14, 0x5c00); + re_mdio_write(sc, 0x14, 0x0143); + re_mdio_write(sc, 0x14, 0x4f00); + re_mdio_write(sc, 0x14, 0x0387); + re_mdio_write(sc, 0x14, 0xdb00); + re_mdio_write(sc, 0x14, 0x0987); + re_mdio_write(sc, 0x14, 0xde00); + re_mdio_write(sc, 0x14, 0x0987); + re_mdio_write(sc, 0x14, 0xe100); + re_mdio_write(sc, 0x14, 0x0087); + re_mdio_write(sc, 0x14, 0xeaa4); + re_mdio_write(sc, 0x14, 0x00b8); + re_mdio_write(sc, 0x14, 0x20c4); + re_mdio_write(sc, 0x14, 0x1600); + re_mdio_write(sc, 0x14, 0x000f); + re_mdio_write(sc, 0x14, 0xf800); + re_mdio_write(sc, 0x14, 0x7098); + re_mdio_write(sc, 0x14, 0xa58a); + re_mdio_write(sc, 0x14, 0xb6a8); + re_mdio_write(sc, 0x14, 0x3e50); + re_mdio_write(sc, 0x14, 0xa83e); + re_mdio_write(sc, 0x14, 0x33bc); + re_mdio_write(sc, 0x14, 0xc622); + re_mdio_write(sc, 0x14, 0xbcc6); + re_mdio_write(sc, 0x14, 0xaaa4); + re_mdio_write(sc, 0x14, 0x42ff); + re_mdio_write(sc, 0x14, 0xc408); + re_mdio_write(sc, 0x14, 0x00c4); + re_mdio_write(sc, 0x14, 0x16a8); + re_mdio_write(sc, 0x14, 0xbcc0); + re_mdio_write(sc, 0x13, 0xb818); + re_mdio_write(sc, 0x14, 0x02f3); + re_mdio_write(sc, 0x13, 0xb81a); + re_mdio_write(sc, 0x14, 0x17d1); + re_mdio_write(sc, 0x13, 0xb81c); + re_mdio_write(sc, 0x14, 0x185a); + re_mdio_write(sc, 0x13, 0xb81e); + re_mdio_write(sc, 0x14, 0x3c66); + re_mdio_write(sc, 0x13, 0xb820); + re_mdio_write(sc, 0x14, 0x021f); + re_mdio_write(sc, 0x13, 0xc416); + re_mdio_write(sc, 0x14, 0x0500); + re_mdio_write(sc, 0x13, 0xb82e); + re_mdio_write(sc, 0x14, 0xfffc); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x0000); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x1f, 0x0B82); + PhyRegValue = re_mdio_read(sc, 0x10); + PhyRegValue &= ~(BIT_9); + re_mdio_write(sc, 0x10, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8146); + re_mdio_write(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0A20); - PhyRegValue = MP_ReadPhyUshort(sc, 0x13); - if (PhyRegValue & BIT_11) { - if (PhyRegValue & BIT_10) { - retval = FALSE; - } + re_clear_phy_mcu_patch_request(sc); + if (sc->RequiredSecLanDonglePatch) { + re_mdio_write(sc, 0x1F, 0x0A43); + PhyRegValue = re_mdio_read(sc, 0x11); + PhyRegValue &= ~(BIT_6); + re_mdio_write(sc, 0x11, PhyRegValue); } +} - retval = re_clear_phy_mcu_patch_request(sc); +static void re_set_phy_mcu_8168gu_2(struct re_softc *sc) +{ + u_int16_t PhyRegValue; - //delay 2ms - DELAY(2000); - break; - default: - break; - } + re_set_phy_mcu_patch_request(sc); - MP_WritePhyUshort(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8146); + re_mdio_write(sc, 0x14, 0x0300); + re_mdio_write(sc, 0x13, 0xB82E); + re_mdio_write(sc, 0x14, 0x0001); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0xb820); + re_mdio_write(sc, 0x14, 0x0290); + re_mdio_write(sc, 0x13, 0xa012); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xa014); + re_mdio_write(sc, 0x14, 0x2c04); + re_mdio_write(sc, 0x14, 0x2c07); + re_mdio_write(sc, 0x14, 0x2c07); + re_mdio_write(sc, 0x14, 0x2c07); + re_mdio_write(sc, 0x14, 0xa304); + re_mdio_write(sc, 0x14, 0xa301); + re_mdio_write(sc, 0x14, 0x207e); + re_mdio_write(sc, 0x13, 0xa01a); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xa006); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xa004); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xa002); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xa000); + re_mdio_write(sc, 0x14, 0x107c); + re_mdio_write(sc, 0x13, 0xb820); + re_mdio_write(sc, 0x14, 0x0210); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x0000); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x1f, 0x0B82); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8146); + re_mdio_write(sc, 0x14, 0x0000); - return retval; + re_clear_phy_mcu_patch_request(sc); + if (sc->RequiredSecLanDonglePatch) { + re_mdio_write(sc, 0x1F, 0x0A43); + PhyRegValue = re_mdio_read(sc, 0x11); + PhyRegValue &= ~(BIT_6); + re_mdio_write(sc, 0x11, PhyRegValue); + } } -static void re_set_phy_ram_code_check_fail_flag(struct re_softc* sc) +static void re_set_phy_mcu_8411b_1(struct re_softc *sc) { - u_int16_t TmpUshort; + u_int16_t PhyRegValue; - switch (sc->re_type) { - case MACFG_56: - TmpUshort = MP_ReadMcuAccessRegWord(sc, 0xD3C0); - TmpUshort |= BIT_0; - MP_WriteMcuAccessRegWord(sc, 0xD3C0, TmpUshort); - break; - } + re_set_phy_mcu_patch_request(sc); + + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8146); + re_mdio_write(sc, 0x14, 0x0100); + re_mdio_write(sc, 0x13, 0xB82E); + re_mdio_write(sc, 0x14, 0x0001); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0xb820); + re_mdio_write(sc, 0x14, 0x0290); + re_mdio_write(sc, 0x13, 0xa012); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xa014); + re_mdio_write(sc, 0x14, 0x2c04); + re_mdio_write(sc, 0x14, 0x2c07); + re_mdio_write(sc, 0x14, 0x2c07); + re_mdio_write(sc, 0x14, 0x2c07); + re_mdio_write(sc, 0x14, 0xa304); + re_mdio_write(sc, 0x14, 0xa301); + re_mdio_write(sc, 0x14, 0x207e); + re_mdio_write(sc, 0x13, 0xa01a); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xa006); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xa004); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xa002); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xa000); + re_mdio_write(sc, 0x14, 0x107c); + re_mdio_write(sc, 0x13, 0xb820); + re_mdio_write(sc, 0x14, 0x0210); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x0000); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x1f, 0x0B82); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8146); + re_mdio_write(sc, 0x14, 0x0000); + + re_clear_phy_mcu_patch_request(sc); + if (sc->RequiredSecLanDonglePatch) { + re_mdio_write(sc, 0x1F, 0x0A43); + PhyRegValue = re_mdio_read(sc, 0x11); + PhyRegValue &= ~(BIT_6); + re_mdio_write(sc, 0x11, PhyRegValue); + } } -static int re_hw_phy_mcu_code_ver_matched(struct re_softc* sc) +static void re_set_phy_mcu_8168h_1(struct re_softc *sc) { - int ram_code_ver_match = 0; + u_int16_t PhyRegValue; - switch (sc->re_type) { - case MACFG_36: - case MACFG_37: - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B60); - sc->re_hw_ram_code_ver = MP_ReadPhyUshort(sc, 0x06); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - break; - case MACFG_38: - case MACFG_39: - case MACFG_50: - case MACFG_51: - case MACFG_52: - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B30); - sc->re_hw_ram_code_ver = MP_ReadPhyUshort(sc, 0x06); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - break; - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x801E); - sc->re_hw_ram_code_ver = MP_ReadPhyUshort(sc, 0x14); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - break; - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x801E); - sc->re_hw_ram_code_ver = MP_RealReadPhyOcpRegWord(sc, 0xA438); - break; - default: - sc->re_hw_ram_code_ver = ~0; - break; - } + re_set_phy_mcu_patch_request(sc); - if (sc->re_hw_ram_code_ver == sc->re_sw_ram_code_ver) - ram_code_ver_match = 1; + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8028); + re_mdio_write(sc, 0x14, 0x6200); + re_mdio_write(sc, 0x13, 0xB82E); + re_mdio_write(sc, 0x14, 0x0001); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0xB820); + re_mdio_write(sc, 0x14, 0x0290); + re_mdio_write(sc, 0x13, 0xA012); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xA014); + re_mdio_write(sc, 0x14, 0x2c04); + re_mdio_write(sc, 0x14, 0x2c10); + re_mdio_write(sc, 0x14, 0x2c10); + re_mdio_write(sc, 0x14, 0x2c10); + re_mdio_write(sc, 0x14, 0xa210); + re_mdio_write(sc, 0x14, 0xa101); + re_mdio_write(sc, 0x14, 0xce10); + re_mdio_write(sc, 0x14, 0xe070); + re_mdio_write(sc, 0x14, 0x0f40); + re_mdio_write(sc, 0x14, 0xaf01); + re_mdio_write(sc, 0x14, 0x8f01); + re_mdio_write(sc, 0x14, 0x183e); + re_mdio_write(sc, 0x14, 0x8e10); + re_mdio_write(sc, 0x14, 0x8101); + re_mdio_write(sc, 0x14, 0x8210); + re_mdio_write(sc, 0x14, 0x28da); + re_mdio_write(sc, 0x13, 0xA01A); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xA006); + re_mdio_write(sc, 0x14, 0x0017); + re_mdio_write(sc, 0x13, 0xA004); + re_mdio_write(sc, 0x14, 0x0015); + re_mdio_write(sc, 0x13, 0xA002); + re_mdio_write(sc, 0x14, 0x0013); + re_mdio_write(sc, 0x13, 0xA000); + re_mdio_write(sc, 0x14, 0x18d1); + re_mdio_write(sc, 0x13, 0xB820); + re_mdio_write(sc, 0x14, 0x0210); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x0000); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x1f, 0x0B82); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8028); + re_mdio_write(sc, 0x14, 0x0000); - return ram_code_ver_match; + re_clear_phy_mcu_patch_request(sc); + if (sc->RequiredSecLanDonglePatch) { + re_mdio_write(sc, 0x1F, 0x0A43); + PhyRegValue = re_mdio_read(sc, 0x11); + PhyRegValue &= ~(BIT_6); + re_mdio_write(sc, 0x11, PhyRegValue); + } } -static void re_write_hw_phy_mcu_code_ver(struct re_softc* sc) +static void re_set_phy_mcu_8168h_2(struct re_softc *sc) { - switch (sc->re_type) { - case MACFG_36: - case MACFG_37: - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B60); - MP_WritePhyUshort(sc, 0x06, sc->re_sw_ram_code_ver); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - sc->re_hw_ram_code_ver = sc->re_sw_ram_code_ver; - break; - case MACFG_38: - case MACFG_39: - case MACFG_50: - case MACFG_51: - case MACFG_52: - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B30); - MP_WritePhyUshort(sc, 0x06, sc->re_sw_ram_code_ver); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - sc->re_hw_ram_code_ver = sc->re_sw_ram_code_ver; - break; - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x801E); - MP_WritePhyUshort(sc, 0x14, sc->re_sw_ram_code_ver); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - sc->re_hw_ram_code_ver = sc->re_sw_ram_code_ver; - break; - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x801E); - MP_RealWritePhyOcpRegWord(sc, 0xA438, sc->re_sw_ram_code_ver); - sc->re_hw_ram_code_ver = sc->re_sw_ram_code_ver; - break; - } -} + u_int16_t PhyRegValue; -static void -re_acquire_phy_mcu_patch_key_lock(struct re_softc* sc) -{ - u_int16_t PatchKey; + re_set_phy_mcu_patch_request(sc); - switch (sc->re_type) { - case MACFG_80: - PatchKey = 0x8600; - break; - case MACFG_81: - PatchKey = 0x8601; - break; - case MACFG_82: - PatchKey = 0x3700; - break; - case MACFG_83: - PatchKey = 0x3701; - break; - default: - return; - } - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8024); - MP_RealWritePhyOcpRegWord(sc, 0xA438, PatchKey); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xB82E); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0001); -} + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8028); + re_mdio_write(sc, 0x14, 0x6201); + re_mdio_write(sc, 0x13, 0xB82E); + re_mdio_write(sc, 0x14, 0x0001); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0xB820); + re_mdio_write(sc, 0x14, 0x0290); + re_mdio_write(sc, 0x13, 0xA012); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xA014); + re_mdio_write(sc, 0x14, 0x2c04); + re_mdio_write(sc, 0x14, 0x2c09); + re_mdio_write(sc, 0x14, 0x2c0d); + re_mdio_write(sc, 0x14, 0x2c12); + re_mdio_write(sc, 0x14, 0xad01); + re_mdio_write(sc, 0x14, 0xad01); + re_mdio_write(sc, 0x14, 0xad01); + re_mdio_write(sc, 0x14, 0xad01); + re_mdio_write(sc, 0x14, 0x236c); + re_mdio_write(sc, 0x14, 0xd03c); + re_mdio_write(sc, 0x14, 0xd1aa); + re_mdio_write(sc, 0x14, 0xc010); + re_mdio_write(sc, 0x14, 0x2745); + re_mdio_write(sc, 0x14, 0x33de); + re_mdio_write(sc, 0x14, 0x16ba); + re_mdio_write(sc, 0x14, 0x31ee); + re_mdio_write(sc, 0x14, 0x2712); + re_mdio_write(sc, 0x14, 0x274e); + re_mdio_write(sc, 0x14, 0xc2bb); + re_mdio_write(sc, 0x14, 0xd500); + re_mdio_write(sc, 0x14, 0xc426); + re_mdio_write(sc, 0x14, 0xd01d); + re_mdio_write(sc, 0x14, 0xd1c3); + re_mdio_write(sc, 0x14, 0x401c); + re_mdio_write(sc, 0x14, 0xd501); + re_mdio_write(sc, 0x14, 0xc2b3); + re_mdio_write(sc, 0x14, 0xd500); + re_mdio_write(sc, 0x14, 0xd00b); + re_mdio_write(sc, 0x14, 0xd1c3); + re_mdio_write(sc, 0x14, 0x401c); + re_mdio_write(sc, 0x14, 0x241a); + re_mdio_write(sc, 0x13, 0xA01A); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xA006); + re_mdio_write(sc, 0x14, 0x0414); + re_mdio_write(sc, 0x13, 0xA004); + re_mdio_write(sc, 0x14, 0x074c); + re_mdio_write(sc, 0x13, 0xA002); + re_mdio_write(sc, 0x14, 0x0744); + re_mdio_write(sc, 0x13, 0xA000); + re_mdio_write(sc, 0x14, 0xf36b); + re_mdio_write(sc, 0x13, 0xB820); + re_mdio_write(sc, 0x14, 0x0210); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8323); + re_mdio_write(sc, 0x14, 0xaf83); + re_mdio_write(sc, 0x14, 0x2faf); + re_mdio_write(sc, 0x14, 0x853d); + re_mdio_write(sc, 0x14, 0xaf85); + re_mdio_write(sc, 0x14, 0x3daf); + re_mdio_write(sc, 0x14, 0x853d); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x45ad); + re_mdio_write(sc, 0x14, 0x2052); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7ae3); + re_mdio_write(sc, 0x14, 0x85fe); + re_mdio_write(sc, 0x14, 0x1a03); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x85f6); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7a1b); + re_mdio_write(sc, 0x14, 0x03e4); + re_mdio_write(sc, 0x14, 0x85fa); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7be3); + re_mdio_write(sc, 0x14, 0x85fe); + re_mdio_write(sc, 0x14, 0x1a03); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x85f7); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7b1b); + re_mdio_write(sc, 0x14, 0x03e4); + re_mdio_write(sc, 0x14, 0x85fb); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7ce3); + re_mdio_write(sc, 0x14, 0x85fe); + re_mdio_write(sc, 0x14, 0x1a03); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x85f8); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7c1b); + re_mdio_write(sc, 0x14, 0x03e4); + re_mdio_write(sc, 0x14, 0x85fc); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7de3); + re_mdio_write(sc, 0x14, 0x85fe); + re_mdio_write(sc, 0x14, 0x1a03); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x85f9); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7d1b); + re_mdio_write(sc, 0x14, 0x03e4); + re_mdio_write(sc, 0x14, 0x85fd); + re_mdio_write(sc, 0x14, 0xae50); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7ee3); + re_mdio_write(sc, 0x14, 0x85ff); + re_mdio_write(sc, 0x14, 0x1a03); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x85f6); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7e1b); + re_mdio_write(sc, 0x14, 0x03e4); + re_mdio_write(sc, 0x14, 0x85fa); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7fe3); + re_mdio_write(sc, 0x14, 0x85ff); + re_mdio_write(sc, 0x14, 0x1a03); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x85f7); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x7f1b); + re_mdio_write(sc, 0x14, 0x03e4); + re_mdio_write(sc, 0x14, 0x85fb); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x80e3); + re_mdio_write(sc, 0x14, 0x85ff); + re_mdio_write(sc, 0x14, 0x1a03); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x85f8); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x801b); + re_mdio_write(sc, 0x14, 0x03e4); + re_mdio_write(sc, 0x14, 0x85fc); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x81e3); + re_mdio_write(sc, 0x14, 0x85ff); + re_mdio_write(sc, 0x14, 0x1a03); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x85f9); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x811b); + re_mdio_write(sc, 0x14, 0x03e4); + re_mdio_write(sc, 0x14, 0x85fd); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xf6ad); + re_mdio_write(sc, 0x14, 0x2404); + re_mdio_write(sc, 0x14, 0xee85); + re_mdio_write(sc, 0x14, 0xf610); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xf7ad); + re_mdio_write(sc, 0x14, 0x2404); + re_mdio_write(sc, 0x14, 0xee85); + re_mdio_write(sc, 0x14, 0xf710); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xf8ad); + re_mdio_write(sc, 0x14, 0x2404); + re_mdio_write(sc, 0x14, 0xee85); + re_mdio_write(sc, 0x14, 0xf810); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xf9ad); + re_mdio_write(sc, 0x14, 0x2404); + re_mdio_write(sc, 0x14, 0xee85); + re_mdio_write(sc, 0x14, 0xf910); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xfaad); + re_mdio_write(sc, 0x14, 0x2704); + re_mdio_write(sc, 0x14, 0xee85); + re_mdio_write(sc, 0x14, 0xfa00); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xfbad); + re_mdio_write(sc, 0x14, 0x2704); + re_mdio_write(sc, 0x14, 0xee85); + re_mdio_write(sc, 0x14, 0xfb00); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xfcad); + re_mdio_write(sc, 0x14, 0x2704); + re_mdio_write(sc, 0x14, 0xee85); + re_mdio_write(sc, 0x14, 0xfc00); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xfdad); + re_mdio_write(sc, 0x14, 0x2704); + re_mdio_write(sc, 0x14, 0xee85); + re_mdio_write(sc, 0x14, 0xfd00); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x44ad); + re_mdio_write(sc, 0x14, 0x203f); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xf6e4); + re_mdio_write(sc, 0x14, 0x8288); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xfae4); + re_mdio_write(sc, 0x14, 0x8289); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x440d); + re_mdio_write(sc, 0x14, 0x0458); + re_mdio_write(sc, 0x14, 0x01bf); + re_mdio_write(sc, 0x14, 0x8264); + re_mdio_write(sc, 0x14, 0x0215); + re_mdio_write(sc, 0x14, 0x38bf); + re_mdio_write(sc, 0x14, 0x824e); + re_mdio_write(sc, 0x14, 0x0213); + re_mdio_write(sc, 0x14, 0x06a0); + re_mdio_write(sc, 0x14, 0x010f); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x44f6); + re_mdio_write(sc, 0x14, 0x20e4); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0x580f); + re_mdio_write(sc, 0x14, 0xe582); + re_mdio_write(sc, 0x14, 0x5aae); + re_mdio_write(sc, 0x14, 0x0ebf); + re_mdio_write(sc, 0x14, 0x825e); + re_mdio_write(sc, 0x14, 0xe382); + re_mdio_write(sc, 0x14, 0x44f7); + re_mdio_write(sc, 0x14, 0x3ce7); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0x0212); + re_mdio_write(sc, 0x14, 0xf0ad); + re_mdio_write(sc, 0x14, 0x213f); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xf7e4); + re_mdio_write(sc, 0x14, 0x8288); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xfbe4); + re_mdio_write(sc, 0x14, 0x8289); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x440d); + re_mdio_write(sc, 0x14, 0x0558); + re_mdio_write(sc, 0x14, 0x01bf); + re_mdio_write(sc, 0x14, 0x826b); + re_mdio_write(sc, 0x14, 0x0215); + re_mdio_write(sc, 0x14, 0x38bf); + re_mdio_write(sc, 0x14, 0x824f); + re_mdio_write(sc, 0x14, 0x0213); + re_mdio_write(sc, 0x14, 0x06a0); + re_mdio_write(sc, 0x14, 0x010f); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x44f6); + re_mdio_write(sc, 0x14, 0x21e4); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0x580f); + re_mdio_write(sc, 0x14, 0xe582); + re_mdio_write(sc, 0x14, 0x5bae); + re_mdio_write(sc, 0x14, 0x0ebf); + re_mdio_write(sc, 0x14, 0x8265); + re_mdio_write(sc, 0x14, 0xe382); + re_mdio_write(sc, 0x14, 0x44f7); + re_mdio_write(sc, 0x14, 0x3de7); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0x0212); + re_mdio_write(sc, 0x14, 0xf0ad); + re_mdio_write(sc, 0x14, 0x223f); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xf8e4); + re_mdio_write(sc, 0x14, 0x8288); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xfce4); + re_mdio_write(sc, 0x14, 0x8289); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x440d); + re_mdio_write(sc, 0x14, 0x0658); + re_mdio_write(sc, 0x14, 0x01bf); + re_mdio_write(sc, 0x14, 0x8272); + re_mdio_write(sc, 0x14, 0x0215); + re_mdio_write(sc, 0x14, 0x38bf); + re_mdio_write(sc, 0x14, 0x8250); + re_mdio_write(sc, 0x14, 0x0213); + re_mdio_write(sc, 0x14, 0x06a0); + re_mdio_write(sc, 0x14, 0x010f); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x44f6); + re_mdio_write(sc, 0x14, 0x22e4); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0x580f); + re_mdio_write(sc, 0x14, 0xe582); + re_mdio_write(sc, 0x14, 0x5cae); + re_mdio_write(sc, 0x14, 0x0ebf); + re_mdio_write(sc, 0x14, 0x826c); + re_mdio_write(sc, 0x14, 0xe382); + re_mdio_write(sc, 0x14, 0x44f7); + re_mdio_write(sc, 0x14, 0x3ee7); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0x0212); + re_mdio_write(sc, 0x14, 0xf0ad); + re_mdio_write(sc, 0x14, 0x233f); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xf9e4); + re_mdio_write(sc, 0x14, 0x8288); + re_mdio_write(sc, 0x14, 0xe085); + re_mdio_write(sc, 0x14, 0xfde4); + re_mdio_write(sc, 0x14, 0x8289); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x440d); + re_mdio_write(sc, 0x14, 0x0758); + re_mdio_write(sc, 0x14, 0x01bf); + re_mdio_write(sc, 0x14, 0x8279); + re_mdio_write(sc, 0x14, 0x0215); + re_mdio_write(sc, 0x14, 0x38bf); + re_mdio_write(sc, 0x14, 0x8251); + re_mdio_write(sc, 0x14, 0x0213); + re_mdio_write(sc, 0x14, 0x06a0); + re_mdio_write(sc, 0x14, 0x010f); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x44f6); + re_mdio_write(sc, 0x14, 0x23e4); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0x580f); + re_mdio_write(sc, 0x14, 0xe582); + re_mdio_write(sc, 0x14, 0x5dae); + re_mdio_write(sc, 0x14, 0x0ebf); + re_mdio_write(sc, 0x14, 0x8273); + re_mdio_write(sc, 0x14, 0xe382); + re_mdio_write(sc, 0x14, 0x44f7); + re_mdio_write(sc, 0x14, 0x3fe7); + re_mdio_write(sc, 0x14, 0x8244); + re_mdio_write(sc, 0x14, 0x0212); + re_mdio_write(sc, 0x14, 0xf0ee); + re_mdio_write(sc, 0x14, 0x8288); + re_mdio_write(sc, 0x14, 0x10ee); + re_mdio_write(sc, 0x14, 0x8289); + re_mdio_write(sc, 0x14, 0x00af); + re_mdio_write(sc, 0x14, 0x14aa); + re_mdio_write(sc, 0x13, 0xb818); + re_mdio_write(sc, 0x14, 0x13cf); + re_mdio_write(sc, 0x13, 0xb81a); + re_mdio_write(sc, 0x14, 0xfffd); + re_mdio_write(sc, 0x13, 0xb81c); + re_mdio_write(sc, 0x14, 0xfffd); + re_mdio_write(sc, 0x13, 0xb81e); + re_mdio_write(sc, 0x14, 0xfffd); + re_mdio_write(sc, 0x13, 0xb832); + re_mdio_write(sc, 0x14, 0x0001); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x0000); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x1f, 0x0B82); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8028); + re_mdio_write(sc, 0x14, 0x0000); -static void -re_release_phy_mcu_patch_key_lock(struct re_softc* sc) -{ - switch (sc->re_type) { - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - ClearEthPhyOcpBit(sc, 0xB82E, BIT_0); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8024); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - break; - default: - break; - } + re_clear_phy_mcu_patch_request(sc); + if (sc->RequiredSecLanDonglePatch) { + re_mdio_write(sc, 0x1F, 0x0A43); + PhyRegValue = re_mdio_read(sc, 0x11); + PhyRegValue &= ~(BIT_6); + re_mdio_write(sc, 0x11, PhyRegValue); + } } -bool -re_set_phy_mcu_patch_request(struct re_softc* sc) -{ - u_int16_t PhyRegValue; - u_int16_t WaitCount = 0; - bool bSuccess = TRUE; - - switch (sc->re_type) { - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - MP_WritePhyUshort(sc, 0x1f, 0x0B82); - SetEthPhyBit(sc, 0x10, BIT_4); - - MP_WritePhyUshort(sc, 0x1f, 0x0B80); - WaitCount = 0; - do { - PhyRegValue = MP_ReadPhyUshort(sc, 0x10); - DELAY(50); - DELAY(50); - WaitCount++; - } while (!(PhyRegValue & BIT_6) && (WaitCount < 1000)); +static void re_set_phy_mcu_8168h_3(struct re_softc *sc) +{ + u_int16_t PhyRegValue; - if (!(PhyRegValue & BIT_6) && (WaitCount == 1000)) bSuccess = FALSE; + re_set_phy_mcu_patch_request(sc); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - break; - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - SetEthPhyOcpBit(sc, 0xB820, BIT_4); - - WaitCount = 0; - do { - PhyRegValue = MP_RealReadPhyOcpRegWord(sc, 0xB800); - DELAY(50); - DELAY(50); - WaitCount++; - } while (!(PhyRegValue & BIT_6) && (WaitCount < 1000)); - if (!(PhyRegValue & BIT_6) && (WaitCount == 1000)) bSuccess = FALSE; + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8042); + re_mdio_write(sc, 0x14, 0x3800); + re_mdio_write(sc, 0x13, 0xB82E); + re_mdio_write(sc, 0x14, 0x0001); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0xB820); + re_mdio_write(sc, 0x14, 0x0090); + re_mdio_write(sc, 0x13, 0xA016); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xA012); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xA014); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x8010); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x8014); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x8022); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x8022); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x8022); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x8022); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x8022); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x8022); + re_mdio_write(sc, 0x14, 0x2b5d); + re_mdio_write(sc, 0x14, 0x0c68); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x0b3c); + re_mdio_write(sc, 0x14, 0xc2bb); + re_mdio_write(sc, 0x14, 0xd500); + re_mdio_write(sc, 0x14, 0xc426); + re_mdio_write(sc, 0x14, 0xd01d); + re_mdio_write(sc, 0x14, 0xd1c3); + re_mdio_write(sc, 0x14, 0x401c); + re_mdio_write(sc, 0x14, 0xd501); + re_mdio_write(sc, 0x14, 0xc2b3); + re_mdio_write(sc, 0x14, 0xd500); + re_mdio_write(sc, 0x14, 0xd00b); + re_mdio_write(sc, 0x14, 0xd1c3); + re_mdio_write(sc, 0x14, 0x401c); + re_mdio_write(sc, 0x14, 0x1800); + re_mdio_write(sc, 0x14, 0x0478); + re_mdio_write(sc, 0x13, 0xA026); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xA024); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xA022); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xA020); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xA006); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xA004); + re_mdio_write(sc, 0x14, 0x0fff); + re_mdio_write(sc, 0x13, 0xA002); + re_mdio_write(sc, 0x14, 0x0472); + re_mdio_write(sc, 0x13, 0xA000); + re_mdio_write(sc, 0x14, 0x0b3a); + re_mdio_write(sc, 0x13, 0xA008); + re_mdio_write(sc, 0x14, 0x0300); + re_mdio_write(sc, 0x13, 0xB820); + re_mdio_write(sc, 0x14, 0x0010); + + + re_mdio_write(sc, 0x13, 0x83f3); + re_mdio_write(sc, 0x14, 0xaf84); + re_mdio_write(sc, 0x14, 0x0baf); + re_mdio_write(sc, 0x14, 0x8466); + re_mdio_write(sc, 0x14, 0xaf84); + re_mdio_write(sc, 0x14, 0xcdaf); + re_mdio_write(sc, 0x14, 0x873c); + re_mdio_write(sc, 0x14, 0xaf87); + re_mdio_write(sc, 0x14, 0x3faf); + re_mdio_write(sc, 0x14, 0x8760); + re_mdio_write(sc, 0x14, 0xaf87); + re_mdio_write(sc, 0x14, 0x60af); + re_mdio_write(sc, 0x14, 0x8760); + re_mdio_write(sc, 0x14, 0xef79); + re_mdio_write(sc, 0x14, 0xfb89); + re_mdio_write(sc, 0x14, 0xe987); + re_mdio_write(sc, 0x14, 0xffd7); + re_mdio_write(sc, 0x14, 0x0017); + re_mdio_write(sc, 0x14, 0xd400); + re_mdio_write(sc, 0x14, 0x051c); + re_mdio_write(sc, 0x14, 0x421a); + re_mdio_write(sc, 0x14, 0x741b); + re_mdio_write(sc, 0x14, 0x97e9); + re_mdio_write(sc, 0x14, 0x87fe); + re_mdio_write(sc, 0x14, 0xffef); + re_mdio_write(sc, 0x14, 0x97e0); + re_mdio_write(sc, 0x14, 0x82aa); + re_mdio_write(sc, 0x14, 0xa000); + re_mdio_write(sc, 0x14, 0x08ef); + re_mdio_write(sc, 0x14, 0x46dc); + re_mdio_write(sc, 0x14, 0x19dd); + re_mdio_write(sc, 0x14, 0xaf1a); + re_mdio_write(sc, 0x14, 0x37a0); + re_mdio_write(sc, 0x14, 0x012d); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0xa7ac); + re_mdio_write(sc, 0x14, 0x2013); + re_mdio_write(sc, 0x14, 0xe087); + re_mdio_write(sc, 0x14, 0xffe1); + re_mdio_write(sc, 0x14, 0x87fe); + re_mdio_write(sc, 0x14, 0xac27); + re_mdio_write(sc, 0x14, 0x05a1); + re_mdio_write(sc, 0x14, 0x0807); + re_mdio_write(sc, 0x14, 0xae0f); + re_mdio_write(sc, 0x14, 0xa107); + re_mdio_write(sc, 0x14, 0x02ae); + re_mdio_write(sc, 0x14, 0x0aef); + re_mdio_write(sc, 0x14, 0x4619); + re_mdio_write(sc, 0x14, 0x19dc); + re_mdio_write(sc, 0x14, 0x19dd); + re_mdio_write(sc, 0x14, 0xaf1a); + re_mdio_write(sc, 0x14, 0x37d8); + re_mdio_write(sc, 0x14, 0x19d9); + re_mdio_write(sc, 0x14, 0x19dc); + re_mdio_write(sc, 0x14, 0x19dd); + re_mdio_write(sc, 0x14, 0xaf1a); + re_mdio_write(sc, 0x14, 0x3719); + re_mdio_write(sc, 0x14, 0x19ae); + re_mdio_write(sc, 0x14, 0xcfbf); + re_mdio_write(sc, 0x14, 0x878a); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdc3c); + re_mdio_write(sc, 0x14, 0x0005); + re_mdio_write(sc, 0x14, 0xaaf5); + re_mdio_write(sc, 0x14, 0x0249); + re_mdio_write(sc, 0x14, 0xcaef); + re_mdio_write(sc, 0x14, 0x67d7); + re_mdio_write(sc, 0x14, 0x0014); + re_mdio_write(sc, 0x14, 0x0249); + re_mdio_write(sc, 0x14, 0xe5ad); + re_mdio_write(sc, 0x14, 0x50f7); + re_mdio_write(sc, 0x14, 0xd400); + re_mdio_write(sc, 0x14, 0x01bf); + re_mdio_write(sc, 0x14, 0x46a7); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0x98bf); + re_mdio_write(sc, 0x14, 0x465c); + re_mdio_write(sc, 0x14, 0x024a); + re_mdio_write(sc, 0x14, 0x5fd4); + re_mdio_write(sc, 0x14, 0x0003); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x9c02); + re_mdio_write(sc, 0x14, 0x4498); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x9902); + re_mdio_write(sc, 0x14, 0x4a5f); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x8d02); + re_mdio_write(sc, 0x14, 0x4a5f); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x9002); + re_mdio_write(sc, 0x14, 0x44dc); + re_mdio_write(sc, 0x14, 0xad28); + re_mdio_write(sc, 0x14, 0xf7bf); + re_mdio_write(sc, 0x14, 0x8796); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdcad); + re_mdio_write(sc, 0x14, 0x28f7); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x9302); + re_mdio_write(sc, 0x14, 0x4a5f); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x9302); + re_mdio_write(sc, 0x14, 0x4a56); + re_mdio_write(sc, 0x14, 0xbf46); + re_mdio_write(sc, 0x14, 0x5c02); + re_mdio_write(sc, 0x14, 0x4a56); + re_mdio_write(sc, 0x14, 0xbf45); + re_mdio_write(sc, 0x14, 0x21af); + re_mdio_write(sc, 0x14, 0x020e); + re_mdio_write(sc, 0x14, 0xee82); + re_mdio_write(sc, 0x14, 0x5000); + re_mdio_write(sc, 0x14, 0x0284); + re_mdio_write(sc, 0x14, 0xdd02); + re_mdio_write(sc, 0x14, 0x8521); + re_mdio_write(sc, 0x14, 0x0285); + re_mdio_write(sc, 0x14, 0x36af); + re_mdio_write(sc, 0x14, 0x03d2); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xfafb); + re_mdio_write(sc, 0x14, 0xef59); + re_mdio_write(sc, 0x14, 0xbf45); + re_mdio_write(sc, 0x14, 0x3002); + re_mdio_write(sc, 0x14, 0x44dc); + re_mdio_write(sc, 0x14, 0x3c00); + re_mdio_write(sc, 0x14, 0x03aa); + re_mdio_write(sc, 0x14, 0x2cbf); + re_mdio_write(sc, 0x14, 0x8790); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdcad); + re_mdio_write(sc, 0x14, 0x2823); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x9602); + re_mdio_write(sc, 0x14, 0x44dc); + re_mdio_write(sc, 0x14, 0xad28); + re_mdio_write(sc, 0x14, 0x1a02); + re_mdio_write(sc, 0x14, 0x49ca); + re_mdio_write(sc, 0x14, 0xef67); + re_mdio_write(sc, 0x14, 0xd700); + re_mdio_write(sc, 0x14, 0x0202); + re_mdio_write(sc, 0x14, 0x49e5); + re_mdio_write(sc, 0x14, 0xad50); + re_mdio_write(sc, 0x14, 0xf7bf); + re_mdio_write(sc, 0x14, 0x8793); + re_mdio_write(sc, 0x14, 0x024a); + re_mdio_write(sc, 0x14, 0x5fbf); + re_mdio_write(sc, 0x14, 0x8793); + re_mdio_write(sc, 0x14, 0x024a); + re_mdio_write(sc, 0x14, 0x56ef); + re_mdio_write(sc, 0x14, 0x95ff); + re_mdio_write(sc, 0x14, 0xfefd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xe080); + re_mdio_write(sc, 0x14, 0x15ad); + re_mdio_write(sc, 0x14, 0x2406); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x8702); + re_mdio_write(sc, 0x14, 0x4a56); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefc); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xe087); + re_mdio_write(sc, 0x14, 0xf9e1); + re_mdio_write(sc, 0x14, 0x87fa); + re_mdio_write(sc, 0x14, 0x1b10); + re_mdio_write(sc, 0x14, 0x9f1e); + re_mdio_write(sc, 0x14, 0xee87); + re_mdio_write(sc, 0x14, 0xf900); + re_mdio_write(sc, 0x14, 0xe080); + re_mdio_write(sc, 0x14, 0x15ac); + re_mdio_write(sc, 0x14, 0x2606); + re_mdio_write(sc, 0x14, 0xee87); + re_mdio_write(sc, 0x14, 0xf700); + re_mdio_write(sc, 0x14, 0xae12); + re_mdio_write(sc, 0x14, 0x0286); + re_mdio_write(sc, 0x14, 0x9d02); + re_mdio_write(sc, 0x14, 0x8565); + re_mdio_write(sc, 0x14, 0x0285); + re_mdio_write(sc, 0x14, 0x9d02); + re_mdio_write(sc, 0x14, 0x8660); + re_mdio_write(sc, 0x14, 0xae04); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x87f9); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69fa); + re_mdio_write(sc, 0x14, 0xbf45); + re_mdio_write(sc, 0x14, 0x3002); + re_mdio_write(sc, 0x14, 0x44dc); + re_mdio_write(sc, 0x14, 0xa103); + re_mdio_write(sc, 0x14, 0x22e0); + re_mdio_write(sc, 0x14, 0x87eb); + re_mdio_write(sc, 0x14, 0xe187); + re_mdio_write(sc, 0x14, 0xecef); + re_mdio_write(sc, 0x14, 0x64bf); + re_mdio_write(sc, 0x14, 0x876f); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdc1b); + re_mdio_write(sc, 0x14, 0x46aa); + re_mdio_write(sc, 0x14, 0x0abf); + re_mdio_write(sc, 0x14, 0x8772); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdc1b); + re_mdio_write(sc, 0x14, 0x46ab); + re_mdio_write(sc, 0x14, 0x06bf); + re_mdio_write(sc, 0x14, 0x876c); + re_mdio_write(sc, 0x14, 0x024a); + re_mdio_write(sc, 0x14, 0x5ffe); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xef59); + re_mdio_write(sc, 0x14, 0xf9bf); + re_mdio_write(sc, 0x14, 0x4530); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdca1); + re_mdio_write(sc, 0x14, 0x0310); + re_mdio_write(sc, 0x14, 0xe087); + re_mdio_write(sc, 0x14, 0xf7ac); + re_mdio_write(sc, 0x14, 0x2605); + re_mdio_write(sc, 0x14, 0x0285); + re_mdio_write(sc, 0x14, 0xc9ae); + re_mdio_write(sc, 0x14, 0x0d02); + re_mdio_write(sc, 0x14, 0x8613); + re_mdio_write(sc, 0x14, 0xae08); + re_mdio_write(sc, 0x14, 0xe287); + re_mdio_write(sc, 0x14, 0xf7f6); + re_mdio_write(sc, 0x14, 0x36e6); + re_mdio_write(sc, 0x14, 0x87f7); + re_mdio_write(sc, 0x14, 0xfdef); + re_mdio_write(sc, 0x14, 0x95fd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xfafb); + re_mdio_write(sc, 0x14, 0xef79); + re_mdio_write(sc, 0x14, 0xfbbf); + re_mdio_write(sc, 0x14, 0x876f); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdcef); + re_mdio_write(sc, 0x14, 0x64e2); + re_mdio_write(sc, 0x14, 0x87e9); + re_mdio_write(sc, 0x14, 0xe387); + re_mdio_write(sc, 0x14, 0xea1b); + re_mdio_write(sc, 0x14, 0x659e); + re_mdio_write(sc, 0x14, 0x10e4); + re_mdio_write(sc, 0x14, 0x87e9); + re_mdio_write(sc, 0x14, 0xe587); + re_mdio_write(sc, 0x14, 0xeae2); + re_mdio_write(sc, 0x14, 0x87f7); + re_mdio_write(sc, 0x14, 0xf636); + re_mdio_write(sc, 0x14, 0xe687); + re_mdio_write(sc, 0x14, 0xf7ae); + re_mdio_write(sc, 0x14, 0x19e2); + re_mdio_write(sc, 0x14, 0x87f7); + re_mdio_write(sc, 0x14, 0xf736); + re_mdio_write(sc, 0x14, 0xe687); + re_mdio_write(sc, 0x14, 0xf700); + re_mdio_write(sc, 0x14, 0x00ae); + re_mdio_write(sc, 0x14, 0x0200); + re_mdio_write(sc, 0x14, 0x0002); + re_mdio_write(sc, 0x14, 0x49ca); + re_mdio_write(sc, 0x14, 0xef57); + re_mdio_write(sc, 0x14, 0xe687); + re_mdio_write(sc, 0x14, 0xe7e7); + re_mdio_write(sc, 0x14, 0x87e8); + re_mdio_write(sc, 0x14, 0xffef); + re_mdio_write(sc, 0x14, 0x97ff); + re_mdio_write(sc, 0x14, 0xfefd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xfafb); + re_mdio_write(sc, 0x14, 0xef79); + re_mdio_write(sc, 0x14, 0xfbe2); + re_mdio_write(sc, 0x14, 0x87e7); + re_mdio_write(sc, 0x14, 0xe387); + re_mdio_write(sc, 0x14, 0xe8ef); + re_mdio_write(sc, 0x14, 0x65e2); + re_mdio_write(sc, 0x14, 0x87fb); + re_mdio_write(sc, 0x14, 0xe387); + re_mdio_write(sc, 0x14, 0xfcef); + re_mdio_write(sc, 0x14, 0x7502); + re_mdio_write(sc, 0x14, 0x49e5); + re_mdio_write(sc, 0x14, 0xac50); + re_mdio_write(sc, 0x14, 0x1abf); + re_mdio_write(sc, 0x14, 0x876f); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdcef); + re_mdio_write(sc, 0x14, 0x64e2); + re_mdio_write(sc, 0x14, 0x87e9); + re_mdio_write(sc, 0x14, 0xe387); + re_mdio_write(sc, 0x14, 0xea1b); + re_mdio_write(sc, 0x14, 0x659e); + re_mdio_write(sc, 0x14, 0x16e4); + re_mdio_write(sc, 0x14, 0x87e9); + re_mdio_write(sc, 0x14, 0xe587); + re_mdio_write(sc, 0x14, 0xeaae); + re_mdio_write(sc, 0x14, 0x06bf); + re_mdio_write(sc, 0x14, 0x876c); + re_mdio_write(sc, 0x14, 0x024a); + re_mdio_write(sc, 0x14, 0x5fe2); + re_mdio_write(sc, 0x14, 0x87f7); + re_mdio_write(sc, 0x14, 0xf636); + re_mdio_write(sc, 0x14, 0xe687); + re_mdio_write(sc, 0x14, 0xf7ff); + re_mdio_write(sc, 0x14, 0xef97); + re_mdio_write(sc, 0x14, 0xfffe); + re_mdio_write(sc, 0x14, 0xfdfc); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xf9fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x6602); + re_mdio_write(sc, 0x14, 0x44dc); + re_mdio_write(sc, 0x14, 0xad28); + re_mdio_write(sc, 0x14, 0x29bf); + re_mdio_write(sc, 0x14, 0x8763); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdcef); + re_mdio_write(sc, 0x14, 0x54bf); + re_mdio_write(sc, 0x14, 0x8760); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdcac); + re_mdio_write(sc, 0x14, 0x290d); + re_mdio_write(sc, 0x14, 0xac28); + re_mdio_write(sc, 0x14, 0x05a3); + re_mdio_write(sc, 0x14, 0x020c); + re_mdio_write(sc, 0x14, 0xae10); + re_mdio_write(sc, 0x14, 0xa303); + re_mdio_write(sc, 0x14, 0x07ae); + re_mdio_write(sc, 0x14, 0x0ba3); + re_mdio_write(sc, 0x14, 0x0402); + re_mdio_write(sc, 0x14, 0xae06); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x6c02); + re_mdio_write(sc, 0x14, 0x4a5f); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xfafb); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xfae0); + re_mdio_write(sc, 0x14, 0x8015); + re_mdio_write(sc, 0x14, 0xad25); + re_mdio_write(sc, 0x14, 0x41d2); + re_mdio_write(sc, 0x14, 0x0002); + re_mdio_write(sc, 0x14, 0x86f3); + re_mdio_write(sc, 0x14, 0xe087); + re_mdio_write(sc, 0x14, 0xebe1); + re_mdio_write(sc, 0x14, 0x87ec); + re_mdio_write(sc, 0x14, 0x1b46); + re_mdio_write(sc, 0x14, 0xab26); + re_mdio_write(sc, 0x14, 0xd40b); + re_mdio_write(sc, 0x14, 0xff1b); + re_mdio_write(sc, 0x14, 0x46aa); + re_mdio_write(sc, 0x14, 0x1fac); + re_mdio_write(sc, 0x14, 0x3204); + re_mdio_write(sc, 0x14, 0xef32); + re_mdio_write(sc, 0x14, 0xae02); + re_mdio_write(sc, 0x14, 0xd304); + re_mdio_write(sc, 0x14, 0x0c31); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0xeb1a); + re_mdio_write(sc, 0x14, 0x93d8); + re_mdio_write(sc, 0x14, 0x19d9); + re_mdio_write(sc, 0x14, 0x1b46); + re_mdio_write(sc, 0x14, 0xab0e); + re_mdio_write(sc, 0x14, 0x19d8); + re_mdio_write(sc, 0x14, 0x19d9); + re_mdio_write(sc, 0x14, 0x1b46); + re_mdio_write(sc, 0x14, 0xaa06); + re_mdio_write(sc, 0x14, 0x12a2); + re_mdio_write(sc, 0x14, 0x08c9); + re_mdio_write(sc, 0x14, 0xae06); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x6902); + re_mdio_write(sc, 0x14, 0x4a5f); + re_mdio_write(sc, 0x14, 0xfeef); + re_mdio_write(sc, 0x14, 0x96ff); + re_mdio_write(sc, 0x14, 0xfefd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8fb); + re_mdio_write(sc, 0x14, 0xef79); + re_mdio_write(sc, 0x14, 0xa200); + re_mdio_write(sc, 0x14, 0x05bf); + re_mdio_write(sc, 0x14, 0x876f); + re_mdio_write(sc, 0x14, 0xae33); + re_mdio_write(sc, 0x14, 0xa201); + re_mdio_write(sc, 0x14, 0x05bf); + re_mdio_write(sc, 0x14, 0x8772); + re_mdio_write(sc, 0x14, 0xae2b); + re_mdio_write(sc, 0x14, 0xa202); + re_mdio_write(sc, 0x14, 0x05bf); + re_mdio_write(sc, 0x14, 0x8775); + re_mdio_write(sc, 0x14, 0xae23); + re_mdio_write(sc, 0x14, 0xa203); + re_mdio_write(sc, 0x14, 0x05bf); + re_mdio_write(sc, 0x14, 0x8778); + re_mdio_write(sc, 0x14, 0xae1b); + re_mdio_write(sc, 0x14, 0xa204); + re_mdio_write(sc, 0x14, 0x05bf); + re_mdio_write(sc, 0x14, 0x877b); + re_mdio_write(sc, 0x14, 0xae13); + re_mdio_write(sc, 0x14, 0xa205); + re_mdio_write(sc, 0x14, 0x05bf); + re_mdio_write(sc, 0x14, 0x877e); + re_mdio_write(sc, 0x14, 0xae0b); + re_mdio_write(sc, 0x14, 0xa206); + re_mdio_write(sc, 0x14, 0x05bf); + re_mdio_write(sc, 0x14, 0x8781); + re_mdio_write(sc, 0x14, 0xae03); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x8402); + re_mdio_write(sc, 0x14, 0x44dc); + re_mdio_write(sc, 0x14, 0xef64); + re_mdio_write(sc, 0x14, 0xef97); + re_mdio_write(sc, 0x14, 0xfffc); + re_mdio_write(sc, 0x14, 0x04af); + re_mdio_write(sc, 0x14, 0x00ed); + re_mdio_write(sc, 0x14, 0x0220); + re_mdio_write(sc, 0x14, 0xa5f8); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69bf); + re_mdio_write(sc, 0x14, 0x4554); + re_mdio_write(sc, 0x14, 0x0244); + re_mdio_write(sc, 0x14, 0xdce0); + re_mdio_write(sc, 0x14, 0x87ff); + re_mdio_write(sc, 0x14, 0x1f01); + re_mdio_write(sc, 0x14, 0x9e06); + re_mdio_write(sc, 0x14, 0xe587); + re_mdio_write(sc, 0x14, 0xff02); + re_mdio_write(sc, 0x14, 0x4b05); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefc); + re_mdio_write(sc, 0x14, 0xaf03); + re_mdio_write(sc, 0x14, 0x8c54); + re_mdio_write(sc, 0x14, 0xa434); + re_mdio_write(sc, 0x14, 0x74a6); + re_mdio_write(sc, 0x14, 0x0022); + re_mdio_write(sc, 0x14, 0xa434); + re_mdio_write(sc, 0x14, 0x11b8); + re_mdio_write(sc, 0x14, 0x4222); + re_mdio_write(sc, 0x14, 0xb842); + re_mdio_write(sc, 0x14, 0xf0a2); + re_mdio_write(sc, 0x14, 0x00f0); + re_mdio_write(sc, 0x14, 0xa202); + re_mdio_write(sc, 0x14, 0xf0a2); + re_mdio_write(sc, 0x14, 0x04f0); + re_mdio_write(sc, 0x14, 0xa206); + re_mdio_write(sc, 0x14, 0xf0a2); + re_mdio_write(sc, 0x14, 0x08f0); + re_mdio_write(sc, 0x14, 0xa20a); + re_mdio_write(sc, 0x14, 0xf0a2); + re_mdio_write(sc, 0x14, 0x0cf0); + re_mdio_write(sc, 0x14, 0xa20e); + re_mdio_write(sc, 0x14, 0x55b8); + re_mdio_write(sc, 0x14, 0x20d9); + re_mdio_write(sc, 0x14, 0xc608); + re_mdio_write(sc, 0x14, 0xaac4); + re_mdio_write(sc, 0x14, 0x3000); + re_mdio_write(sc, 0x14, 0xc614); + re_mdio_write(sc, 0x14, 0x33c4); + re_mdio_write(sc, 0x14, 0x1a88); + re_mdio_write(sc, 0x14, 0xc42e); + re_mdio_write(sc, 0x14, 0x22c4); + re_mdio_write(sc, 0x14, 0x2e54); + re_mdio_write(sc, 0x14, 0xc41a); + re_mdio_write(sc, 0x13, 0xb818); + re_mdio_write(sc, 0x14, 0x1a01); + re_mdio_write(sc, 0x13, 0xb81a); + re_mdio_write(sc, 0x14, 0x020b); + re_mdio_write(sc, 0x13, 0xb81c); + re_mdio_write(sc, 0x14, 0x03ce); + re_mdio_write(sc, 0x13, 0xb81e); + re_mdio_write(sc, 0x14, 0x00e7); + re_mdio_write(sc, 0x13, 0xb846); + re_mdio_write(sc, 0x14, 0x0389); + re_mdio_write(sc, 0x13, 0xb848); + re_mdio_write(sc, 0x14, 0xffff); + re_mdio_write(sc, 0x13, 0xb84a); + re_mdio_write(sc, 0x14, 0xffff); + re_mdio_write(sc, 0x13, 0xb84c); + re_mdio_write(sc, 0x14, 0xffff); + re_mdio_write(sc, 0x13, 0xb832); + re_mdio_write(sc, 0x14, 0x001f); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x0000); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x1f, 0x0B82); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1f, 0x0A43); + re_mdio_write(sc, 0x13, 0x8042); + re_mdio_write(sc, 0x14, 0x0000); - break; - } + re_clear_phy_mcu_patch_request(sc); - return bSuccess; + if (sc->RequiredSecLanDonglePatch) { + re_mdio_write(sc, 0x1F, 0x0A43); + PhyRegValue = re_mdio_read(sc, 0x11); + PhyRegValue &= ~(BIT_6); + re_mdio_write(sc, 0x11, PhyRegValue); + } } -bool -re_clear_phy_mcu_patch_request(struct re_softc* sc) -{ - u_int16_t PhyRegValue; - u_int16_t WaitCount = 0; - bool bSuccess = TRUE; - - switch (sc->re_type) { - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - MP_WritePhyUshort(sc, 0x1f, 0x0B82); - ClearEthPhyBit(sc, 0x10, BIT_4); - - MP_WritePhyUshort(sc, 0x1f, 0x0B80); - WaitCount = 0; - do { - PhyRegValue = MP_ReadPhyUshort(sc, 0x10); - DELAY(50); - DELAY(50); - WaitCount++; - } while ((PhyRegValue & BIT_6) && (WaitCount < 1000)); - - if ((PhyRegValue & BIT_6) && (WaitCount == 1000)) bSuccess = FALSE; - - MP_WritePhyUshort(sc, 0x1f, 0x0000); - break; - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - ClearEthPhyOcpBit(sc, 0xB820, BIT_4); - - WaitCount = 0; - do { - PhyRegValue = MP_RealReadPhyOcpRegWord(sc, 0xB800); - DELAY(50); - DELAY(50); - WaitCount++; - } while ((PhyRegValue & BIT_6) && (WaitCount < 1000)); +static void re_set_phy_mcu_8168ep_1(struct re_softc *sc) +{ + u_int16_t PhyRegValue; - if ((PhyRegValue & BIT_6) && (WaitCount == 1000)) bSuccess = FALSE; + re_set_phy_mcu_patch_request(sc); - break; - } + re_mdio_write(sc,0x1f, 0x0A43); + re_mdio_write(sc,0x13, 0x8146); + re_mdio_write(sc,0x14, 0x2700); + re_mdio_write(sc,0x13, 0xB82E); + re_mdio_write(sc,0x14, 0x0001); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0xb820); + re_mdio_write(sc, 0x14, 0x0090); + re_mdio_write(sc, 0x13, 0xa012); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xa014); + re_mdio_write(sc, 0x14, 0x2c04); + re_mdio_write(sc, 0x14, 0x2c1b); + re_mdio_write(sc, 0x14, 0x2c65); + re_mdio_write(sc, 0x14, 0x2d14); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x4092); + re_mdio_write(sc, 0x14, 0xba04); + re_mdio_write(sc, 0x14, 0x3084); + re_mdio_write(sc, 0x14, 0x1d04); + re_mdio_write(sc, 0x14, 0x1cdd); + re_mdio_write(sc, 0x14, 0x1ce8); + re_mdio_write(sc, 0x14, 0xaeff); + re_mdio_write(sc, 0x14, 0xaf02); + re_mdio_write(sc, 0x14, 0x8f02); + re_mdio_write(sc, 0x14, 0x8eff); + re_mdio_write(sc, 0x14, 0xce01); + re_mdio_write(sc, 0x14, 0xe070); + re_mdio_write(sc, 0x14, 0x0f00); + re_mdio_write(sc, 0x14, 0xaf01); + re_mdio_write(sc, 0x14, 0x8f01); + re_mdio_write(sc, 0x14, 0xd712); + re_mdio_write(sc, 0x14, 0x5fe8); + re_mdio_write(sc, 0x14, 0xaf02); + re_mdio_write(sc, 0x14, 0x8f02); + re_mdio_write(sc, 0x14, 0x8e01); + re_mdio_write(sc, 0x14, 0x1cf2); + re_mdio_write(sc, 0x14, 0x2825); + re_mdio_write(sc, 0x14, 0xd05a); + re_mdio_write(sc, 0x14, 0xd19a); + re_mdio_write(sc, 0x14, 0xd709); + re_mdio_write(sc, 0x14, 0x608f); + re_mdio_write(sc, 0x14, 0xd06b); + re_mdio_write(sc, 0x14, 0xd18a); + re_mdio_write(sc, 0x14, 0x2c25); + re_mdio_write(sc, 0x14, 0xd0be); + re_mdio_write(sc, 0x14, 0xd188); + re_mdio_write(sc, 0x14, 0x2c25); + re_mdio_write(sc, 0x14, 0xd708); + re_mdio_write(sc, 0x14, 0x4072); + re_mdio_write(sc, 0x14, 0xc104); + re_mdio_write(sc, 0x14, 0x2c37); + re_mdio_write(sc, 0x14, 0x4076); + re_mdio_write(sc, 0x14, 0xc110); + re_mdio_write(sc, 0x14, 0x2c37); + re_mdio_write(sc, 0x14, 0x4071); + re_mdio_write(sc, 0x14, 0xc102); + re_mdio_write(sc, 0x14, 0x2c37); + re_mdio_write(sc, 0x14, 0x4070); + re_mdio_write(sc, 0x14, 0xc101); + re_mdio_write(sc, 0x14, 0x2c37); + re_mdio_write(sc, 0x14, 0x1786); + re_mdio_write(sc, 0x14, 0xd709); + re_mdio_write(sc, 0x14, 0x3390); + re_mdio_write(sc, 0x14, 0x5c32); + re_mdio_write(sc, 0x14, 0x2c47); + re_mdio_write(sc, 0x14, 0x1786); + re_mdio_write(sc, 0x14, 0xd708); + re_mdio_write(sc, 0x14, 0x6193); + re_mdio_write(sc, 0x14, 0xd709); + re_mdio_write(sc, 0x14, 0x5f9d); + re_mdio_write(sc, 0x14, 0x408b); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x6042); + re_mdio_write(sc, 0x14, 0xb401); + re_mdio_write(sc, 0x14, 0x1786); + re_mdio_write(sc, 0x14, 0xd708); + re_mdio_write(sc, 0x14, 0x6073); + re_mdio_write(sc, 0x14, 0x5fbc); + re_mdio_write(sc, 0x14, 0x2c46); + re_mdio_write(sc, 0x14, 0x26fe); + re_mdio_write(sc, 0x14, 0xb280); + re_mdio_write(sc, 0x14, 0xa841); + re_mdio_write(sc, 0x14, 0x94e0); + re_mdio_write(sc, 0x14, 0x8710); + re_mdio_write(sc, 0x14, 0xd709); + re_mdio_write(sc, 0x14, 0x42ec); + re_mdio_write(sc, 0x14, 0x606d); + re_mdio_write(sc, 0x14, 0xd207); + re_mdio_write(sc, 0x14, 0x2c50); + re_mdio_write(sc, 0x14, 0xd203); + re_mdio_write(sc, 0x14, 0x33ff); + re_mdio_write(sc, 0x14, 0x5647); + re_mdio_write(sc, 0x14, 0x3275); + re_mdio_write(sc, 0x14, 0x7c57); + re_mdio_write(sc, 0x14, 0xb240); + re_mdio_write(sc, 0x14, 0xb402); + re_mdio_write(sc, 0x14, 0x2647); + re_mdio_write(sc, 0x14, 0x6096); + re_mdio_write(sc, 0x14, 0xb240); + re_mdio_write(sc, 0x14, 0xb406); + re_mdio_write(sc, 0x14, 0x2647); + re_mdio_write(sc, 0x14, 0x31d7); + re_mdio_write(sc, 0x14, 0x7c60); + re_mdio_write(sc, 0x14, 0xb240); + re_mdio_write(sc, 0x14, 0xb40e); + re_mdio_write(sc, 0x14, 0x2647); + re_mdio_write(sc, 0x14, 0xb410); + re_mdio_write(sc, 0x14, 0x8802); + re_mdio_write(sc, 0x14, 0xb240); + re_mdio_write(sc, 0x14, 0x940e); + re_mdio_write(sc, 0x14, 0x2647); + re_mdio_write(sc, 0x14, 0xba04); + re_mdio_write(sc, 0x14, 0x1cdd); + re_mdio_write(sc, 0x14, 0xa902); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x4045); + re_mdio_write(sc, 0x14, 0xa980); + re_mdio_write(sc, 0x14, 0x3003); + re_mdio_write(sc, 0x14, 0x5a19); + re_mdio_write(sc, 0x14, 0xa540); + re_mdio_write(sc, 0x14, 0xa601); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4043); + re_mdio_write(sc, 0x14, 0xa910); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x60a0); + re_mdio_write(sc, 0x14, 0xca33); + re_mdio_write(sc, 0x14, 0xcb33); + re_mdio_write(sc, 0x14, 0xa941); + re_mdio_write(sc, 0x14, 0x2c7b); + re_mdio_write(sc, 0x14, 0xcaff); + re_mdio_write(sc, 0x14, 0xcbff); + re_mdio_write(sc, 0x14, 0xa921); + re_mdio_write(sc, 0x14, 0xce02); + re_mdio_write(sc, 0x14, 0xe070); + re_mdio_write(sc, 0x14, 0x0f10); + re_mdio_write(sc, 0x14, 0xaf01); + re_mdio_write(sc, 0x14, 0x8f01); + re_mdio_write(sc, 0x14, 0x1791); + re_mdio_write(sc, 0x14, 0x8e02); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x41a3); + re_mdio_write(sc, 0x14, 0xa140); + re_mdio_write(sc, 0x14, 0xa220); + re_mdio_write(sc, 0x14, 0xce10); + re_mdio_write(sc, 0x14, 0xe070); + re_mdio_write(sc, 0x14, 0x0f40); + re_mdio_write(sc, 0x14, 0xaf01); + re_mdio_write(sc, 0x14, 0x8f01); + re_mdio_write(sc, 0x14, 0x1791); + re_mdio_write(sc, 0x14, 0x8e10); + re_mdio_write(sc, 0x14, 0x8140); + re_mdio_write(sc, 0x14, 0x8220); + re_mdio_write(sc, 0x14, 0xa301); + re_mdio_write(sc, 0x14, 0x17b2); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x609c); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cdb); + re_mdio_write(sc, 0x14, 0x1cf0); + re_mdio_write(sc, 0x14, 0xce04); + re_mdio_write(sc, 0x14, 0xe070); + re_mdio_write(sc, 0x14, 0x0f20); + re_mdio_write(sc, 0x14, 0xaf01); + re_mdio_write(sc, 0x14, 0x8f01); + re_mdio_write(sc, 0x14, 0x1791); + re_mdio_write(sc, 0x14, 0x8e04); + re_mdio_write(sc, 0x14, 0x6044); + re_mdio_write(sc, 0x14, 0x2cdb); + re_mdio_write(sc, 0x14, 0xa520); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4043); + re_mdio_write(sc, 0x14, 0x2cc8); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0501); + re_mdio_write(sc, 0x14, 0x1cf6); + re_mdio_write(sc, 0x14, 0xb801); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x4060); + re_mdio_write(sc, 0x14, 0x7fc4); + re_mdio_write(sc, 0x14, 0x2cdb); + re_mdio_write(sc, 0x14, 0x1cfc); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0502); + re_mdio_write(sc, 0x14, 0x1cf6); + re_mdio_write(sc, 0x14, 0xb802); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x4061); + re_mdio_write(sc, 0x14, 0x7fc4); + re_mdio_write(sc, 0x14, 0x2cdb); + re_mdio_write(sc, 0x14, 0x1cfc); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0504); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6099); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cdb); + re_mdio_write(sc, 0x14, 0xc17f); + re_mdio_write(sc, 0x14, 0xc200); + re_mdio_write(sc, 0x14, 0xc43f); + re_mdio_write(sc, 0x14, 0xcc03); + re_mdio_write(sc, 0x14, 0xa701); + re_mdio_write(sc, 0x14, 0xa510); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4018); + re_mdio_write(sc, 0x14, 0x9910); + re_mdio_write(sc, 0x14, 0x8510); + re_mdio_write(sc, 0x14, 0x28a1); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0504); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6099); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cdb); + re_mdio_write(sc, 0x14, 0xa608); + re_mdio_write(sc, 0x14, 0xc17d); + re_mdio_write(sc, 0x14, 0xc200); + re_mdio_write(sc, 0x14, 0xc43f); + re_mdio_write(sc, 0x14, 0xcc03); + re_mdio_write(sc, 0x14, 0xa701); + re_mdio_write(sc, 0x14, 0xa510); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4018); + re_mdio_write(sc, 0x14, 0x9910); + re_mdio_write(sc, 0x14, 0x8510); + re_mdio_write(sc, 0x14, 0x298e); + re_mdio_write(sc, 0x14, 0x17bd); + re_mdio_write(sc, 0x14, 0x2815); + re_mdio_write(sc, 0x14, 0xc000); + re_mdio_write(sc, 0x14, 0xc100); + re_mdio_write(sc, 0x14, 0xc200); + re_mdio_write(sc, 0x14, 0xc300); + re_mdio_write(sc, 0x14, 0xc400); + re_mdio_write(sc, 0x14, 0xc500); + re_mdio_write(sc, 0x14, 0xc600); + re_mdio_write(sc, 0x14, 0xc7c1); + re_mdio_write(sc, 0x14, 0xc800); + re_mdio_write(sc, 0x14, 0xcc00); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xca0f); + re_mdio_write(sc, 0x14, 0xcbff); + re_mdio_write(sc, 0x14, 0xa901); + re_mdio_write(sc, 0x14, 0x8902); + re_mdio_write(sc, 0x14, 0xc900); + re_mdio_write(sc, 0x14, 0xca00); + re_mdio_write(sc, 0x14, 0xcb00); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xb804); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x6044); + re_mdio_write(sc, 0x14, 0x9804); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6099); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cdb); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xa510); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6098); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fa4); + re_mdio_write(sc, 0x14, 0x2cdb); + re_mdio_write(sc, 0x14, 0x8510); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x3003); + re_mdio_write(sc, 0x14, 0x1d08); + re_mdio_write(sc, 0x14, 0x2d12); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x60be); + re_mdio_write(sc, 0x14, 0xe060); + re_mdio_write(sc, 0x14, 0x0920); + re_mdio_write(sc, 0x14, 0x1cdd); + re_mdio_write(sc, 0x14, 0x2c90); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x3063); + re_mdio_write(sc, 0x14, 0x19b0); + re_mdio_write(sc, 0x14, 0x28d5); + re_mdio_write(sc, 0x14, 0x1cdd); + re_mdio_write(sc, 0x14, 0x2a25); + re_mdio_write(sc, 0x14, 0xa802); + re_mdio_write(sc, 0x14, 0xa303); + re_mdio_write(sc, 0x14, 0x843f); + re_mdio_write(sc, 0x14, 0x81ff); + re_mdio_write(sc, 0x14, 0x8208); + re_mdio_write(sc, 0x14, 0xa201); + re_mdio_write(sc, 0x14, 0xc001); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x30a0); + re_mdio_write(sc, 0x14, 0x0d23); + re_mdio_write(sc, 0x14, 0x30a0); + re_mdio_write(sc, 0x14, 0x3d1a); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7f4c); + re_mdio_write(sc, 0x14, 0x2b1e); + re_mdio_write(sc, 0x14, 0xe003); + re_mdio_write(sc, 0x14, 0x0202); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6090); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fac); + re_mdio_write(sc, 0x14, 0x2b1e); + re_mdio_write(sc, 0x14, 0xa20c); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6091); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fac); + re_mdio_write(sc, 0x14, 0x2b1e); + re_mdio_write(sc, 0x14, 0x820e); + re_mdio_write(sc, 0x14, 0xa3e0); + re_mdio_write(sc, 0x14, 0xa520); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x609d); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fac); + re_mdio_write(sc, 0x14, 0x2b1e); + re_mdio_write(sc, 0x14, 0x8520); + re_mdio_write(sc, 0x14, 0x6703); + re_mdio_write(sc, 0x14, 0x2d3b); + re_mdio_write(sc, 0x14, 0xa13e); + re_mdio_write(sc, 0x14, 0xc001); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x6046); + re_mdio_write(sc, 0x14, 0x2d14); + re_mdio_write(sc, 0x14, 0xa43f); + re_mdio_write(sc, 0x14, 0xa101); + re_mdio_write(sc, 0x14, 0xc020); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x3121); + re_mdio_write(sc, 0x14, 0x0d4c); + re_mdio_write(sc, 0x14, 0x30c0); + re_mdio_write(sc, 0x14, 0x3d14); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7f4c); + re_mdio_write(sc, 0x14, 0x2b1e); + re_mdio_write(sc, 0x14, 0xa540); + re_mdio_write(sc, 0x14, 0xc001); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4001); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0501); + re_mdio_write(sc, 0x14, 0x1db3); + re_mdio_write(sc, 0x14, 0xc1c4); + re_mdio_write(sc, 0x14, 0xa268); + re_mdio_write(sc, 0x14, 0xa303); + re_mdio_write(sc, 0x14, 0x8420); + re_mdio_write(sc, 0x14, 0xe00f); + re_mdio_write(sc, 0x14, 0x0502); + re_mdio_write(sc, 0x14, 0x1db3); + re_mdio_write(sc, 0x14, 0xc002); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x8208); + re_mdio_write(sc, 0x14, 0x8410); + re_mdio_write(sc, 0x14, 0xa121); + re_mdio_write(sc, 0x14, 0xc002); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x8120); + re_mdio_write(sc, 0x14, 0x8180); + re_mdio_write(sc, 0x14, 0x1d9e); + re_mdio_write(sc, 0x14, 0xa180); + re_mdio_write(sc, 0x14, 0xa13a); + re_mdio_write(sc, 0x14, 0x8240); + re_mdio_write(sc, 0x14, 0xa430); + re_mdio_write(sc, 0x14, 0xc010); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x30e1); + re_mdio_write(sc, 0x14, 0x0b24); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7f8c); + re_mdio_write(sc, 0x14, 0x2b1e); + re_mdio_write(sc, 0x14, 0xa480); + re_mdio_write(sc, 0x14, 0xa230); + re_mdio_write(sc, 0x14, 0xa303); + re_mdio_write(sc, 0x14, 0xc001); + re_mdio_write(sc, 0x14, 0xd70c); + re_mdio_write(sc, 0x14, 0x4124); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x6120); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x3128); + re_mdio_write(sc, 0x14, 0x3d7d); + re_mdio_write(sc, 0x14, 0x2d77); + re_mdio_write(sc, 0x14, 0xa801); + re_mdio_write(sc, 0x14, 0x2d73); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0xe018); + re_mdio_write(sc, 0x14, 0x0208); + re_mdio_write(sc, 0x14, 0xa1f8); + re_mdio_write(sc, 0x14, 0x8480); + re_mdio_write(sc, 0x14, 0xc004); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x6046); + re_mdio_write(sc, 0x14, 0x2d14); + re_mdio_write(sc, 0x14, 0xa43f); + re_mdio_write(sc, 0x14, 0xa105); + re_mdio_write(sc, 0x14, 0x8228); + re_mdio_write(sc, 0x14, 0xc004); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x81bc); + re_mdio_write(sc, 0x14, 0xa220); + re_mdio_write(sc, 0x14, 0x1d9e); + re_mdio_write(sc, 0x14, 0x8220); + re_mdio_write(sc, 0x14, 0xa1bc); + re_mdio_write(sc, 0x14, 0xc040); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x30e1); + re_mdio_write(sc, 0x14, 0x0b24); + re_mdio_write(sc, 0x14, 0x30e1); + re_mdio_write(sc, 0x14, 0x3d14); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7f4c); + re_mdio_write(sc, 0x14, 0x2b1e); + re_mdio_write(sc, 0x14, 0xa802); + re_mdio_write(sc, 0x14, 0xd70c); + re_mdio_write(sc, 0x14, 0x4244); + re_mdio_write(sc, 0x14, 0xa301); + re_mdio_write(sc, 0x14, 0xc004); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x3128); + re_mdio_write(sc, 0x14, 0x3dac); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x5f80); + re_mdio_write(sc, 0x14, 0xd711); + re_mdio_write(sc, 0x14, 0x3109); + re_mdio_write(sc, 0x14, 0x3dae); + re_mdio_write(sc, 0x14, 0x2db2); + re_mdio_write(sc, 0x14, 0xa801); + re_mdio_write(sc, 0x14, 0x2da1); + re_mdio_write(sc, 0x14, 0xa802); + re_mdio_write(sc, 0x14, 0xc004); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x4000); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xa510); + re_mdio_write(sc, 0x14, 0xd710); + re_mdio_write(sc, 0x14, 0x609a); + re_mdio_write(sc, 0x14, 0xd71e); + re_mdio_write(sc, 0x14, 0x7fac); + re_mdio_write(sc, 0x14, 0x2b1e); + re_mdio_write(sc, 0x14, 0x8510); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x13, 0xa01a); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x13, 0xa006); + re_mdio_write(sc, 0x14, 0x0b3e); + re_mdio_write(sc, 0x13, 0xa004); + re_mdio_write(sc, 0x14, 0x0828); + re_mdio_write(sc, 0x13, 0xa002); + re_mdio_write(sc, 0x14, 0x06dd); + re_mdio_write(sc, 0x13, 0xa000); + re_mdio_write(sc, 0x14, 0xf815); + re_mdio_write(sc, 0x13, 0xb820); + re_mdio_write(sc, 0x14, 0x0010); + + + re_mdio_write(sc,0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x83b0); + re_mdio_write(sc, 0x14, 0xaf83); + re_mdio_write(sc, 0x14, 0xbcaf); + re_mdio_write(sc, 0x14, 0x83c8); + re_mdio_write(sc, 0x14, 0xaf83); + re_mdio_write(sc, 0x14, 0xddaf); + re_mdio_write(sc, 0x14, 0x83e0); + re_mdio_write(sc, 0x14, 0x0204); + re_mdio_write(sc, 0x14, 0xa102); + re_mdio_write(sc, 0x14, 0x09b4); + re_mdio_write(sc, 0x14, 0x0284); + re_mdio_write(sc, 0x14, 0x62af); + re_mdio_write(sc, 0x14, 0x02ec); + re_mdio_write(sc, 0x14, 0xad20); + re_mdio_write(sc, 0x14, 0x0302); + re_mdio_write(sc, 0x14, 0x867d); + re_mdio_write(sc, 0x14, 0xad21); + re_mdio_write(sc, 0x14, 0x0302); + re_mdio_write(sc, 0x14, 0x85ca); + re_mdio_write(sc, 0x14, 0xad22); + re_mdio_write(sc, 0x14, 0x0302); + re_mdio_write(sc, 0x14, 0x1bce); + re_mdio_write(sc, 0x14, 0xaf18); + re_mdio_write(sc, 0x14, 0x11af); + re_mdio_write(sc, 0x14, 0x1811); + re_mdio_write(sc, 0x14, 0x0106); + re_mdio_write(sc, 0x14, 0xe081); + re_mdio_write(sc, 0x14, 0x48af); + re_mdio_write(sc, 0x14, 0x3b1f); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69ee); + re_mdio_write(sc, 0x14, 0x8010); + re_mdio_write(sc, 0x14, 0xf7d1); + re_mdio_write(sc, 0x14, 0x04bf); + re_mdio_write(sc, 0x14, 0x8776); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x0a02); + re_mdio_write(sc, 0x14, 0x8704); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x4fd7); + re_mdio_write(sc, 0x14, 0xb822); + re_mdio_write(sc, 0x14, 0xd00c); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x03ee); + re_mdio_write(sc, 0x14, 0x80cd); + re_mdio_write(sc, 0x14, 0xa0ee); + re_mdio_write(sc, 0x14, 0x80ce); + re_mdio_write(sc, 0x14, 0x8bee); + re_mdio_write(sc, 0x14, 0x80d1); + re_mdio_write(sc, 0x14, 0xf5ee); + re_mdio_write(sc, 0x14, 0x80d2); + re_mdio_write(sc, 0x14, 0xa9ee); + re_mdio_write(sc, 0x14, 0x80d3); + re_mdio_write(sc, 0x14, 0x0aee); + re_mdio_write(sc, 0x14, 0x80f0); + re_mdio_write(sc, 0x14, 0x10ee); + re_mdio_write(sc, 0x14, 0x80f3); + re_mdio_write(sc, 0x14, 0x8fee); + re_mdio_write(sc, 0x14, 0x8101); + re_mdio_write(sc, 0x14, 0x1eee); + re_mdio_write(sc, 0x14, 0x810b); + re_mdio_write(sc, 0x14, 0x4aee); + re_mdio_write(sc, 0x14, 0x810c); + re_mdio_write(sc, 0x14, 0x7cee); + re_mdio_write(sc, 0x14, 0x8112); + re_mdio_write(sc, 0x14, 0x7fd1); + re_mdio_write(sc, 0x14, 0x0002); + re_mdio_write(sc, 0x14, 0x10e3); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0x8892); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0x8922); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0x9a80); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0x9b22); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0x9ca7); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0xa010); + re_mdio_write(sc, 0x14, 0xee80); + re_mdio_write(sc, 0x14, 0xa5a7); + re_mdio_write(sc, 0x14, 0xd200); + re_mdio_write(sc, 0x14, 0x020e); + re_mdio_write(sc, 0x14, 0x4b02); + re_mdio_write(sc, 0x14, 0x85c1); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0x0284); + re_mdio_write(sc, 0x14, 0x7b02); + re_mdio_write(sc, 0x14, 0x84b4); + re_mdio_write(sc, 0x14, 0x020c); + re_mdio_write(sc, 0x14, 0x9202); + re_mdio_write(sc, 0x14, 0x0cab); + re_mdio_write(sc, 0x14, 0x020c); + re_mdio_write(sc, 0x14, 0xd602); + re_mdio_write(sc, 0x14, 0x0cef); + re_mdio_write(sc, 0x14, 0x020d); + re_mdio_write(sc, 0x14, 0x1a02); + re_mdio_write(sc, 0x14, 0x0c24); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69e1); + re_mdio_write(sc, 0x14, 0x8234); + re_mdio_write(sc, 0x14, 0xac29); + re_mdio_write(sc, 0x14, 0x1ae0); + re_mdio_write(sc, 0x14, 0x8229); + re_mdio_write(sc, 0x14, 0xac21); + re_mdio_write(sc, 0x14, 0x02ae); + re_mdio_write(sc, 0x14, 0x2202); + re_mdio_write(sc, 0x14, 0x1085); + re_mdio_write(sc, 0x14, 0xf621); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x29d1); + re_mdio_write(sc, 0x14, 0x01bf); + re_mdio_write(sc, 0x14, 0x4364); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x0aae); + re_mdio_write(sc, 0x14, 0x1002); + re_mdio_write(sc, 0x14, 0x127a); + re_mdio_write(sc, 0x14, 0xf629); + re_mdio_write(sc, 0x14, 0xe582); + re_mdio_write(sc, 0x14, 0x34e0); + re_mdio_write(sc, 0x14, 0x8229); + re_mdio_write(sc, 0x14, 0xf621); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x29ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8e1); + re_mdio_write(sc, 0x14, 0x8234); + re_mdio_write(sc, 0x14, 0xac2a); + re_mdio_write(sc, 0x14, 0x18e0); + re_mdio_write(sc, 0x14, 0x8229); + re_mdio_write(sc, 0x14, 0xac22); + re_mdio_write(sc, 0x14, 0x02ae); + re_mdio_write(sc, 0x14, 0x2602); + re_mdio_write(sc, 0x14, 0x84f9); + re_mdio_write(sc, 0x14, 0x0285); + re_mdio_write(sc, 0x14, 0x66d1); + re_mdio_write(sc, 0x14, 0x01bf); + re_mdio_write(sc, 0x14, 0x4367); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x0aae); + re_mdio_write(sc, 0x14, 0x0e02); + re_mdio_write(sc, 0x14, 0x84eb); + re_mdio_write(sc, 0x14, 0x0285); + re_mdio_write(sc, 0x14, 0xaae1); + re_mdio_write(sc, 0x14, 0x8234); + re_mdio_write(sc, 0x14, 0xf62a); + re_mdio_write(sc, 0x14, 0xe582); + re_mdio_write(sc, 0x14, 0x34e0); + re_mdio_write(sc, 0x14, 0x8229); + re_mdio_write(sc, 0x14, 0xf622); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x29fc); + re_mdio_write(sc, 0x14, 0x04f9); + re_mdio_write(sc, 0x14, 0xe280); + re_mdio_write(sc, 0x14, 0x11ad); + re_mdio_write(sc, 0x14, 0x3105); + re_mdio_write(sc, 0x14, 0xd200); + re_mdio_write(sc, 0x14, 0x020e); + re_mdio_write(sc, 0x14, 0x4bfd); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xf9fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xe080); + re_mdio_write(sc, 0x14, 0x11ad); + re_mdio_write(sc, 0x14, 0x215c); + re_mdio_write(sc, 0x14, 0xbf42); + re_mdio_write(sc, 0x14, 0x5002); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0xac28); + re_mdio_write(sc, 0x14, 0x1bbf); + re_mdio_write(sc, 0x14, 0x4253); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x48ac); + re_mdio_write(sc, 0x14, 0x2812); + re_mdio_write(sc, 0x14, 0xbf42); + re_mdio_write(sc, 0x14, 0x5902); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0xac28); + re_mdio_write(sc, 0x14, 0x04d3); + re_mdio_write(sc, 0x14, 0x00ae); + re_mdio_write(sc, 0x14, 0x07d3); + re_mdio_write(sc, 0x14, 0x06af); + re_mdio_write(sc, 0x14, 0x8557); + re_mdio_write(sc, 0x14, 0xd303); + re_mdio_write(sc, 0x14, 0xe080); + re_mdio_write(sc, 0x14, 0x11ad); + re_mdio_write(sc, 0x14, 0x2625); + re_mdio_write(sc, 0x14, 0xbf43); + re_mdio_write(sc, 0x14, 0xeb02); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0xe280); + re_mdio_write(sc, 0x14, 0x730d); + re_mdio_write(sc, 0x14, 0x21f6); + re_mdio_write(sc, 0x14, 0x370d); + re_mdio_write(sc, 0x14, 0x11f6); + re_mdio_write(sc, 0x14, 0x2f1b); + re_mdio_write(sc, 0x14, 0x21aa); + re_mdio_write(sc, 0x14, 0x02ae); + re_mdio_write(sc, 0x14, 0x10e2); + re_mdio_write(sc, 0x14, 0x8074); + re_mdio_write(sc, 0x14, 0x0d21); + re_mdio_write(sc, 0x14, 0xf637); + re_mdio_write(sc, 0x14, 0x1b21); + re_mdio_write(sc, 0x14, 0xaa03); + re_mdio_write(sc, 0x14, 0x13ae); + re_mdio_write(sc, 0x14, 0x022b); + re_mdio_write(sc, 0x14, 0x0202); + re_mdio_write(sc, 0x14, 0x0e36); + re_mdio_write(sc, 0x14, 0x020e); + re_mdio_write(sc, 0x14, 0x4b02); + re_mdio_write(sc, 0x14, 0x0f91); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69e0); + re_mdio_write(sc, 0x14, 0x8012); + re_mdio_write(sc, 0x14, 0xad27); + re_mdio_write(sc, 0x14, 0x33bf); + re_mdio_write(sc, 0x14, 0x4250); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x48ac); + re_mdio_write(sc, 0x14, 0x2809); + re_mdio_write(sc, 0x14, 0xbf42); + re_mdio_write(sc, 0x14, 0x5302); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0xad28); + re_mdio_write(sc, 0x14, 0x21bf); + re_mdio_write(sc, 0x14, 0x43eb); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x48e3); + re_mdio_write(sc, 0x14, 0x87ff); + re_mdio_write(sc, 0x14, 0xd200); + re_mdio_write(sc, 0x14, 0x1b45); + re_mdio_write(sc, 0x14, 0xac27); + re_mdio_write(sc, 0x14, 0x11e1); + re_mdio_write(sc, 0x14, 0x87fe); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x6702); + re_mdio_write(sc, 0x14, 0x410a); + re_mdio_write(sc, 0x14, 0x0d11); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x6a02); + re_mdio_write(sc, 0x14, 0x410a); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefd); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xd100); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x6702); + re_mdio_write(sc, 0x14, 0x410a); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x6a02); + re_mdio_write(sc, 0x14, 0x410a); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefc); + re_mdio_write(sc, 0x14, 0x04ee); + re_mdio_write(sc, 0x14, 0x87ff); + re_mdio_write(sc, 0x14, 0x46ee); + re_mdio_write(sc, 0x14, 0x87fe); + re_mdio_write(sc, 0x14, 0x0104); + re_mdio_write(sc, 0x14, 0xf8fa); + re_mdio_write(sc, 0x14, 0xef69); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x46a0); + re_mdio_write(sc, 0x14, 0x0005); + re_mdio_write(sc, 0x14, 0x0285); + re_mdio_write(sc, 0x14, 0xecae); + re_mdio_write(sc, 0x14, 0x0ea0); + re_mdio_write(sc, 0x14, 0x0105); + re_mdio_write(sc, 0x14, 0x021a); + re_mdio_write(sc, 0x14, 0x68ae); + re_mdio_write(sc, 0x14, 0x06a0); + re_mdio_write(sc, 0x14, 0x0203); + re_mdio_write(sc, 0x14, 0x021a); + re_mdio_write(sc, 0x14, 0xf4ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69e0); + re_mdio_write(sc, 0x14, 0x822e); + re_mdio_write(sc, 0x14, 0xf621); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x2ee0); + re_mdio_write(sc, 0x14, 0x8010); + re_mdio_write(sc, 0x14, 0xac22); + re_mdio_write(sc, 0x14, 0x02ae); + re_mdio_write(sc, 0x14, 0x76e0); + re_mdio_write(sc, 0x14, 0x822c); + re_mdio_write(sc, 0x14, 0xf721); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x2cbf); + re_mdio_write(sc, 0x14, 0x41a5); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x48ef); + re_mdio_write(sc, 0x14, 0x21bf); + re_mdio_write(sc, 0x14, 0x41a8); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x480c); + re_mdio_write(sc, 0x14, 0x111e); + re_mdio_write(sc, 0x14, 0x21bf); + re_mdio_write(sc, 0x14, 0x41ab); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x480c); + re_mdio_write(sc, 0x14, 0x121e); + re_mdio_write(sc, 0x14, 0x21e6); + re_mdio_write(sc, 0x14, 0x8248); + re_mdio_write(sc, 0x14, 0xa200); + re_mdio_write(sc, 0x14, 0x0ae1); + re_mdio_write(sc, 0x14, 0x822c); + re_mdio_write(sc, 0x14, 0xf629); + re_mdio_write(sc, 0x14, 0xe582); + re_mdio_write(sc, 0x14, 0x2cae); + re_mdio_write(sc, 0x14, 0x42e0); + re_mdio_write(sc, 0x14, 0x8249); + re_mdio_write(sc, 0x14, 0xf721); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x4902); + re_mdio_write(sc, 0x14, 0x4520); + re_mdio_write(sc, 0x14, 0xbf41); + re_mdio_write(sc, 0x14, 0xb702); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0xef21); + re_mdio_write(sc, 0x14, 0xbf41); + re_mdio_write(sc, 0x14, 0xae02); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0x0c12); + re_mdio_write(sc, 0x14, 0x1e21); + re_mdio_write(sc, 0x14, 0xbf41); + re_mdio_write(sc, 0x14, 0xb102); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0x0c13); + re_mdio_write(sc, 0x14, 0x1e21); + re_mdio_write(sc, 0x14, 0xbf41); + re_mdio_write(sc, 0x14, 0xba02); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0x0c14); + re_mdio_write(sc, 0x14, 0x1e21); + re_mdio_write(sc, 0x14, 0xbf43); + re_mdio_write(sc, 0x14, 0x4602); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0x0c16); + re_mdio_write(sc, 0x14, 0x1e21); + re_mdio_write(sc, 0x14, 0xe682); + re_mdio_write(sc, 0x14, 0x47ee); + re_mdio_write(sc, 0x14, 0x8246); + re_mdio_write(sc, 0x14, 0x01ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfdfc); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69e0); + re_mdio_write(sc, 0x14, 0x824b); + re_mdio_write(sc, 0x14, 0xa000); + re_mdio_write(sc, 0x14, 0x0502); + re_mdio_write(sc, 0x14, 0x8697); + re_mdio_write(sc, 0x14, 0xae06); + re_mdio_write(sc, 0x14, 0xa001); + re_mdio_write(sc, 0x14, 0x0302); + re_mdio_write(sc, 0x14, 0x1937); + re_mdio_write(sc, 0x14, 0xef96); + re_mdio_write(sc, 0x14, 0xfefc); + re_mdio_write(sc, 0x14, 0x04f8); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69e0); + re_mdio_write(sc, 0x14, 0x822e); + re_mdio_write(sc, 0x14, 0xf620); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x2ee0); + re_mdio_write(sc, 0x14, 0x8010); + re_mdio_write(sc, 0x14, 0xac21); + re_mdio_write(sc, 0x14, 0x02ae); + re_mdio_write(sc, 0x14, 0x54e0); + re_mdio_write(sc, 0x14, 0x822c); + re_mdio_write(sc, 0x14, 0xf720); + re_mdio_write(sc, 0x14, 0xe482); + re_mdio_write(sc, 0x14, 0x2cbf); + re_mdio_write(sc, 0x14, 0x4175); + re_mdio_write(sc, 0x14, 0x0241); + re_mdio_write(sc, 0x14, 0x48ac); + re_mdio_write(sc, 0x14, 0x2822); + re_mdio_write(sc, 0x14, 0xbf41); + re_mdio_write(sc, 0x14, 0x9f02); + re_mdio_write(sc, 0x14, 0x4148); + re_mdio_write(sc, 0x14, 0xe582); + re_mdio_write(sc, 0x14, 0x4cac); + re_mdio_write(sc, 0x14, 0x2820); + re_mdio_write(sc, 0x14, 0xd103); + re_mdio_write(sc, 0x14, 0xbf41); + re_mdio_write(sc, 0x14, 0x9902); + re_mdio_write(sc, 0x14, 0x410a); + re_mdio_write(sc, 0x14, 0xee82); + re_mdio_write(sc, 0x14, 0x4b00); + re_mdio_write(sc, 0x14, 0xe182); + re_mdio_write(sc, 0x14, 0x2cf6); + re_mdio_write(sc, 0x14, 0x28e5); + re_mdio_write(sc, 0x14, 0x822c); + re_mdio_write(sc, 0x14, 0xae21); + re_mdio_write(sc, 0x14, 0xd104); + re_mdio_write(sc, 0x14, 0xbf41); + re_mdio_write(sc, 0x14, 0x9902); + re_mdio_write(sc, 0x14, 0x410a); + re_mdio_write(sc, 0x14, 0xae08); + re_mdio_write(sc, 0x14, 0xd105); + re_mdio_write(sc, 0x14, 0xbf41); + re_mdio_write(sc, 0x14, 0x9902); + re_mdio_write(sc, 0x14, 0x410a); + re_mdio_write(sc, 0x14, 0xe082); + re_mdio_write(sc, 0x14, 0x49f7); + re_mdio_write(sc, 0x14, 0x20e4); + re_mdio_write(sc, 0x14, 0x8249); + re_mdio_write(sc, 0x14, 0x0245); + re_mdio_write(sc, 0x14, 0x20ee); + re_mdio_write(sc, 0x14, 0x824b); + re_mdio_write(sc, 0x14, 0x01ef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xfc04); + re_mdio_write(sc, 0x14, 0xf8f9); + re_mdio_write(sc, 0x14, 0xface); + re_mdio_write(sc, 0x14, 0xfaef); + re_mdio_write(sc, 0x14, 0x69fb); + re_mdio_write(sc, 0x14, 0xbf87); + re_mdio_write(sc, 0x14, 0x2fd7); + re_mdio_write(sc, 0x14, 0x0020); + re_mdio_write(sc, 0x14, 0xd819); + re_mdio_write(sc, 0x14, 0xd919); + re_mdio_write(sc, 0x14, 0xda19); + re_mdio_write(sc, 0x14, 0xdb19); + re_mdio_write(sc, 0x14, 0x07ef); + re_mdio_write(sc, 0x14, 0x9502); + re_mdio_write(sc, 0x14, 0x410a); + re_mdio_write(sc, 0x14, 0x073f); + re_mdio_write(sc, 0x14, 0x0004); + re_mdio_write(sc, 0x14, 0x9fec); + re_mdio_write(sc, 0x14, 0xffef); + re_mdio_write(sc, 0x14, 0x96fe); + re_mdio_write(sc, 0x14, 0xc6fe); + re_mdio_write(sc, 0x14, 0xfdfc); + re_mdio_write(sc, 0x14, 0x0400); + re_mdio_write(sc, 0x14, 0x0144); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x14, 0x0343); + re_mdio_write(sc, 0x14, 0xee00); + re_mdio_write(sc, 0x14, 0x0087); + re_mdio_write(sc, 0x14, 0x5b00); + re_mdio_write(sc, 0x14, 0x0141); + re_mdio_write(sc, 0x14, 0xe100); + re_mdio_write(sc, 0x14, 0x0387); + re_mdio_write(sc, 0x14, 0x5e00); + re_mdio_write(sc, 0x14, 0x0987); + re_mdio_write(sc, 0x14, 0x6100); + re_mdio_write(sc, 0x14, 0x0987); + re_mdio_write(sc, 0x14, 0x6400); + re_mdio_write(sc, 0x14, 0x0087); + re_mdio_write(sc, 0x14, 0x6da4); + re_mdio_write(sc, 0x14, 0x00b8); + re_mdio_write(sc, 0x14, 0x20c4); + re_mdio_write(sc, 0x14, 0x1600); + re_mdio_write(sc, 0x14, 0x000f); + re_mdio_write(sc, 0x14, 0xf800); + re_mdio_write(sc, 0x14, 0x7000); + re_mdio_write(sc, 0x14, 0xb82e); + re_mdio_write(sc, 0x14, 0x98a5); + re_mdio_write(sc, 0x14, 0x8ab6); + re_mdio_write(sc, 0x14, 0xa83e); + re_mdio_write(sc, 0x14, 0x50a8); + re_mdio_write(sc, 0x14, 0x3e33); + re_mdio_write(sc, 0x14, 0xbcc6); + re_mdio_write(sc, 0x14, 0x22bc); + re_mdio_write(sc, 0x14, 0xc6aa); + re_mdio_write(sc, 0x14, 0xa442); + re_mdio_write(sc, 0x14, 0xffc4); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x14, 0xc416); + re_mdio_write(sc, 0x14, 0xa8bc); + re_mdio_write(sc, 0x14, 0xc000); + re_mdio_write(sc, 0x13, 0xb818); + re_mdio_write(sc, 0x14, 0x02e3); + re_mdio_write(sc, 0x13, 0xb81a); + re_mdio_write(sc, 0x14, 0x17ff); + re_mdio_write(sc, 0x13, 0xb81e); + re_mdio_write(sc, 0x14, 0x3b1c); + re_mdio_write(sc, 0x13, 0xb820); + re_mdio_write(sc, 0x14, 0x021b); + re_mdio_write(sc, 0x1f, 0x0000); + + + re_mdio_write(sc,0x1F, 0x0A43); + re_mdio_write(sc,0x13, 0x0000); + re_mdio_write(sc,0x14, 0x0000); + re_mdio_write(sc,0x1f, 0x0B82); + PhyRegValue = re_mdio_read(sc, 0x17); + PhyRegValue &= ~(BIT_0); + re_mdio_write(sc,0x17, PhyRegValue); + re_mdio_write(sc,0x1f, 0x0A43); + re_mdio_write(sc,0x13, 0x8146); + re_mdio_write(sc,0x14, 0x0000); - return bSuccess; + re_clear_phy_mcu_patch_request(sc); } -static void -re_set_phy_mcu_ram_code(struct re_softc* sc, const u_int16_t* ramcode, u_int16_t codesize) +static void re_set_phy_mcu_8168ep_2(struct re_softc *sc) { - u_int16_t i; - u_int16_t addr; - u_int16_t val; + u_int16_t PhyRegValue; - if (ramcode == NULL || codesize % 2) { - goto out; - } - - for (i = 0; i < codesize; i += 2) { - addr = ramcode[i]; - val = ramcode[i + 1]; - if (addr == 0xFFFF && val == 0xFFFF) { - break; - } - MP_RealWritePhyOcpRegWord(sc, addr, val); - } + re_set_phy_mcu_patch_request(sc); -out: - return; -} - -static void re_set_phy_mcu_8168e_1(struct re_softc* sc) -{ - u_int16_t PhyRegValue; - int i; - - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x1800); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - MP_WritePhyUshort(sc, 0x17, 0x0117); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x002C); - MP_WritePhyUshort(sc, 0x1B, 0x5000); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x16, 0x4104); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x1E); - PhyRegValue &= 0x03FF; - if (PhyRegValue == 0x000C) - break; - } - MP_WritePhyUshort(sc, 0x1f, 0x0005); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x07); - if ((PhyRegValue & 0x0020) == 0) - break; - } - PhyRegValue = MP_ReadPhyUshort(sc, 0x07); - if (PhyRegValue & 0x0020) { - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x00a1); - MP_WritePhyUshort(sc, 0x17, 0x1000); - MP_WritePhyUshort(sc, 0x17, 0x0000); - MP_WritePhyUshort(sc, 0x17, 0x2000); - MP_WritePhyUshort(sc, 0x1e, 0x002f); - MP_WritePhyUshort(sc, 0x18, 0x9bfb); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x07, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - } - - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x0080); - PhyRegValue = MP_ReadPhyUshort(sc, 0x00); - PhyRegValue &= ~(BIT_7); - MP_WritePhyUshort(sc, 0x00, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0002); - PhyRegValue = MP_ReadPhyUshort(sc, 0x08); - PhyRegValue &= ~(BIT_7); - MP_WritePhyUshort(sc, 0x08, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - MP_WritePhyUshort(sc, 0x16, 0x0306); - MP_WritePhyUshort(sc, 0x16, 0x0307); - MP_WritePhyUshort(sc, 0x15, 0x000e); - MP_WritePhyUshort(sc, 0x19, 0x000a); - MP_WritePhyUshort(sc, 0x15, 0x0010); - MP_WritePhyUshort(sc, 0x19, 0x0008); - MP_WritePhyUshort(sc, 0x15, 0x0018); - MP_WritePhyUshort(sc, 0x19, 0x4801); - MP_WritePhyUshort(sc, 0x15, 0x0019); - MP_WritePhyUshort(sc, 0x19, 0x6801); - MP_WritePhyUshort(sc, 0x15, 0x001a); - MP_WritePhyUshort(sc, 0x19, 0x66a1); - MP_WritePhyUshort(sc, 0x15, 0x001f); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0020); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0021); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0022); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0023); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0024); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0025); - MP_WritePhyUshort(sc, 0x19, 0x64a1); - MP_WritePhyUshort(sc, 0x15, 0x0026); - MP_WritePhyUshort(sc, 0x19, 0x40ea); - MP_WritePhyUshort(sc, 0x15, 0x0027); - MP_WritePhyUshort(sc, 0x19, 0x4503); - MP_WritePhyUshort(sc, 0x15, 0x0028); - MP_WritePhyUshort(sc, 0x19, 0x9f00); - MP_WritePhyUshort(sc, 0x15, 0x0029); - MP_WritePhyUshort(sc, 0x19, 0xa631); - MP_WritePhyUshort(sc, 0x15, 0x002a); - MP_WritePhyUshort(sc, 0x19, 0x9717); - MP_WritePhyUshort(sc, 0x15, 0x002b); - MP_WritePhyUshort(sc, 0x19, 0x302c); - MP_WritePhyUshort(sc, 0x15, 0x002c); - MP_WritePhyUshort(sc, 0x19, 0x4802); - MP_WritePhyUshort(sc, 0x15, 0x002d); - MP_WritePhyUshort(sc, 0x19, 0x58da); - MP_WritePhyUshort(sc, 0x15, 0x002e); - MP_WritePhyUshort(sc, 0x19, 0x400d); - MP_WritePhyUshort(sc, 0x15, 0x002f); - MP_WritePhyUshort(sc, 0x19, 0x4488); - MP_WritePhyUshort(sc, 0x15, 0x0030); - MP_WritePhyUshort(sc, 0x19, 0x9e00); - MP_WritePhyUshort(sc, 0x15, 0x0031); - MP_WritePhyUshort(sc, 0x19, 0x63c8); - MP_WritePhyUshort(sc, 0x15, 0x0032); - MP_WritePhyUshort(sc, 0x19, 0x6481); - MP_WritePhyUshort(sc, 0x15, 0x0033); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0034); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0035); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0036); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0037); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0038); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0039); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x003a); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x003b); - MP_WritePhyUshort(sc, 0x19, 0x63e8); - MP_WritePhyUshort(sc, 0x15, 0x003c); - MP_WritePhyUshort(sc, 0x19, 0x7d00); - MP_WritePhyUshort(sc, 0x15, 0x003d); - MP_WritePhyUshort(sc, 0x19, 0x59d4); - MP_WritePhyUshort(sc, 0x15, 0x003e); - MP_WritePhyUshort(sc, 0x19, 0x63f8); - MP_WritePhyUshort(sc, 0x15, 0x0040); - MP_WritePhyUshort(sc, 0x19, 0x64a1); - MP_WritePhyUshort(sc, 0x15, 0x0041); - MP_WritePhyUshort(sc, 0x19, 0x30de); - MP_WritePhyUshort(sc, 0x15, 0x0044); - MP_WritePhyUshort(sc, 0x19, 0x480f); - MP_WritePhyUshort(sc, 0x15, 0x0045); - MP_WritePhyUshort(sc, 0x19, 0x6800); - MP_WritePhyUshort(sc, 0x15, 0x0046); - MP_WritePhyUshort(sc, 0x19, 0x6680); - MP_WritePhyUshort(sc, 0x15, 0x0047); - MP_WritePhyUshort(sc, 0x19, 0x7c10); - MP_WritePhyUshort(sc, 0x15, 0x0048); - MP_WritePhyUshort(sc, 0x19, 0x63c8); - MP_WritePhyUshort(sc, 0x15, 0x0049); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004a); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004b); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004c); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004d); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004e); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004f); - MP_WritePhyUshort(sc, 0x19, 0x40ea); - MP_WritePhyUshort(sc, 0x15, 0x0050); - MP_WritePhyUshort(sc, 0x19, 0x4503); - MP_WritePhyUshort(sc, 0x15, 0x0051); - MP_WritePhyUshort(sc, 0x19, 0x58ca); - MP_WritePhyUshort(sc, 0x15, 0x0052); - MP_WritePhyUshort(sc, 0x19, 0x63c8); - MP_WritePhyUshort(sc, 0x15, 0x0053); - MP_WritePhyUshort(sc, 0x19, 0x63d8); - MP_WritePhyUshort(sc, 0x15, 0x0054); - MP_WritePhyUshort(sc, 0x19, 0x66a0); - MP_WritePhyUshort(sc, 0x15, 0x0055); - MP_WritePhyUshort(sc, 0x19, 0x9f00); - MP_WritePhyUshort(sc, 0x15, 0x0056); - MP_WritePhyUshort(sc, 0x19, 0x3000); - MP_WritePhyUshort(sc, 0x15, 0x006E); - MP_WritePhyUshort(sc, 0x19, 0x9afa); - MP_WritePhyUshort(sc, 0x15, 0x00a1); - MP_WritePhyUshort(sc, 0x19, 0x3044); - MP_WritePhyUshort(sc, 0x15, 0x00ab); - MP_WritePhyUshort(sc, 0x19, 0x5820); - MP_WritePhyUshort(sc, 0x15, 0x00ac); - MP_WritePhyUshort(sc, 0x19, 0x5e04); - MP_WritePhyUshort(sc, 0x15, 0x00ad); - MP_WritePhyUshort(sc, 0x19, 0xb60c); - MP_WritePhyUshort(sc, 0x15, 0x00af); - MP_WritePhyUshort(sc, 0x19, 0x000a); - MP_WritePhyUshort(sc, 0x15, 0x00b2); - MP_WritePhyUshort(sc, 0x19, 0x30b9); - MP_WritePhyUshort(sc, 0x15, 0x00b9); - MP_WritePhyUshort(sc, 0x19, 0x4408); - MP_WritePhyUshort(sc, 0x15, 0x00ba); - MP_WritePhyUshort(sc, 0x19, 0x480b); - MP_WritePhyUshort(sc, 0x15, 0x00bb); - MP_WritePhyUshort(sc, 0x19, 0x5e00); - MP_WritePhyUshort(sc, 0x15, 0x00bc); - MP_WritePhyUshort(sc, 0x19, 0x405f); - MP_WritePhyUshort(sc, 0x15, 0x00bd); - MP_WritePhyUshort(sc, 0x19, 0x4448); - MP_WritePhyUshort(sc, 0x15, 0x00be); - MP_WritePhyUshort(sc, 0x19, 0x4020); - MP_WritePhyUshort(sc, 0x15, 0x00bf); - MP_WritePhyUshort(sc, 0x19, 0x4468); - MP_WritePhyUshort(sc, 0x15, 0x00c0); - MP_WritePhyUshort(sc, 0x19, 0x9c02); - MP_WritePhyUshort(sc, 0x15, 0x00c1); - MP_WritePhyUshort(sc, 0x19, 0x58a0); - MP_WritePhyUshort(sc, 0x15, 0x00c2); - MP_WritePhyUshort(sc, 0x19, 0xb605); - MP_WritePhyUshort(sc, 0x15, 0x00c3); - MP_WritePhyUshort(sc, 0x19, 0xc0d3); - MP_WritePhyUshort(sc, 0x15, 0x00c4); - MP_WritePhyUshort(sc, 0x19, 0x00e6); - MP_WritePhyUshort(sc, 0x15, 0x00c5); - MP_WritePhyUshort(sc, 0x19, 0xdaec); - MP_WritePhyUshort(sc, 0x15, 0x00c6); - MP_WritePhyUshort(sc, 0x19, 0x00fa); - MP_WritePhyUshort(sc, 0x15, 0x00c7); - MP_WritePhyUshort(sc, 0x19, 0x9df9); - MP_WritePhyUshort(sc, 0x15, 0x00c8); - MP_WritePhyUshort(sc, 0x19, 0x307a); - MP_WritePhyUshort(sc, 0x15, 0x0112); - MP_WritePhyUshort(sc, 0x19, 0x6421); - MP_WritePhyUshort(sc, 0x15, 0x0113); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x0114); - MP_WritePhyUshort(sc, 0x19, 0x63f0); - MP_WritePhyUshort(sc, 0x15, 0x0115); - MP_WritePhyUshort(sc, 0x19, 0x4003); - MP_WritePhyUshort(sc, 0x15, 0x0116); - MP_WritePhyUshort(sc, 0x19, 0x4418); - MP_WritePhyUshort(sc, 0x15, 0x0117); - MP_WritePhyUshort(sc, 0x19, 0x9b00); - MP_WritePhyUshort(sc, 0x15, 0x0118); - MP_WritePhyUshort(sc, 0x19, 0x6461); - MP_WritePhyUshort(sc, 0x15, 0x0119); - MP_WritePhyUshort(sc, 0x19, 0x64e1); - MP_WritePhyUshort(sc, 0x15, 0x011a); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0150); - MP_WritePhyUshort(sc, 0x19, 0x7c80); - MP_WritePhyUshort(sc, 0x15, 0x0151); - MP_WritePhyUshort(sc, 0x19, 0x6461); - MP_WritePhyUshort(sc, 0x15, 0x0152); - MP_WritePhyUshort(sc, 0x19, 0x4003); - MP_WritePhyUshort(sc, 0x15, 0x0153); - MP_WritePhyUshort(sc, 0x19, 0x4540); - MP_WritePhyUshort(sc, 0x15, 0x0154); - MP_WritePhyUshort(sc, 0x19, 0x9f00); - MP_WritePhyUshort(sc, 0x15, 0x0155); - MP_WritePhyUshort(sc, 0x19, 0x9d00); - MP_WritePhyUshort(sc, 0x15, 0x0156); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x0157); - MP_WritePhyUshort(sc, 0x19, 0x6421); - MP_WritePhyUshort(sc, 0x15, 0x0158); - MP_WritePhyUshort(sc, 0x19, 0x7c80); - MP_WritePhyUshort(sc, 0x15, 0x0159); - MP_WritePhyUshort(sc, 0x19, 0x64a1); - MP_WritePhyUshort(sc, 0x15, 0x015a); - MP_WritePhyUshort(sc, 0x19, 0x30fe); - MP_WritePhyUshort(sc, 0x15, 0x021e); - MP_WritePhyUshort(sc, 0x19, 0x5410); - MP_WritePhyUshort(sc, 0x15, 0x0225); - MP_WritePhyUshort(sc, 0x19, 0x5400); - MP_WritePhyUshort(sc, 0x15, 0x023D); - MP_WritePhyUshort(sc, 0x19, 0x4050); - MP_WritePhyUshort(sc, 0x15, 0x0295); - MP_WritePhyUshort(sc, 0x19, 0x6c08); - MP_WritePhyUshort(sc, 0x15, 0x02bd); - MP_WritePhyUshort(sc, 0x19, 0xa523); - MP_WritePhyUshort(sc, 0x15, 0x02be); - MP_WritePhyUshort(sc, 0x19, 0x32ca); - MP_WritePhyUshort(sc, 0x15, 0x02ca); - MP_WritePhyUshort(sc, 0x19, 0x48b3); - MP_WritePhyUshort(sc, 0x15, 0x02cb); - MP_WritePhyUshort(sc, 0x19, 0x4020); - MP_WritePhyUshort(sc, 0x15, 0x02cc); - MP_WritePhyUshort(sc, 0x19, 0x4823); - MP_WritePhyUshort(sc, 0x15, 0x02cd); - MP_WritePhyUshort(sc, 0x19, 0x4510); - MP_WritePhyUshort(sc, 0x15, 0x02ce); - MP_WritePhyUshort(sc, 0x19, 0xb63a); - MP_WritePhyUshort(sc, 0x15, 0x02cf); - MP_WritePhyUshort(sc, 0x19, 0x7dc8); - MP_WritePhyUshort(sc, 0x15, 0x02d6); - MP_WritePhyUshort(sc, 0x19, 0x9bf8); - MP_WritePhyUshort(sc, 0x15, 0x02d8); - MP_WritePhyUshort(sc, 0x19, 0x85f6); - MP_WritePhyUshort(sc, 0x15, 0x02d9); - MP_WritePhyUshort(sc, 0x19, 0x32e0); - MP_WritePhyUshort(sc, 0x15, 0x02e0); - MP_WritePhyUshort(sc, 0x19, 0x4834); - MP_WritePhyUshort(sc, 0x15, 0x02e1); - MP_WritePhyUshort(sc, 0x19, 0x6c08); - MP_WritePhyUshort(sc, 0x15, 0x02e2); - MP_WritePhyUshort(sc, 0x19, 0x4020); - MP_WritePhyUshort(sc, 0x15, 0x02e3); - MP_WritePhyUshort(sc, 0x19, 0x4824); - MP_WritePhyUshort(sc, 0x15, 0x02e4); - MP_WritePhyUshort(sc, 0x19, 0x4520); - MP_WritePhyUshort(sc, 0x15, 0x02e5); - MP_WritePhyUshort(sc, 0x19, 0x4008); - MP_WritePhyUshort(sc, 0x15, 0x02e6); - MP_WritePhyUshort(sc, 0x19, 0x4560); - MP_WritePhyUshort(sc, 0x15, 0x02e7); - MP_WritePhyUshort(sc, 0x19, 0x9d04); - MP_WritePhyUshort(sc, 0x15, 0x02e8); - MP_WritePhyUshort(sc, 0x19, 0x48c4); - MP_WritePhyUshort(sc, 0x15, 0x02e9); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02ea); - MP_WritePhyUshort(sc, 0x19, 0x4844); - MP_WritePhyUshort(sc, 0x15, 0x02eb); - MP_WritePhyUshort(sc, 0x19, 0x7dc8); - MP_WritePhyUshort(sc, 0x15, 0x02f0); - MP_WritePhyUshort(sc, 0x19, 0x9cf7); - MP_WritePhyUshort(sc, 0x15, 0x02f1); - MP_WritePhyUshort(sc, 0x19, 0xdf94); - MP_WritePhyUshort(sc, 0x15, 0x02f2); - MP_WritePhyUshort(sc, 0x19, 0x0002); - MP_WritePhyUshort(sc, 0x15, 0x02f3); - MP_WritePhyUshort(sc, 0x19, 0x6810); - MP_WritePhyUshort(sc, 0x15, 0x02f4); - MP_WritePhyUshort(sc, 0x19, 0xb614); - MP_WritePhyUshort(sc, 0x15, 0x02f5); - MP_WritePhyUshort(sc, 0x19, 0xc42b); - MP_WritePhyUshort(sc, 0x15, 0x02f6); - MP_WritePhyUshort(sc, 0x19, 0x00d4); - MP_WritePhyUshort(sc, 0x15, 0x02f7); - MP_WritePhyUshort(sc, 0x19, 0xc455); - MP_WritePhyUshort(sc, 0x15, 0x02f8); - MP_WritePhyUshort(sc, 0x19, 0x0093); - MP_WritePhyUshort(sc, 0x15, 0x02f9); - MP_WritePhyUshort(sc, 0x19, 0x92ee); - MP_WritePhyUshort(sc, 0x15, 0x02fa); - MP_WritePhyUshort(sc, 0x19, 0xefed); - MP_WritePhyUshort(sc, 0x15, 0x02fb); - MP_WritePhyUshort(sc, 0x19, 0x3312); - MP_WritePhyUshort(sc, 0x15, 0x0312); - MP_WritePhyUshort(sc, 0x19, 0x49b5); - MP_WritePhyUshort(sc, 0x15, 0x0313); - MP_WritePhyUshort(sc, 0x19, 0x7d00); - MP_WritePhyUshort(sc, 0x15, 0x0314); - MP_WritePhyUshort(sc, 0x19, 0x4d00); - MP_WritePhyUshort(sc, 0x15, 0x0315); - MP_WritePhyUshort(sc, 0x19, 0x6810); - MP_WritePhyUshort(sc, 0x15, 0x031e); - MP_WritePhyUshort(sc, 0x19, 0x404f); - MP_WritePhyUshort(sc, 0x15, 0x031f); - MP_WritePhyUshort(sc, 0x19, 0x44c8); - MP_WritePhyUshort(sc, 0x15, 0x0320); - MP_WritePhyUshort(sc, 0x19, 0xd64f); - MP_WritePhyUshort(sc, 0x15, 0x0321); - MP_WritePhyUshort(sc, 0x19, 0x00e7); - MP_WritePhyUshort(sc, 0x15, 0x0322); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x0323); - MP_WritePhyUshort(sc, 0x19, 0x8203); - MP_WritePhyUshort(sc, 0x15, 0x0324); - MP_WritePhyUshort(sc, 0x19, 0x4d48); - MP_WritePhyUshort(sc, 0x15, 0x0325); - MP_WritePhyUshort(sc, 0x19, 0x3327); - MP_WritePhyUshort(sc, 0x15, 0x0326); - MP_WritePhyUshort(sc, 0x19, 0x4d40); - MP_WritePhyUshort(sc, 0x15, 0x0327); - MP_WritePhyUshort(sc, 0x19, 0xc8d7); - MP_WritePhyUshort(sc, 0x15, 0x0328); - MP_WritePhyUshort(sc, 0x19, 0x0003); - MP_WritePhyUshort(sc, 0x15, 0x0329); - MP_WritePhyUshort(sc, 0x19, 0x7c20); - MP_WritePhyUshort(sc, 0x15, 0x032a); - MP_WritePhyUshort(sc, 0x19, 0x4c20); - MP_WritePhyUshort(sc, 0x15, 0x032b); - MP_WritePhyUshort(sc, 0x19, 0xc8ed); - MP_WritePhyUshort(sc, 0x15, 0x032c); - MP_WritePhyUshort(sc, 0x19, 0x00f4); - MP_WritePhyUshort(sc, 0x15, 0x032d); - MP_WritePhyUshort(sc, 0x19, 0x82b3); - MP_WritePhyUshort(sc, 0x15, 0x032e); - MP_WritePhyUshort(sc, 0x19, 0xd11d); - MP_WritePhyUshort(sc, 0x15, 0x032f); - MP_WritePhyUshort(sc, 0x19, 0x00b1); - MP_WritePhyUshort(sc, 0x15, 0x0330); - MP_WritePhyUshort(sc, 0x19, 0xde18); - MP_WritePhyUshort(sc, 0x15, 0x0331); - MP_WritePhyUshort(sc, 0x19, 0x0008); - MP_WritePhyUshort(sc, 0x15, 0x0332); - MP_WritePhyUshort(sc, 0x19, 0x91ee); - MP_WritePhyUshort(sc, 0x15, 0x0333); - MP_WritePhyUshort(sc, 0x19, 0x3339); - MP_WritePhyUshort(sc, 0x15, 0x033a); - MP_WritePhyUshort(sc, 0x19, 0x4064); - MP_WritePhyUshort(sc, 0x15, 0x0340); - MP_WritePhyUshort(sc, 0x19, 0x9e06); - MP_WritePhyUshort(sc, 0x15, 0x0341); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x0342); - MP_WritePhyUshort(sc, 0x19, 0x8203); - MP_WritePhyUshort(sc, 0x15, 0x0343); - MP_WritePhyUshort(sc, 0x19, 0x4d48); - MP_WritePhyUshort(sc, 0x15, 0x0344); - MP_WritePhyUshort(sc, 0x19, 0x3346); - MP_WritePhyUshort(sc, 0x15, 0x0345); - MP_WritePhyUshort(sc, 0x19, 0x4d40); - MP_WritePhyUshort(sc, 0x15, 0x0346); - MP_WritePhyUshort(sc, 0x19, 0xd11d); - MP_WritePhyUshort(sc, 0x15, 0x0347); - MP_WritePhyUshort(sc, 0x19, 0x0099); - MP_WritePhyUshort(sc, 0x15, 0x0348); - MP_WritePhyUshort(sc, 0x19, 0xbb17); - MP_WritePhyUshort(sc, 0x15, 0x0349); - MP_WritePhyUshort(sc, 0x19, 0x8102); - MP_WritePhyUshort(sc, 0x15, 0x034a); - MP_WritePhyUshort(sc, 0x19, 0x334d); - MP_WritePhyUshort(sc, 0x15, 0x034b); - MP_WritePhyUshort(sc, 0x19, 0xa22c); - MP_WritePhyUshort(sc, 0x15, 0x034c); - MP_WritePhyUshort(sc, 0x19, 0x3397); - MP_WritePhyUshort(sc, 0x15, 0x034d); - MP_WritePhyUshort(sc, 0x19, 0x91f2); - MP_WritePhyUshort(sc, 0x15, 0x034e); - MP_WritePhyUshort(sc, 0x19, 0xc218); - MP_WritePhyUshort(sc, 0x15, 0x034f); - MP_WritePhyUshort(sc, 0x19, 0x00f0); - MP_WritePhyUshort(sc, 0x15, 0x0350); - MP_WritePhyUshort(sc, 0x19, 0x3397); - MP_WritePhyUshort(sc, 0x15, 0x0351); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0364); - MP_WritePhyUshort(sc, 0x19, 0xbc05); - MP_WritePhyUshort(sc, 0x15, 0x0367); - MP_WritePhyUshort(sc, 0x19, 0xa1fc); - MP_WritePhyUshort(sc, 0x15, 0x0368); - MP_WritePhyUshort(sc, 0x19, 0x3377); - MP_WritePhyUshort(sc, 0x15, 0x0369); - MP_WritePhyUshort(sc, 0x19, 0x328b); - MP_WritePhyUshort(sc, 0x15, 0x036a); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0377); - MP_WritePhyUshort(sc, 0x19, 0x4b97); - MP_WritePhyUshort(sc, 0x15, 0x0378); - MP_WritePhyUshort(sc, 0x19, 0x6818); - MP_WritePhyUshort(sc, 0x15, 0x0379); - MP_WritePhyUshort(sc, 0x19, 0x4b07); - MP_WritePhyUshort(sc, 0x15, 0x037a); - MP_WritePhyUshort(sc, 0x19, 0x40ac); - MP_WritePhyUshort(sc, 0x15, 0x037b); - MP_WritePhyUshort(sc, 0x19, 0x4445); - MP_WritePhyUshort(sc, 0x15, 0x037c); - MP_WritePhyUshort(sc, 0x19, 0x404e); - MP_WritePhyUshort(sc, 0x15, 0x037d); - MP_WritePhyUshort(sc, 0x19, 0x4461); - MP_WritePhyUshort(sc, 0x15, 0x037e); - MP_WritePhyUshort(sc, 0x19, 0x9c09); - MP_WritePhyUshort(sc, 0x15, 0x037f); - MP_WritePhyUshort(sc, 0x19, 0x63da); - MP_WritePhyUshort(sc, 0x15, 0x0380); - MP_WritePhyUshort(sc, 0x19, 0x5440); - MP_WritePhyUshort(sc, 0x15, 0x0381); - MP_WritePhyUshort(sc, 0x19, 0x4b98); - MP_WritePhyUshort(sc, 0x15, 0x0382); - MP_WritePhyUshort(sc, 0x19, 0x7c60); - MP_WritePhyUshort(sc, 0x15, 0x0383); - MP_WritePhyUshort(sc, 0x19, 0x4c00); - MP_WritePhyUshort(sc, 0x15, 0x0384); - MP_WritePhyUshort(sc, 0x19, 0x4b08); - MP_WritePhyUshort(sc, 0x15, 0x0385); - MP_WritePhyUshort(sc, 0x19, 0x63d8); - MP_WritePhyUshort(sc, 0x15, 0x0386); - MP_WritePhyUshort(sc, 0x19, 0x338d); - MP_WritePhyUshort(sc, 0x15, 0x0387); - MP_WritePhyUshort(sc, 0x19, 0xd64f); - MP_WritePhyUshort(sc, 0x15, 0x0388); - MP_WritePhyUshort(sc, 0x19, 0x0080); - MP_WritePhyUshort(sc, 0x15, 0x0389); - MP_WritePhyUshort(sc, 0x19, 0x820c); - MP_WritePhyUshort(sc, 0x15, 0x038a); - MP_WritePhyUshort(sc, 0x19, 0xa10b); - MP_WritePhyUshort(sc, 0x15, 0x038b); - MP_WritePhyUshort(sc, 0x19, 0x9df3); - MP_WritePhyUshort(sc, 0x15, 0x038c); - MP_WritePhyUshort(sc, 0x19, 0x3395); - MP_WritePhyUshort(sc, 0x15, 0x038d); - MP_WritePhyUshort(sc, 0x19, 0xd64f); - MP_WritePhyUshort(sc, 0x15, 0x038e); - MP_WritePhyUshort(sc, 0x19, 0x00f9); - MP_WritePhyUshort(sc, 0x15, 0x038f); - MP_WritePhyUshort(sc, 0x19, 0xc017); - MP_WritePhyUshort(sc, 0x15, 0x0390); - MP_WritePhyUshort(sc, 0x19, 0x0005); - MP_WritePhyUshort(sc, 0x15, 0x0391); - MP_WritePhyUshort(sc, 0x19, 0x6c0b); - MP_WritePhyUshort(sc, 0x15, 0x0392); - MP_WritePhyUshort(sc, 0x19, 0xa103); - MP_WritePhyUshort(sc, 0x15, 0x0393); - MP_WritePhyUshort(sc, 0x19, 0x6c08); - MP_WritePhyUshort(sc, 0x15, 0x0394); - MP_WritePhyUshort(sc, 0x19, 0x9df9); - MP_WritePhyUshort(sc, 0x15, 0x0395); - MP_WritePhyUshort(sc, 0x19, 0x6c08); - MP_WritePhyUshort(sc, 0x15, 0x0396); - MP_WritePhyUshort(sc, 0x19, 0x3397); - MP_WritePhyUshort(sc, 0x15, 0x0399); - MP_WritePhyUshort(sc, 0x19, 0x6810); - MP_WritePhyUshort(sc, 0x15, 0x03a4); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x03a5); - MP_WritePhyUshort(sc, 0x19, 0x8203); - MP_WritePhyUshort(sc, 0x15, 0x03a6); - MP_WritePhyUshort(sc, 0x19, 0x4d08); - MP_WritePhyUshort(sc, 0x15, 0x03a7); - MP_WritePhyUshort(sc, 0x19, 0x33a9); - MP_WritePhyUshort(sc, 0x15, 0x03a8); - MP_WritePhyUshort(sc, 0x19, 0x4d00); - MP_WritePhyUshort(sc, 0x15, 0x03a9); - MP_WritePhyUshort(sc, 0x19, 0x9bfa); - MP_WritePhyUshort(sc, 0x15, 0x03aa); - MP_WritePhyUshort(sc, 0x19, 0x33b6); - MP_WritePhyUshort(sc, 0x15, 0x03bb); - MP_WritePhyUshort(sc, 0x19, 0x4056); - MP_WritePhyUshort(sc, 0x15, 0x03bc); - MP_WritePhyUshort(sc, 0x19, 0x44e9); - MP_WritePhyUshort(sc, 0x15, 0x03bd); - MP_WritePhyUshort(sc, 0x19, 0x405e); - MP_WritePhyUshort(sc, 0x15, 0x03be); - MP_WritePhyUshort(sc, 0x19, 0x44f8); - MP_WritePhyUshort(sc, 0x15, 0x03bf); - MP_WritePhyUshort(sc, 0x19, 0xd64f); - MP_WritePhyUshort(sc, 0x15, 0x03c0); - MP_WritePhyUshort(sc, 0x19, 0x0037); - MP_WritePhyUshort(sc, 0x15, 0x03c1); - MP_WritePhyUshort(sc, 0x19, 0xbd37); - MP_WritePhyUshort(sc, 0x15, 0x03c2); - MP_WritePhyUshort(sc, 0x19, 0x9cfd); - MP_WritePhyUshort(sc, 0x15, 0x03c3); - MP_WritePhyUshort(sc, 0x19, 0xc639); - MP_WritePhyUshort(sc, 0x15, 0x03c4); - MP_WritePhyUshort(sc, 0x19, 0x0011); - MP_WritePhyUshort(sc, 0x15, 0x03c5); - MP_WritePhyUshort(sc, 0x19, 0x9b03); - MP_WritePhyUshort(sc, 0x15, 0x03c6); - MP_WritePhyUshort(sc, 0x19, 0x7c01); - MP_WritePhyUshort(sc, 0x15, 0x03c7); - MP_WritePhyUshort(sc, 0x19, 0x4c01); - MP_WritePhyUshort(sc, 0x15, 0x03c8); - MP_WritePhyUshort(sc, 0x19, 0x9e03); - MP_WritePhyUshort(sc, 0x15, 0x03c9); - MP_WritePhyUshort(sc, 0x19, 0x7c20); - MP_WritePhyUshort(sc, 0x15, 0x03ca); - MP_WritePhyUshort(sc, 0x19, 0x4c20); - MP_WritePhyUshort(sc, 0x15, 0x03cb); - MP_WritePhyUshort(sc, 0x19, 0x9af4); - MP_WritePhyUshort(sc, 0x15, 0x03cc); - MP_WritePhyUshort(sc, 0x19, 0x7c12); - MP_WritePhyUshort(sc, 0x15, 0x03cd); - MP_WritePhyUshort(sc, 0x19, 0x4c52); - MP_WritePhyUshort(sc, 0x15, 0x03ce); - MP_WritePhyUshort(sc, 0x19, 0x4470); - MP_WritePhyUshort(sc, 0x15, 0x03cf); - MP_WritePhyUshort(sc, 0x19, 0x7c12); - MP_WritePhyUshort(sc, 0x15, 0x03d0); - MP_WritePhyUshort(sc, 0x19, 0x4c40); - MP_WritePhyUshort(sc, 0x15, 0x03d1); - MP_WritePhyUshort(sc, 0x19, 0x33bf); - MP_WritePhyUshort(sc, 0x15, 0x03d6); - MP_WritePhyUshort(sc, 0x19, 0x4047); - MP_WritePhyUshort(sc, 0x15, 0x03d7); - MP_WritePhyUshort(sc, 0x19, 0x4469); - MP_WritePhyUshort(sc, 0x15, 0x03d8); - MP_WritePhyUshort(sc, 0x19, 0x492b); - MP_WritePhyUshort(sc, 0x15, 0x03d9); - MP_WritePhyUshort(sc, 0x19, 0x4479); - MP_WritePhyUshort(sc, 0x15, 0x03da); - MP_WritePhyUshort(sc, 0x19, 0x7c09); - MP_WritePhyUshort(sc, 0x15, 0x03db); - MP_WritePhyUshort(sc, 0x19, 0x8203); - MP_WritePhyUshort(sc, 0x15, 0x03dc); - MP_WritePhyUshort(sc, 0x19, 0x4d48); - MP_WritePhyUshort(sc, 0x15, 0x03dd); - MP_WritePhyUshort(sc, 0x19, 0x33df); - MP_WritePhyUshort(sc, 0x15, 0x03de); - MP_WritePhyUshort(sc, 0x19, 0x4d40); - MP_WritePhyUshort(sc, 0x15, 0x03df); - MP_WritePhyUshort(sc, 0x19, 0xd64f); - MP_WritePhyUshort(sc, 0x15, 0x03e0); - MP_WritePhyUshort(sc, 0x19, 0x0017); - MP_WritePhyUshort(sc, 0x15, 0x03e1); - MP_WritePhyUshort(sc, 0x19, 0xbd17); - MP_WritePhyUshort(sc, 0x15, 0x03e2); - MP_WritePhyUshort(sc, 0x19, 0x9b03); - MP_WritePhyUshort(sc, 0x15, 0x03e3); - MP_WritePhyUshort(sc, 0x19, 0x7c20); - MP_WritePhyUshort(sc, 0x15, 0x03e4); - MP_WritePhyUshort(sc, 0x19, 0x4c20); - MP_WritePhyUshort(sc, 0x15, 0x03e5); - MP_WritePhyUshort(sc, 0x19, 0x88f5); - MP_WritePhyUshort(sc, 0x15, 0x03e6); - MP_WritePhyUshort(sc, 0x19, 0xc428); - MP_WritePhyUshort(sc, 0x15, 0x03e7); - MP_WritePhyUshort(sc, 0x19, 0x0008); - MP_WritePhyUshort(sc, 0x15, 0x03e8); - MP_WritePhyUshort(sc, 0x19, 0x9af2); - MP_WritePhyUshort(sc, 0x15, 0x03e9); - MP_WritePhyUshort(sc, 0x19, 0x7c12); - MP_WritePhyUshort(sc, 0x15, 0x03ea); - MP_WritePhyUshort(sc, 0x19, 0x4c52); - MP_WritePhyUshort(sc, 0x15, 0x03eb); - MP_WritePhyUshort(sc, 0x19, 0x4470); - MP_WritePhyUshort(sc, 0x15, 0x03ec); - MP_WritePhyUshort(sc, 0x19, 0x7c12); - MP_WritePhyUshort(sc, 0x15, 0x03ed); - MP_WritePhyUshort(sc, 0x19, 0x4c40); - MP_WritePhyUshort(sc, 0x15, 0x03ee); - MP_WritePhyUshort(sc, 0x19, 0x33da); - MP_WritePhyUshort(sc, 0x15, 0x03ef); - MP_WritePhyUshort(sc, 0x19, 0x3312); - MP_WritePhyUshort(sc, 0x16, 0x0306); - MP_WritePhyUshort(sc, 0x16, 0x0300); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x17, 0x2179); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0040); - MP_WritePhyUshort(sc, 0x18, 0x0645); - MP_WritePhyUshort(sc, 0x19, 0xe200); - MP_WritePhyUshort(sc, 0x18, 0x0655); - MP_WritePhyUshort(sc, 0x19, 0x9000); - MP_WritePhyUshort(sc, 0x18, 0x0d05); - MP_WritePhyUshort(sc, 0x19, 0xbe00); - MP_WritePhyUshort(sc, 0x18, 0x0d15); - MP_WritePhyUshort(sc, 0x19, 0xd300); - MP_WritePhyUshort(sc, 0x18, 0x0d25); - MP_WritePhyUshort(sc, 0x19, 0xfe00); - MP_WritePhyUshort(sc, 0x18, 0x0d35); - MP_WritePhyUshort(sc, 0x19, 0x4000); - MP_WritePhyUshort(sc, 0x18, 0x0d45); - MP_WritePhyUshort(sc, 0x19, 0x7f00); - MP_WritePhyUshort(sc, 0x18, 0x0d55); - MP_WritePhyUshort(sc, 0x19, 0x1000); - MP_WritePhyUshort(sc, 0x18, 0x0d65); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x0d75); - MP_WritePhyUshort(sc, 0x19, 0x8200); - MP_WritePhyUshort(sc, 0x18, 0x0d85); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x0d95); - MP_WritePhyUshort(sc, 0x19, 0x7000); - MP_WritePhyUshort(sc, 0x18, 0x0da5); - MP_WritePhyUshort(sc, 0x19, 0x0f00); - MP_WritePhyUshort(sc, 0x18, 0x0db5); - MP_WritePhyUshort(sc, 0x19, 0x0100); - MP_WritePhyUshort(sc, 0x18, 0x0dc5); - MP_WritePhyUshort(sc, 0x19, 0x9b00); - MP_WritePhyUshort(sc, 0x18, 0x0dd5); - MP_WritePhyUshort(sc, 0x19, 0x7f00); - MP_WritePhyUshort(sc, 0x18, 0x0de5); - MP_WritePhyUshort(sc, 0x19, 0xe000); - MP_WritePhyUshort(sc, 0x18, 0x0df5); - MP_WritePhyUshort(sc, 0x19, 0xef00); - MP_WritePhyUshort(sc, 0x18, 0x16d5); - MP_WritePhyUshort(sc, 0x19, 0xe200); - MP_WritePhyUshort(sc, 0x18, 0x16e5); - MP_WritePhyUshort(sc, 0x19, 0xab00); - MP_WritePhyUshort(sc, 0x18, 0x2904); - MP_WritePhyUshort(sc, 0x19, 0x4000); - MP_WritePhyUshort(sc, 0x18, 0x2914); - MP_WritePhyUshort(sc, 0x19, 0x7f00); - MP_WritePhyUshort(sc, 0x18, 0x2924); - MP_WritePhyUshort(sc, 0x19, 0x0100); - MP_WritePhyUshort(sc, 0x18, 0x2934); - MP_WritePhyUshort(sc, 0x19, 0x2000); - MP_WritePhyUshort(sc, 0x18, 0x2944); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x2954); - MP_WritePhyUshort(sc, 0x19, 0x4600); - MP_WritePhyUshort(sc, 0x18, 0x2964); - MP_WritePhyUshort(sc, 0x19, 0xfc00); - MP_WritePhyUshort(sc, 0x18, 0x2974); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x2984); - MP_WritePhyUshort(sc, 0x19, 0x5000); - MP_WritePhyUshort(sc, 0x18, 0x2994); - MP_WritePhyUshort(sc, 0x19, 0x9d00); - MP_WritePhyUshort(sc, 0x18, 0x29a4); - MP_WritePhyUshort(sc, 0x19, 0xff00); - MP_WritePhyUshort(sc, 0x18, 0x29b4); - MP_WritePhyUshort(sc, 0x19, 0x4000); - MP_WritePhyUshort(sc, 0x18, 0x29c4); - MP_WritePhyUshort(sc, 0x19, 0x7f00); - MP_WritePhyUshort(sc, 0x18, 0x29d4); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x29e4); - MP_WritePhyUshort(sc, 0x19, 0x2000); - MP_WritePhyUshort(sc, 0x18, 0x29f4); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x2a04); - MP_WritePhyUshort(sc, 0x19, 0xe600); - MP_WritePhyUshort(sc, 0x18, 0x2a14); - MP_WritePhyUshort(sc, 0x19, 0xff00); - MP_WritePhyUshort(sc, 0x18, 0x2a24); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x2a34); - MP_WritePhyUshort(sc, 0x19, 0x5000); - MP_WritePhyUshort(sc, 0x18, 0x2a44); - MP_WritePhyUshort(sc, 0x19, 0x8500); - MP_WritePhyUshort(sc, 0x18, 0x2a54); - MP_WritePhyUshort(sc, 0x19, 0x7f00); - MP_WritePhyUshort(sc, 0x18, 0x2a64); - MP_WritePhyUshort(sc, 0x19, 0xac00); - MP_WritePhyUshort(sc, 0x18, 0x2a74); - MP_WritePhyUshort(sc, 0x19, 0x0800); - MP_WritePhyUshort(sc, 0x18, 0x2a84); - MP_WritePhyUshort(sc, 0x19, 0xfc00); - MP_WritePhyUshort(sc, 0x18, 0x2a94); - MP_WritePhyUshort(sc, 0x19, 0xe000); - MP_WritePhyUshort(sc, 0x18, 0x2aa4); - MP_WritePhyUshort(sc, 0x19, 0x7400); - MP_WritePhyUshort(sc, 0x18, 0x2ab4); - MP_WritePhyUshort(sc, 0x19, 0x4000); - MP_WritePhyUshort(sc, 0x18, 0x2ac4); - MP_WritePhyUshort(sc, 0x19, 0x7f00); - MP_WritePhyUshort(sc, 0x18, 0x2ad4); - MP_WritePhyUshort(sc, 0x19, 0x0100); - MP_WritePhyUshort(sc, 0x18, 0x2ae4); - MP_WritePhyUshort(sc, 0x19, 0xff00); - MP_WritePhyUshort(sc, 0x18, 0x2af4); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x2b04); - MP_WritePhyUshort(sc, 0x19, 0x4400); - MP_WritePhyUshort(sc, 0x18, 0x2b14); - MP_WritePhyUshort(sc, 0x19, 0xfc00); - MP_WritePhyUshort(sc, 0x18, 0x2b24); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x2b34); - MP_WritePhyUshort(sc, 0x19, 0x4000); - MP_WritePhyUshort(sc, 0x18, 0x2b44); - MP_WritePhyUshort(sc, 0x19, 0x9d00); - MP_WritePhyUshort(sc, 0x18, 0x2b54); - MP_WritePhyUshort(sc, 0x19, 0xff00); - MP_WritePhyUshort(sc, 0x18, 0x2b64); - MP_WritePhyUshort(sc, 0x19, 0x4000); - MP_WritePhyUshort(sc, 0x18, 0x2b74); - MP_WritePhyUshort(sc, 0x19, 0x7f00); - MP_WritePhyUshort(sc, 0x18, 0x2b84); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x2b94); - MP_WritePhyUshort(sc, 0x19, 0xff00); - MP_WritePhyUshort(sc, 0x18, 0x2ba4); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x2bb4); - MP_WritePhyUshort(sc, 0x19, 0xfc00); - MP_WritePhyUshort(sc, 0x18, 0x2bc4); - MP_WritePhyUshort(sc, 0x19, 0xff00); - MP_WritePhyUshort(sc, 0x18, 0x2bd4); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x2be4); - MP_WritePhyUshort(sc, 0x19, 0x4000); - MP_WritePhyUshort(sc, 0x18, 0x2bf4); - MP_WritePhyUshort(sc, 0x19, 0x8900); - MP_WritePhyUshort(sc, 0x18, 0x2c04); - MP_WritePhyUshort(sc, 0x19, 0x8300); - MP_WritePhyUshort(sc, 0x18, 0x2c14); - MP_WritePhyUshort(sc, 0x19, 0xe000); - MP_WritePhyUshort(sc, 0x18, 0x2c24); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x2c34); - MP_WritePhyUshort(sc, 0x19, 0xac00); - MP_WritePhyUshort(sc, 0x18, 0x2c44); - MP_WritePhyUshort(sc, 0x19, 0x0800); - MP_WritePhyUshort(sc, 0x18, 0x2c54); - MP_WritePhyUshort(sc, 0x19, 0xfa00); - MP_WritePhyUshort(sc, 0x18, 0x2c64); - MP_WritePhyUshort(sc, 0x19, 0xe100); - MP_WritePhyUshort(sc, 0x18, 0x2c74); - MP_WritePhyUshort(sc, 0x19, 0x7f00); - MP_WritePhyUshort(sc, 0x18, 0x0001); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x17, 0x2100); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x0080); - MP_WritePhyUshort(sc, 0x05, 0x8b88); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x05, 0x8000); - MP_WritePhyUshort(sc, 0x06, 0xd480); - MP_WritePhyUshort(sc, 0x06, 0xc1e4); - MP_WritePhyUshort(sc, 0x06, 0x8b9a); - MP_WritePhyUshort(sc, 0x06, 0xe58b); - MP_WritePhyUshort(sc, 0x06, 0x9bee); - MP_WritePhyUshort(sc, 0x06, 0x8b83); - MP_WritePhyUshort(sc, 0x06, 0x41bf); - MP_WritePhyUshort(sc, 0x06, 0x8b88); - MP_WritePhyUshort(sc, 0x06, 0xec00); - MP_WritePhyUshort(sc, 0x06, 0x19a9); - MP_WritePhyUshort(sc, 0x06, 0x8b90); - MP_WritePhyUshort(sc, 0x06, 0xf9ee); - MP_WritePhyUshort(sc, 0x06, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0xfff7); - MP_WritePhyUshort(sc, 0x06, 0xffe0); - MP_WritePhyUshort(sc, 0x06, 0xe140); - MP_WritePhyUshort(sc, 0x06, 0xe1e1); - MP_WritePhyUshort(sc, 0x06, 0x41f7); - MP_WritePhyUshort(sc, 0x06, 0x2ff6); - MP_WritePhyUshort(sc, 0x06, 0x28e4); - MP_WritePhyUshort(sc, 0x06, 0xe140); - MP_WritePhyUshort(sc, 0x06, 0xe5e1); - MP_WritePhyUshort(sc, 0x06, 0x41f7); - MP_WritePhyUshort(sc, 0x06, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x020c); - MP_WritePhyUshort(sc, 0x06, 0x0202); - MP_WritePhyUshort(sc, 0x06, 0x1d02); - MP_WritePhyUshort(sc, 0x06, 0x0230); - MP_WritePhyUshort(sc, 0x06, 0x0202); - MP_WritePhyUshort(sc, 0x06, 0x4002); - MP_WritePhyUshort(sc, 0x06, 0x028b); - MP_WritePhyUshort(sc, 0x06, 0x0280); - MP_WritePhyUshort(sc, 0x06, 0x6c02); - MP_WritePhyUshort(sc, 0x06, 0x8085); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x88e1); - MP_WritePhyUshort(sc, 0x06, 0x8b89); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8a1e); - MP_WritePhyUshort(sc, 0x06, 0x01e1); - MP_WritePhyUshort(sc, 0x06, 0x8b8b); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8c1e); - MP_WritePhyUshort(sc, 0x06, 0x01e1); - MP_WritePhyUshort(sc, 0x06, 0x8b8d); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8e1e); - MP_WritePhyUshort(sc, 0x06, 0x01a0); - MP_WritePhyUshort(sc, 0x06, 0x00c7); - MP_WritePhyUshort(sc, 0x06, 0xaec3); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b8d); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x10ee); - MP_WritePhyUshort(sc, 0x06, 0x8b8d); - MP_WritePhyUshort(sc, 0x06, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x1310); - MP_WritePhyUshort(sc, 0x06, 0x021f); - MP_WritePhyUshort(sc, 0x06, 0x9d02); - MP_WritePhyUshort(sc, 0x06, 0x1f0c); - MP_WritePhyUshort(sc, 0x06, 0x0227); - MP_WritePhyUshort(sc, 0x06, 0x49fc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x200b); - MP_WritePhyUshort(sc, 0x06, 0xf620); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x830e); - MP_WritePhyUshort(sc, 0x06, 0x021b); - MP_WritePhyUshort(sc, 0x06, 0x67ad); - MP_WritePhyUshort(sc, 0x06, 0x2211); - MP_WritePhyUshort(sc, 0x06, 0xf622); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x2ba5); - MP_WritePhyUshort(sc, 0x06, 0x022a); - MP_WritePhyUshort(sc, 0x06, 0x2402); - MP_WritePhyUshort(sc, 0x06, 0x80c6); - MP_WritePhyUshort(sc, 0x06, 0x022a); - MP_WritePhyUshort(sc, 0x06, 0xf0ad); - MP_WritePhyUshort(sc, 0x06, 0x2511); - MP_WritePhyUshort(sc, 0x06, 0xf625); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x8226); - MP_WritePhyUshort(sc, 0x06, 0x0204); - MP_WritePhyUshort(sc, 0x06, 0x0302); - MP_WritePhyUshort(sc, 0x06, 0x19cc); - MP_WritePhyUshort(sc, 0x06, 0x022b); - MP_WritePhyUshort(sc, 0x06, 0x5bfc); - MP_WritePhyUshort(sc, 0x06, 0x04ee); - MP_WritePhyUshort(sc, 0x06, 0x8b8d); - MP_WritePhyUshort(sc, 0x06, 0x0105); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b83); - MP_WritePhyUshort(sc, 0x06, 0xad24); - MP_WritePhyUshort(sc, 0x06, 0x44e0); - MP_WritePhyUshort(sc, 0x06, 0xe022); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x23ad); - MP_WritePhyUshort(sc, 0x06, 0x223b); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xbea0); - MP_WritePhyUshort(sc, 0x06, 0x0005); - MP_WritePhyUshort(sc, 0x06, 0x0228); - MP_WritePhyUshort(sc, 0x06, 0xdeae); - MP_WritePhyUshort(sc, 0x06, 0x42a0); - MP_WritePhyUshort(sc, 0x06, 0x0105); - MP_WritePhyUshort(sc, 0x06, 0x0228); - MP_WritePhyUshort(sc, 0x06, 0xf1ae); - MP_WritePhyUshort(sc, 0x06, 0x3aa0); - MP_WritePhyUshort(sc, 0x06, 0x0205); - MP_WritePhyUshort(sc, 0x06, 0x0281); - MP_WritePhyUshort(sc, 0x06, 0x25ae); - MP_WritePhyUshort(sc, 0x06, 0x32a0); - MP_WritePhyUshort(sc, 0x06, 0x0305); - MP_WritePhyUshort(sc, 0x06, 0x0229); - MP_WritePhyUshort(sc, 0x06, 0x9aae); - MP_WritePhyUshort(sc, 0x06, 0x2aa0); - MP_WritePhyUshort(sc, 0x06, 0x0405); - MP_WritePhyUshort(sc, 0x06, 0x0229); - MP_WritePhyUshort(sc, 0x06, 0xaeae); - MP_WritePhyUshort(sc, 0x06, 0x22a0); - MP_WritePhyUshort(sc, 0x06, 0x0505); - MP_WritePhyUshort(sc, 0x06, 0x0229); - MP_WritePhyUshort(sc, 0x06, 0xd7ae); - MP_WritePhyUshort(sc, 0x06, 0x1aa0); - MP_WritePhyUshort(sc, 0x06, 0x0605); - MP_WritePhyUshort(sc, 0x06, 0x0229); - MP_WritePhyUshort(sc, 0x06, 0xfeae); - MP_WritePhyUshort(sc, 0x06, 0x12ee); - MP_WritePhyUshort(sc, 0x06, 0x8ac0); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x8ac1); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x8ac6); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x8abe); - MP_WritePhyUshort(sc, 0x06, 0x00ae); - MP_WritePhyUshort(sc, 0x06, 0x00fc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0x022a); - MP_WritePhyUshort(sc, 0x06, 0x67e0); - MP_WritePhyUshort(sc, 0x06, 0xe022); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x230d); - MP_WritePhyUshort(sc, 0x06, 0x0658); - MP_WritePhyUshort(sc, 0x06, 0x03a0); - MP_WritePhyUshort(sc, 0x06, 0x0202); - MP_WritePhyUshort(sc, 0x06, 0xae2d); - MP_WritePhyUshort(sc, 0x06, 0xa001); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x2da0); - MP_WritePhyUshort(sc, 0x06, 0x004d); - MP_WritePhyUshort(sc, 0x06, 0xe0e2); - MP_WritePhyUshort(sc, 0x06, 0x00e1); - MP_WritePhyUshort(sc, 0x06, 0xe201); - MP_WritePhyUshort(sc, 0x06, 0xad24); - MP_WritePhyUshort(sc, 0x06, 0x44e0); - MP_WritePhyUshort(sc, 0x06, 0x8ac2); - MP_WritePhyUshort(sc, 0x06, 0xe48a); - MP_WritePhyUshort(sc, 0x06, 0xc4e0); - MP_WritePhyUshort(sc, 0x06, 0x8ac3); - MP_WritePhyUshort(sc, 0x06, 0xe48a); - MP_WritePhyUshort(sc, 0x06, 0xc5ee); - MP_WritePhyUshort(sc, 0x06, 0x8abe); - MP_WritePhyUshort(sc, 0x06, 0x03e0); - MP_WritePhyUshort(sc, 0x06, 0x8b83); - MP_WritePhyUshort(sc, 0x06, 0xad25); - MP_WritePhyUshort(sc, 0x06, 0x3aee); - MP_WritePhyUshort(sc, 0x06, 0x8abe); - MP_WritePhyUshort(sc, 0x06, 0x05ae); - MP_WritePhyUshort(sc, 0x06, 0x34e0); - MP_WritePhyUshort(sc, 0x06, 0x8ace); - MP_WritePhyUshort(sc, 0x06, 0xae03); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xcfe1); - MP_WritePhyUshort(sc, 0x06, 0x8ac2); - MP_WritePhyUshort(sc, 0x06, 0x4905); - MP_WritePhyUshort(sc, 0x06, 0xe58a); - MP_WritePhyUshort(sc, 0x06, 0xc4e1); - MP_WritePhyUshort(sc, 0x06, 0x8ac3); - MP_WritePhyUshort(sc, 0x06, 0x4905); - MP_WritePhyUshort(sc, 0x06, 0xe58a); - MP_WritePhyUshort(sc, 0x06, 0xc5ee); - MP_WritePhyUshort(sc, 0x06, 0x8abe); - MP_WritePhyUshort(sc, 0x06, 0x0502); - MP_WritePhyUshort(sc, 0x06, 0x2ab6); - MP_WritePhyUshort(sc, 0x06, 0xac20); - MP_WritePhyUshort(sc, 0x06, 0x1202); - MP_WritePhyUshort(sc, 0x06, 0x819b); - MP_WritePhyUshort(sc, 0x06, 0xac20); - MP_WritePhyUshort(sc, 0x06, 0x0cee); - MP_WritePhyUshort(sc, 0x06, 0x8ac1); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x8ac6); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x8abe); - MP_WritePhyUshort(sc, 0x06, 0x02fc); - MP_WritePhyUshort(sc, 0x06, 0x04d0); - MP_WritePhyUshort(sc, 0x06, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x590f); - MP_WritePhyUshort(sc, 0x06, 0x3902); - MP_WritePhyUshort(sc, 0x06, 0xaa04); - MP_WritePhyUshort(sc, 0x06, 0xd001); - MP_WritePhyUshort(sc, 0x06, 0xae02); - MP_WritePhyUshort(sc, 0x06, 0xd000); - MP_WritePhyUshort(sc, 0x06, 0x04f9); - MP_WritePhyUshort(sc, 0x06, 0xfae2); - MP_WritePhyUshort(sc, 0x06, 0xe2d2); - MP_WritePhyUshort(sc, 0x06, 0xe3e2); - MP_WritePhyUshort(sc, 0x06, 0xd3f9); - MP_WritePhyUshort(sc, 0x06, 0x5af7); - MP_WritePhyUshort(sc, 0x06, 0xe6e2); - MP_WritePhyUshort(sc, 0x06, 0xd2e7); - MP_WritePhyUshort(sc, 0x06, 0xe2d3); - MP_WritePhyUshort(sc, 0x06, 0xe2e0); - MP_WritePhyUshort(sc, 0x06, 0x2ce3); - MP_WritePhyUshort(sc, 0x06, 0xe02d); - MP_WritePhyUshort(sc, 0x06, 0xf95b); - MP_WritePhyUshort(sc, 0x06, 0xe01e); - MP_WritePhyUshort(sc, 0x06, 0x30e6); - MP_WritePhyUshort(sc, 0x06, 0xe02c); - MP_WritePhyUshort(sc, 0x06, 0xe7e0); - MP_WritePhyUshort(sc, 0x06, 0x2de2); - MP_WritePhyUshort(sc, 0x06, 0xe2cc); - MP_WritePhyUshort(sc, 0x06, 0xe3e2); - MP_WritePhyUshort(sc, 0x06, 0xcdf9); - MP_WritePhyUshort(sc, 0x06, 0x5a0f); - MP_WritePhyUshort(sc, 0x06, 0x6a50); - MP_WritePhyUshort(sc, 0x06, 0xe6e2); - MP_WritePhyUshort(sc, 0x06, 0xcce7); - MP_WritePhyUshort(sc, 0x06, 0xe2cd); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x3ce1); - MP_WritePhyUshort(sc, 0x06, 0xe03d); - MP_WritePhyUshort(sc, 0x06, 0xef64); - MP_WritePhyUshort(sc, 0x06, 0xfde0); - MP_WritePhyUshort(sc, 0x06, 0xe2cc); - MP_WritePhyUshort(sc, 0x06, 0xe1e2); - MP_WritePhyUshort(sc, 0x06, 0xcd58); - MP_WritePhyUshort(sc, 0x06, 0x0f5a); - MP_WritePhyUshort(sc, 0x06, 0xf01e); - MP_WritePhyUshort(sc, 0x06, 0x02e4); - MP_WritePhyUshort(sc, 0x06, 0xe2cc); - MP_WritePhyUshort(sc, 0x06, 0xe5e2); - MP_WritePhyUshort(sc, 0x06, 0xcdfd); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x2ce1); - MP_WritePhyUshort(sc, 0x06, 0xe02d); - MP_WritePhyUshort(sc, 0x06, 0x59e0); - MP_WritePhyUshort(sc, 0x06, 0x5b1f); - MP_WritePhyUshort(sc, 0x06, 0x1e13); - MP_WritePhyUshort(sc, 0x06, 0xe4e0); - MP_WritePhyUshort(sc, 0x06, 0x2ce5); - MP_WritePhyUshort(sc, 0x06, 0xe02d); - MP_WritePhyUshort(sc, 0x06, 0xfde0); - MP_WritePhyUshort(sc, 0x06, 0xe2d2); - MP_WritePhyUshort(sc, 0x06, 0xe1e2); - MP_WritePhyUshort(sc, 0x06, 0xd358); - MP_WritePhyUshort(sc, 0x06, 0xf75a); - MP_WritePhyUshort(sc, 0x06, 0x081e); - MP_WritePhyUshort(sc, 0x06, 0x02e4); - MP_WritePhyUshort(sc, 0x06, 0xe2d2); - MP_WritePhyUshort(sc, 0x06, 0xe5e2); - MP_WritePhyUshort(sc, 0x06, 0xd3ef); - MP_WritePhyUshort(sc, 0x06, 0x46fe); - MP_WritePhyUshort(sc, 0x06, 0xfd04); - MP_WritePhyUshort(sc, 0x06, 0xf8f9); - MP_WritePhyUshort(sc, 0x06, 0xfaef); - MP_WritePhyUshort(sc, 0x06, 0x69e0); - MP_WritePhyUshort(sc, 0x06, 0xe022); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x2358); - MP_WritePhyUshort(sc, 0x06, 0xc4e1); - MP_WritePhyUshort(sc, 0x06, 0x8b6e); - MP_WritePhyUshort(sc, 0x06, 0x1f10); - MP_WritePhyUshort(sc, 0x06, 0x9e58); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x6ead); - MP_WritePhyUshort(sc, 0x06, 0x2222); - MP_WritePhyUshort(sc, 0x06, 0xac27); - MP_WritePhyUshort(sc, 0x06, 0x55ac); - MP_WritePhyUshort(sc, 0x06, 0x2602); - MP_WritePhyUshort(sc, 0x06, 0xae1a); - MP_WritePhyUshort(sc, 0x06, 0xd106); - MP_WritePhyUshort(sc, 0x06, 0xbf3b); - MP_WritePhyUshort(sc, 0x06, 0xba02); - MP_WritePhyUshort(sc, 0x06, 0x2dc1); - MP_WritePhyUshort(sc, 0x06, 0xd107); - MP_WritePhyUshort(sc, 0x06, 0xbf3b); - MP_WritePhyUshort(sc, 0x06, 0xbd02); - MP_WritePhyUshort(sc, 0x06, 0x2dc1); - MP_WritePhyUshort(sc, 0x06, 0xd107); - MP_WritePhyUshort(sc, 0x06, 0xbf3b); - MP_WritePhyUshort(sc, 0x06, 0xc002); - MP_WritePhyUshort(sc, 0x06, 0x2dc1); - MP_WritePhyUshort(sc, 0x06, 0xae30); - MP_WritePhyUshort(sc, 0x06, 0xd103); - MP_WritePhyUshort(sc, 0x06, 0xbf3b); - MP_WritePhyUshort(sc, 0x06, 0xc302); - MP_WritePhyUshort(sc, 0x06, 0x2dc1); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf3b); - MP_WritePhyUshort(sc, 0x06, 0xc602); - MP_WritePhyUshort(sc, 0x06, 0x2dc1); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf82); - MP_WritePhyUshort(sc, 0x06, 0xca02); - MP_WritePhyUshort(sc, 0x06, 0x2dc1); - MP_WritePhyUshort(sc, 0x06, 0xd10f); - MP_WritePhyUshort(sc, 0x06, 0xbf3b); - MP_WritePhyUshort(sc, 0x06, 0xba02); - MP_WritePhyUshort(sc, 0x06, 0x2dc1); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xbf3b); - MP_WritePhyUshort(sc, 0x06, 0xbd02); - MP_WritePhyUshort(sc, 0x06, 0x2dc1); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xbf3b); - MP_WritePhyUshort(sc, 0x06, 0xc002); - MP_WritePhyUshort(sc, 0x06, 0x2dc1); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefd); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf3b); - MP_WritePhyUshort(sc, 0x06, 0xc302); - MP_WritePhyUshort(sc, 0x06, 0x2dc1); - MP_WritePhyUshort(sc, 0x06, 0xd011); - MP_WritePhyUshort(sc, 0x06, 0x022b); - MP_WritePhyUshort(sc, 0x06, 0xfb59); - MP_WritePhyUshort(sc, 0x06, 0x03ef); - MP_WritePhyUshort(sc, 0x06, 0x01d1); - MP_WritePhyUshort(sc, 0x06, 0x00a0); - MP_WritePhyUshort(sc, 0x06, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xbf3b); - MP_WritePhyUshort(sc, 0x06, 0xc602); - MP_WritePhyUshort(sc, 0x06, 0x2dc1); - MP_WritePhyUshort(sc, 0x06, 0xd111); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x020c); - MP_WritePhyUshort(sc, 0x06, 0x11ad); - MP_WritePhyUshort(sc, 0x06, 0x2102); - MP_WritePhyUshort(sc, 0x06, 0x0c12); - MP_WritePhyUshort(sc, 0x06, 0xbf82); - MP_WritePhyUshort(sc, 0x06, 0xca02); - MP_WritePhyUshort(sc, 0x06, 0x2dc1); - MP_WritePhyUshort(sc, 0x06, 0xaec8); - MP_WritePhyUshort(sc, 0x06, 0x70e4); - MP_WritePhyUshort(sc, 0x06, 0x2602); - MP_WritePhyUshort(sc, 0x06, 0x82d1); - MP_WritePhyUshort(sc, 0x06, 0x05f8); - MP_WritePhyUshort(sc, 0x06, 0xfaef); - MP_WritePhyUshort(sc, 0x06, 0x69e0); - MP_WritePhyUshort(sc, 0x06, 0xe2fe); - MP_WritePhyUshort(sc, 0x06, 0xe1e2); - MP_WritePhyUshort(sc, 0x06, 0xffad); - MP_WritePhyUshort(sc, 0x06, 0x2d1a); - MP_WritePhyUshort(sc, 0x06, 0xe0e1); - MP_WritePhyUshort(sc, 0x06, 0x4ee1); - MP_WritePhyUshort(sc, 0x06, 0xe14f); - MP_WritePhyUshort(sc, 0x06, 0xac2d); - MP_WritePhyUshort(sc, 0x06, 0x22f6); - MP_WritePhyUshort(sc, 0x06, 0x0302); - MP_WritePhyUshort(sc, 0x06, 0x033b); - MP_WritePhyUshort(sc, 0x06, 0xf703); - MP_WritePhyUshort(sc, 0x06, 0xf706); - MP_WritePhyUshort(sc, 0x06, 0xbf84); - MP_WritePhyUshort(sc, 0x06, 0x4402); - MP_WritePhyUshort(sc, 0x06, 0x2d21); - MP_WritePhyUshort(sc, 0x06, 0xae11); - MP_WritePhyUshort(sc, 0x06, 0xe0e1); - MP_WritePhyUshort(sc, 0x06, 0x4ee1); - MP_WritePhyUshort(sc, 0x06, 0xe14f); - MP_WritePhyUshort(sc, 0x06, 0xad2d); - MP_WritePhyUshort(sc, 0x06, 0x08bf); - MP_WritePhyUshort(sc, 0x06, 0x844f); - MP_WritePhyUshort(sc, 0x06, 0x022d); - MP_WritePhyUshort(sc, 0x06, 0x21f6); - MP_WritePhyUshort(sc, 0x06, 0x06ef); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0x0283); - MP_WritePhyUshort(sc, 0x06, 0x4502); - MP_WritePhyUshort(sc, 0x06, 0x83a2); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x00e1); - MP_WritePhyUshort(sc, 0x06, 0xe001); - MP_WritePhyUshort(sc, 0x06, 0xad27); - MP_WritePhyUshort(sc, 0x06, 0x1fd1); - MP_WritePhyUshort(sc, 0x06, 0x01bf); - MP_WritePhyUshort(sc, 0x06, 0x843b); - MP_WritePhyUshort(sc, 0x06, 0x022d); - MP_WritePhyUshort(sc, 0x06, 0xc1e0); - MP_WritePhyUshort(sc, 0x06, 0xe020); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x21ad); - MP_WritePhyUshort(sc, 0x06, 0x200e); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf84); - MP_WritePhyUshort(sc, 0x06, 0x3b02); - MP_WritePhyUshort(sc, 0x06, 0x2dc1); - MP_WritePhyUshort(sc, 0x06, 0xbf3b); - MP_WritePhyUshort(sc, 0x06, 0x9602); - MP_WritePhyUshort(sc, 0x06, 0x2d21); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xf9fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x87ad); - MP_WritePhyUshort(sc, 0x06, 0x204c); - MP_WritePhyUshort(sc, 0x06, 0xd200); - MP_WritePhyUshort(sc, 0x06, 0xe0e2); - MP_WritePhyUshort(sc, 0x06, 0x0058); - MP_WritePhyUshort(sc, 0x06, 0x010c); - MP_WritePhyUshort(sc, 0x06, 0x021e); - MP_WritePhyUshort(sc, 0x06, 0x20e0); - MP_WritePhyUshort(sc, 0x06, 0xe000); - MP_WritePhyUshort(sc, 0x06, 0x5810); - MP_WritePhyUshort(sc, 0x06, 0x1e20); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x3658); - MP_WritePhyUshort(sc, 0x06, 0x031e); - MP_WritePhyUshort(sc, 0x06, 0x20e0); - MP_WritePhyUshort(sc, 0x06, 0xe022); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x2358); - MP_WritePhyUshort(sc, 0x06, 0xe01e); - MP_WritePhyUshort(sc, 0x06, 0x20e0); - MP_WritePhyUshort(sc, 0x06, 0x8b64); - MP_WritePhyUshort(sc, 0x06, 0x1f02); - MP_WritePhyUshort(sc, 0x06, 0x9e22); - MP_WritePhyUshort(sc, 0x06, 0xe68b); - MP_WritePhyUshort(sc, 0x06, 0x64ad); - MP_WritePhyUshort(sc, 0x06, 0x3214); - MP_WritePhyUshort(sc, 0x06, 0xad34); - MP_WritePhyUshort(sc, 0x06, 0x11ef); - MP_WritePhyUshort(sc, 0x06, 0x0258); - MP_WritePhyUshort(sc, 0x06, 0x039e); - MP_WritePhyUshort(sc, 0x06, 0x07ad); - MP_WritePhyUshort(sc, 0x06, 0x3508); - MP_WritePhyUshort(sc, 0x06, 0x5ac0); - MP_WritePhyUshort(sc, 0x06, 0x9f04); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xae02); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf84); - MP_WritePhyUshort(sc, 0x06, 0x3e02); - MP_WritePhyUshort(sc, 0x06, 0x2dc1); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefd); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8f9); - MP_WritePhyUshort(sc, 0x06, 0xfbe0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xad25); - MP_WritePhyUshort(sc, 0x06, 0x22e0); - MP_WritePhyUshort(sc, 0x06, 0xe022); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x23e2); - MP_WritePhyUshort(sc, 0x06, 0xe036); - MP_WritePhyUshort(sc, 0x06, 0xe3e0); - MP_WritePhyUshort(sc, 0x06, 0x375a); - MP_WritePhyUshort(sc, 0x06, 0xc40d); - MP_WritePhyUshort(sc, 0x06, 0x0158); - MP_WritePhyUshort(sc, 0x06, 0x021e); - MP_WritePhyUshort(sc, 0x06, 0x20e3); - MP_WritePhyUshort(sc, 0x06, 0x8ae7); - MP_WritePhyUshort(sc, 0x06, 0xac31); - MP_WritePhyUshort(sc, 0x06, 0x60ac); - MP_WritePhyUshort(sc, 0x06, 0x3a08); - MP_WritePhyUshort(sc, 0x06, 0xac3e); - MP_WritePhyUshort(sc, 0x06, 0x26ae); - MP_WritePhyUshort(sc, 0x06, 0x67af); - MP_WritePhyUshort(sc, 0x06, 0x8437); - MP_WritePhyUshort(sc, 0x06, 0xad37); - MP_WritePhyUshort(sc, 0x06, 0x61e0); - MP_WritePhyUshort(sc, 0x06, 0x8ae8); - MP_WritePhyUshort(sc, 0x06, 0x10e4); - MP_WritePhyUshort(sc, 0x06, 0x8ae8); - MP_WritePhyUshort(sc, 0x06, 0xe18a); - MP_WritePhyUshort(sc, 0x06, 0xe91b); - MP_WritePhyUshort(sc, 0x06, 0x109e); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x51d1); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x8441); - MP_WritePhyUshort(sc, 0x06, 0x022d); - MP_WritePhyUshort(sc, 0x06, 0xc1ee); - MP_WritePhyUshort(sc, 0x06, 0x8ae8); - MP_WritePhyUshort(sc, 0x06, 0x00ae); - MP_WritePhyUshort(sc, 0x06, 0x43ad); - MP_WritePhyUshort(sc, 0x06, 0x3627); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xeee1); - MP_WritePhyUshort(sc, 0x06, 0x8aef); - MP_WritePhyUshort(sc, 0x06, 0xef74); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xeae1); - MP_WritePhyUshort(sc, 0x06, 0x8aeb); - MP_WritePhyUshort(sc, 0x06, 0x1b74); - MP_WritePhyUshort(sc, 0x06, 0x9e2e); - MP_WritePhyUshort(sc, 0x06, 0x14e4); - MP_WritePhyUshort(sc, 0x06, 0x8aea); - MP_WritePhyUshort(sc, 0x06, 0xe58a); - MP_WritePhyUshort(sc, 0x06, 0xebef); - MP_WritePhyUshort(sc, 0x06, 0x74e0); - MP_WritePhyUshort(sc, 0x06, 0x8aee); - MP_WritePhyUshort(sc, 0x06, 0xe18a); - MP_WritePhyUshort(sc, 0x06, 0xef1b); - MP_WritePhyUshort(sc, 0x06, 0x479e); - MP_WritePhyUshort(sc, 0x06, 0x0fae); - MP_WritePhyUshort(sc, 0x06, 0x19ee); - MP_WritePhyUshort(sc, 0x06, 0x8aea); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x8aeb); - MP_WritePhyUshort(sc, 0x06, 0x00ae); - MP_WritePhyUshort(sc, 0x06, 0x0fac); - MP_WritePhyUshort(sc, 0x06, 0x390c); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xbf84); - MP_WritePhyUshort(sc, 0x06, 0x4102); - MP_WritePhyUshort(sc, 0x06, 0x2dc1); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0xe800); - MP_WritePhyUshort(sc, 0x06, 0xe68a); - MP_WritePhyUshort(sc, 0x06, 0xe7ff); - MP_WritePhyUshort(sc, 0x06, 0xfdfc); - MP_WritePhyUshort(sc, 0x06, 0x0400); - MP_WritePhyUshort(sc, 0x06, 0xe234); - MP_WritePhyUshort(sc, 0x06, 0xcce2); - MP_WritePhyUshort(sc, 0x06, 0x0088); - MP_WritePhyUshort(sc, 0x06, 0xe200); - MP_WritePhyUshort(sc, 0x06, 0xa725); - MP_WritePhyUshort(sc, 0x06, 0xe50a); - MP_WritePhyUshort(sc, 0x06, 0x1de5); - MP_WritePhyUshort(sc, 0x06, 0x0a2c); - MP_WritePhyUshort(sc, 0x06, 0xe50a); - MP_WritePhyUshort(sc, 0x06, 0x6de5); - MP_WritePhyUshort(sc, 0x06, 0x0a1d); - MP_WritePhyUshort(sc, 0x06, 0xe50a); - MP_WritePhyUshort(sc, 0x06, 0x1ce5); - MP_WritePhyUshort(sc, 0x06, 0x0a2d); - MP_WritePhyUshort(sc, 0x06, 0xa755); - MP_WritePhyUshort(sc, 0x05, 0x8b64); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x05, 0x8b94); - MP_WritePhyUshort(sc, 0x06, 0x82cd); - MP_WritePhyUshort(sc, 0x05, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0x2000); - MP_WritePhyUshort(sc, 0x05, 0x8aee); - MP_WritePhyUshort(sc, 0x06, 0x03b8); - MP_WritePhyUshort(sc, 0x05, 0x8ae8); - MP_WritePhyUshort(sc, 0x06, 0x0002); - PhyRegValue = MP_ReadPhyUshort(sc, 0x01); - PhyRegValue |= BIT_0; - MP_WritePhyUshort(sc, 0x01, PhyRegValue); - PhyRegValue = MP_ReadPhyUshort(sc, 0x00); - PhyRegValue |= BIT_0; - MP_WritePhyUshort(sc, 0x00, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x00); - if (PhyRegValue & 0x0080) - break; - } - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); - PhyRegValue &= ~(BIT_0); - if (sc->RequiredSecLanDonglePatch) - PhyRegValue &= ~(BIT_2); - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0028); - MP_WritePhyUshort(sc, 0x15, 0x0010); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0041); - MP_WritePhyUshort(sc, 0x15, 0x0802); - MP_WritePhyUshort(sc, 0x16, 0x2185); - MP_WritePhyUshort(sc, 0x1f, 0x0000); -} - -static void re_set_phy_mcu_8168e_2(struct re_softc* sc) -{ - u_int16_t PhyRegValue; - int i; - - if (MP_ReadEfuse(sc, 0x22) == 0x0c) { - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x1800); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - MP_WritePhyUshort(sc, 0x17, 0x0117); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x002C); - MP_WritePhyUshort(sc, 0x1B, 0x5000); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x16, 0x4104); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x1E); - PhyRegValue &= 0x03FF; - if (PhyRegValue == 0x000C) - break; - } - MP_WritePhyUshort(sc, 0x1f, 0x0005); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x07); - if ((PhyRegValue & 0x0020) == 0) - break; - } - PhyRegValue = MP_ReadPhyUshort(sc, 0x07); - if (PhyRegValue & 0x0020) { - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x00a1); - MP_WritePhyUshort(sc, 0x17, 0x1000); - MP_WritePhyUshort(sc, 0x17, 0x0000); - MP_WritePhyUshort(sc, 0x17, 0x2000); - MP_WritePhyUshort(sc, 0x1e, 0x002f); - MP_WritePhyUshort(sc, 0x18, 0x9bfb); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x07, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - } - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x0080); - PhyRegValue = MP_ReadPhyUshort(sc, 0x00); - PhyRegValue &= ~(BIT_7); - MP_WritePhyUshort(sc, 0x00, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0002); - PhyRegValue = MP_ReadPhyUshort(sc, 0x08); - PhyRegValue &= ~(BIT_7); - MP_WritePhyUshort(sc, 0x08, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - MP_WritePhyUshort(sc, 0x16, 0x0306); - MP_WritePhyUshort(sc, 0x16, 0x0307); - MP_WritePhyUshort(sc, 0x15, 0x000e); - MP_WritePhyUshort(sc, 0x19, 0x000a); - MP_WritePhyUshort(sc, 0x15, 0x0010); - MP_WritePhyUshort(sc, 0x19, 0x0008); - MP_WritePhyUshort(sc, 0x15, 0x0018); - MP_WritePhyUshort(sc, 0x19, 0x4801); - MP_WritePhyUshort(sc, 0x15, 0x0019); - MP_WritePhyUshort(sc, 0x19, 0x6801); - MP_WritePhyUshort(sc, 0x15, 0x001a); - MP_WritePhyUshort(sc, 0x19, 0x66a1); - MP_WritePhyUshort(sc, 0x15, 0x001f); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0020); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0021); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0022); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0023); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0024); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0025); - MP_WritePhyUshort(sc, 0x19, 0x64a1); - MP_WritePhyUshort(sc, 0x15, 0x0026); - MP_WritePhyUshort(sc, 0x19, 0x40ea); - MP_WritePhyUshort(sc, 0x15, 0x0027); - MP_WritePhyUshort(sc, 0x19, 0x4503); - MP_WritePhyUshort(sc, 0x15, 0x0028); - MP_WritePhyUshort(sc, 0x19, 0x9f00); - MP_WritePhyUshort(sc, 0x15, 0x0029); - MP_WritePhyUshort(sc, 0x19, 0xa631); - MP_WritePhyUshort(sc, 0x15, 0x002a); - MP_WritePhyUshort(sc, 0x19, 0x9717); - MP_WritePhyUshort(sc, 0x15, 0x002b); - MP_WritePhyUshort(sc, 0x19, 0x302c); - MP_WritePhyUshort(sc, 0x15, 0x002c); - MP_WritePhyUshort(sc, 0x19, 0x4802); - MP_WritePhyUshort(sc, 0x15, 0x002d); - MP_WritePhyUshort(sc, 0x19, 0x58da); - MP_WritePhyUshort(sc, 0x15, 0x002e); - MP_WritePhyUshort(sc, 0x19, 0x400d); - MP_WritePhyUshort(sc, 0x15, 0x002f); - MP_WritePhyUshort(sc, 0x19, 0x4488); - MP_WritePhyUshort(sc, 0x15, 0x0030); - MP_WritePhyUshort(sc, 0x19, 0x9e00); - MP_WritePhyUshort(sc, 0x15, 0x0031); - MP_WritePhyUshort(sc, 0x19, 0x63c8); - MP_WritePhyUshort(sc, 0x15, 0x0032); - MP_WritePhyUshort(sc, 0x19, 0x6481); - MP_WritePhyUshort(sc, 0x15, 0x0033); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0034); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0035); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0036); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0037); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0038); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0039); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x003a); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x003b); - MP_WritePhyUshort(sc, 0x19, 0x63e8); - MP_WritePhyUshort(sc, 0x15, 0x003c); - MP_WritePhyUshort(sc, 0x19, 0x7d00); - MP_WritePhyUshort(sc, 0x15, 0x003d); - MP_WritePhyUshort(sc, 0x19, 0x59d4); - MP_WritePhyUshort(sc, 0x15, 0x003e); - MP_WritePhyUshort(sc, 0x19, 0x63f8); - MP_WritePhyUshort(sc, 0x15, 0x0040); - MP_WritePhyUshort(sc, 0x19, 0x64a1); - MP_WritePhyUshort(sc, 0x15, 0x0041); - MP_WritePhyUshort(sc, 0x19, 0x30de); - MP_WritePhyUshort(sc, 0x15, 0x0044); - MP_WritePhyUshort(sc, 0x19, 0x480f); - MP_WritePhyUshort(sc, 0x15, 0x0045); - MP_WritePhyUshort(sc, 0x19, 0x6800); - MP_WritePhyUshort(sc, 0x15, 0x0046); - MP_WritePhyUshort(sc, 0x19, 0x6680); - MP_WritePhyUshort(sc, 0x15, 0x0047); - MP_WritePhyUshort(sc, 0x19, 0x7c10); - MP_WritePhyUshort(sc, 0x15, 0x0048); - MP_WritePhyUshort(sc, 0x19, 0x63c8); - MP_WritePhyUshort(sc, 0x15, 0x0049); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004a); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004b); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004c); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004d); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004e); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004f); - MP_WritePhyUshort(sc, 0x19, 0x40ea); - MP_WritePhyUshort(sc, 0x15, 0x0050); - MP_WritePhyUshort(sc, 0x19, 0x4503); - MP_WritePhyUshort(sc, 0x15, 0x0051); - MP_WritePhyUshort(sc, 0x19, 0x58ca); - MP_WritePhyUshort(sc, 0x15, 0x0052); - MP_WritePhyUshort(sc, 0x19, 0x63c8); - MP_WritePhyUshort(sc, 0x15, 0x0053); - MP_WritePhyUshort(sc, 0x19, 0x63d8); - MP_WritePhyUshort(sc, 0x15, 0x0054); - MP_WritePhyUshort(sc, 0x19, 0x66a0); - MP_WritePhyUshort(sc, 0x15, 0x0055); - MP_WritePhyUshort(sc, 0x19, 0x9f00); - MP_WritePhyUshort(sc, 0x15, 0x0056); - MP_WritePhyUshort(sc, 0x19, 0x3000); - MP_WritePhyUshort(sc, 0x15, 0x00a1); - MP_WritePhyUshort(sc, 0x19, 0x3044); - MP_WritePhyUshort(sc, 0x15, 0x00ab); - MP_WritePhyUshort(sc, 0x19, 0x5820); - MP_WritePhyUshort(sc, 0x15, 0x00ac); - MP_WritePhyUshort(sc, 0x19, 0x5e04); - MP_WritePhyUshort(sc, 0x15, 0x00ad); - MP_WritePhyUshort(sc, 0x19, 0xb60c); - MP_WritePhyUshort(sc, 0x15, 0x00af); - MP_WritePhyUshort(sc, 0x19, 0x000a); - MP_WritePhyUshort(sc, 0x15, 0x00b2); - MP_WritePhyUshort(sc, 0x19, 0x30b9); - MP_WritePhyUshort(sc, 0x15, 0x00b9); - MP_WritePhyUshort(sc, 0x19, 0x4408); - MP_WritePhyUshort(sc, 0x15, 0x00ba); - MP_WritePhyUshort(sc, 0x19, 0x480b); - MP_WritePhyUshort(sc, 0x15, 0x00bb); - MP_WritePhyUshort(sc, 0x19, 0x5e00); - MP_WritePhyUshort(sc, 0x15, 0x00bc); - MP_WritePhyUshort(sc, 0x19, 0x405f); - MP_WritePhyUshort(sc, 0x15, 0x00bd); - MP_WritePhyUshort(sc, 0x19, 0x4448); - MP_WritePhyUshort(sc, 0x15, 0x00be); - MP_WritePhyUshort(sc, 0x19, 0x4020); - MP_WritePhyUshort(sc, 0x15, 0x00bf); - MP_WritePhyUshort(sc, 0x19, 0x4468); - MP_WritePhyUshort(sc, 0x15, 0x00c0); - MP_WritePhyUshort(sc, 0x19, 0x9c02); - MP_WritePhyUshort(sc, 0x15, 0x00c1); - MP_WritePhyUshort(sc, 0x19, 0x58a0); - MP_WritePhyUshort(sc, 0x15, 0x00c2); - MP_WritePhyUshort(sc, 0x19, 0xb605); - MP_WritePhyUshort(sc, 0x15, 0x00c3); - MP_WritePhyUshort(sc, 0x19, 0xc0d3); - MP_WritePhyUshort(sc, 0x15, 0x00c4); - MP_WritePhyUshort(sc, 0x19, 0x00e6); - MP_WritePhyUshort(sc, 0x15, 0x00c5); - MP_WritePhyUshort(sc, 0x19, 0xdaec); - MP_WritePhyUshort(sc, 0x15, 0x00c6); - MP_WritePhyUshort(sc, 0x19, 0x00fa); - MP_WritePhyUshort(sc, 0x15, 0x00c7); - MP_WritePhyUshort(sc, 0x19, 0x9df9); - MP_WritePhyUshort(sc, 0x15, 0x0112); - MP_WritePhyUshort(sc, 0x19, 0x6421); - MP_WritePhyUshort(sc, 0x15, 0x0113); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x0114); - MP_WritePhyUshort(sc, 0x19, 0x63f0); - MP_WritePhyUshort(sc, 0x15, 0x0115); - MP_WritePhyUshort(sc, 0x19, 0x4003); - MP_WritePhyUshort(sc, 0x15, 0x0116); - MP_WritePhyUshort(sc, 0x19, 0x4418); - MP_WritePhyUshort(sc, 0x15, 0x0117); - MP_WritePhyUshort(sc, 0x19, 0x9b00); - MP_WritePhyUshort(sc, 0x15, 0x0118); - MP_WritePhyUshort(sc, 0x19, 0x6461); - MP_WritePhyUshort(sc, 0x15, 0x0119); - MP_WritePhyUshort(sc, 0x19, 0x64e1); - MP_WritePhyUshort(sc, 0x15, 0x011a); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0150); - MP_WritePhyUshort(sc, 0x19, 0x7c80); - MP_WritePhyUshort(sc, 0x15, 0x0151); - MP_WritePhyUshort(sc, 0x19, 0x6461); - MP_WritePhyUshort(sc, 0x15, 0x0152); - MP_WritePhyUshort(sc, 0x19, 0x4003); - MP_WritePhyUshort(sc, 0x15, 0x0153); - MP_WritePhyUshort(sc, 0x19, 0x4540); - MP_WritePhyUshort(sc, 0x15, 0x0154); - MP_WritePhyUshort(sc, 0x19, 0x9f00); - MP_WritePhyUshort(sc, 0x15, 0x0155); - MP_WritePhyUshort(sc, 0x19, 0x9d00); - MP_WritePhyUshort(sc, 0x15, 0x0156); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x0157); - MP_WritePhyUshort(sc, 0x19, 0x6421); - MP_WritePhyUshort(sc, 0x15, 0x0158); - MP_WritePhyUshort(sc, 0x19, 0x7c80); - MP_WritePhyUshort(sc, 0x15, 0x0159); - MP_WritePhyUshort(sc, 0x19, 0x64a1); - MP_WritePhyUshort(sc, 0x15, 0x015a); - MP_WritePhyUshort(sc, 0x19, 0x30fe); - MP_WritePhyUshort(sc, 0x15, 0x029c); - MP_WritePhyUshort(sc, 0x19, 0x0070); - MP_WritePhyUshort(sc, 0x15, 0x02b2); - MP_WritePhyUshort(sc, 0x19, 0x005a); - MP_WritePhyUshort(sc, 0x15, 0x02bd); - MP_WritePhyUshort(sc, 0x19, 0xa522); - MP_WritePhyUshort(sc, 0x15, 0x02ce); - MP_WritePhyUshort(sc, 0x19, 0xb63e); - MP_WritePhyUshort(sc, 0x15, 0x02d9); - MP_WritePhyUshort(sc, 0x19, 0x32df); - MP_WritePhyUshort(sc, 0x15, 0x02df); - MP_WritePhyUshort(sc, 0x19, 0x4500); - MP_WritePhyUshort(sc, 0x15, 0x02e7); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02f4); - MP_WritePhyUshort(sc, 0x19, 0xb618); - MP_WritePhyUshort(sc, 0x15, 0x02fb); - MP_WritePhyUshort(sc, 0x19, 0xb900); - MP_WritePhyUshort(sc, 0x15, 0x02fc); - MP_WritePhyUshort(sc, 0x19, 0x49b5); - MP_WritePhyUshort(sc, 0x15, 0x02fd); - MP_WritePhyUshort(sc, 0x19, 0x6812); - MP_WritePhyUshort(sc, 0x15, 0x02fe); - MP_WritePhyUshort(sc, 0x19, 0x66a0); - MP_WritePhyUshort(sc, 0x15, 0x02ff); - MP_WritePhyUshort(sc, 0x19, 0x9900); - MP_WritePhyUshort(sc, 0x15, 0x0300); - MP_WritePhyUshort(sc, 0x19, 0x64a0); - MP_WritePhyUshort(sc, 0x15, 0x0301); - MP_WritePhyUshort(sc, 0x19, 0x3316); - MP_WritePhyUshort(sc, 0x15, 0x0308); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x030c); - MP_WritePhyUshort(sc, 0x19, 0x3000); - MP_WritePhyUshort(sc, 0x15, 0x0312); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0313); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0314); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0315); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0316); - MP_WritePhyUshort(sc, 0x19, 0x49b5); - MP_WritePhyUshort(sc, 0x15, 0x0317); - MP_WritePhyUshort(sc, 0x19, 0x7d00); - MP_WritePhyUshort(sc, 0x15, 0x0318); - MP_WritePhyUshort(sc, 0x19, 0x4d00); - MP_WritePhyUshort(sc, 0x15, 0x0319); - MP_WritePhyUshort(sc, 0x19, 0x6810); - MP_WritePhyUshort(sc, 0x15, 0x031a); - MP_WritePhyUshort(sc, 0x19, 0x6c08); - MP_WritePhyUshort(sc, 0x15, 0x031b); - MP_WritePhyUshort(sc, 0x19, 0x4925); - MP_WritePhyUshort(sc, 0x15, 0x031c); - MP_WritePhyUshort(sc, 0x19, 0x403b); - MP_WritePhyUshort(sc, 0x15, 0x031d); - MP_WritePhyUshort(sc, 0x19, 0xa602); - MP_WritePhyUshort(sc, 0x15, 0x031e); - MP_WritePhyUshort(sc, 0x19, 0x402f); - MP_WritePhyUshort(sc, 0x15, 0x031f); - MP_WritePhyUshort(sc, 0x19, 0x4484); - MP_WritePhyUshort(sc, 0x15, 0x0320); - MP_WritePhyUshort(sc, 0x19, 0x40c8); - MP_WritePhyUshort(sc, 0x15, 0x0321); - MP_WritePhyUshort(sc, 0x19, 0x44c4); - MP_WritePhyUshort(sc, 0x15, 0x0322); - MP_WritePhyUshort(sc, 0x19, 0x404f); - MP_WritePhyUshort(sc, 0x15, 0x0323); - MP_WritePhyUshort(sc, 0x19, 0x44c8); - MP_WritePhyUshort(sc, 0x15, 0x0324); - MP_WritePhyUshort(sc, 0x19, 0xd64f); - MP_WritePhyUshort(sc, 0x15, 0x0325); - MP_WritePhyUshort(sc, 0x19, 0x00e7); - MP_WritePhyUshort(sc, 0x15, 0x0326); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x0327); - MP_WritePhyUshort(sc, 0x19, 0x8203); - MP_WritePhyUshort(sc, 0x15, 0x0328); - MP_WritePhyUshort(sc, 0x19, 0x4d48); - MP_WritePhyUshort(sc, 0x15, 0x0329); - MP_WritePhyUshort(sc, 0x19, 0x332b); - MP_WritePhyUshort(sc, 0x15, 0x032a); - MP_WritePhyUshort(sc, 0x19, 0x4d40); - MP_WritePhyUshort(sc, 0x15, 0x032c); - MP_WritePhyUshort(sc, 0x19, 0x00f8); - MP_WritePhyUshort(sc, 0x15, 0x032d); - MP_WritePhyUshort(sc, 0x19, 0x82b2); - MP_WritePhyUshort(sc, 0x15, 0x032f); - MP_WritePhyUshort(sc, 0x19, 0x00b0); - MP_WritePhyUshort(sc, 0x15, 0x0332); - MP_WritePhyUshort(sc, 0x19, 0x91f2); - MP_WritePhyUshort(sc, 0x15, 0x033f); - MP_WritePhyUshort(sc, 0x19, 0xb6cd); - MP_WritePhyUshort(sc, 0x15, 0x0340); - MP_WritePhyUshort(sc, 0x19, 0x9e01); - MP_WritePhyUshort(sc, 0x15, 0x0341); - MP_WritePhyUshort(sc, 0x19, 0xd11d); - MP_WritePhyUshort(sc, 0x15, 0x0342); - MP_WritePhyUshort(sc, 0x19, 0x009d); - MP_WritePhyUshort(sc, 0x15, 0x0343); - MP_WritePhyUshort(sc, 0x19, 0xbb1c); - MP_WritePhyUshort(sc, 0x15, 0x0344); - MP_WritePhyUshort(sc, 0x19, 0x8102); - MP_WritePhyUshort(sc, 0x15, 0x0345); - MP_WritePhyUshort(sc, 0x19, 0x3348); - MP_WritePhyUshort(sc, 0x15, 0x0346); - MP_WritePhyUshort(sc, 0x19, 0xa231); - MP_WritePhyUshort(sc, 0x15, 0x0347); - MP_WritePhyUshort(sc, 0x19, 0x335b); - MP_WritePhyUshort(sc, 0x15, 0x0348); - MP_WritePhyUshort(sc, 0x19, 0x91f7); - MP_WritePhyUshort(sc, 0x15, 0x0349); - MP_WritePhyUshort(sc, 0x19, 0xc218); - MP_WritePhyUshort(sc, 0x15, 0x034a); - MP_WritePhyUshort(sc, 0x19, 0x00f5); - MP_WritePhyUshort(sc, 0x15, 0x034b); - MP_WritePhyUshort(sc, 0x19, 0x335b); - MP_WritePhyUshort(sc, 0x15, 0x034c); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x034d); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x034e); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x034f); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0350); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x035b); - MP_WritePhyUshort(sc, 0x19, 0xa23c); - MP_WritePhyUshort(sc, 0x15, 0x035c); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x035d); - MP_WritePhyUshort(sc, 0x19, 0x4c00); - MP_WritePhyUshort(sc, 0x15, 0x035e); - MP_WritePhyUshort(sc, 0x19, 0x3397); - MP_WritePhyUshort(sc, 0x15, 0x0363); - MP_WritePhyUshort(sc, 0x19, 0xb6a9); - MP_WritePhyUshort(sc, 0x15, 0x0366); - MP_WritePhyUshort(sc, 0x19, 0x00f5); - MP_WritePhyUshort(sc, 0x15, 0x0382); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x0388); - MP_WritePhyUshort(sc, 0x19, 0x0084); - MP_WritePhyUshort(sc, 0x15, 0x0389); - MP_WritePhyUshort(sc, 0x19, 0xdd17); - MP_WritePhyUshort(sc, 0x15, 0x038a); - MP_WritePhyUshort(sc, 0x19, 0x000b); - MP_WritePhyUshort(sc, 0x15, 0x038b); - MP_WritePhyUshort(sc, 0x19, 0xa10a); - MP_WritePhyUshort(sc, 0x15, 0x038c); - MP_WritePhyUshort(sc, 0x19, 0x337e); - MP_WritePhyUshort(sc, 0x15, 0x038d); - MP_WritePhyUshort(sc, 0x19, 0x6c0b); - MP_WritePhyUshort(sc, 0x15, 0x038e); - MP_WritePhyUshort(sc, 0x19, 0xa107); - MP_WritePhyUshort(sc, 0x15, 0x038f); - MP_WritePhyUshort(sc, 0x19, 0x6c08); - MP_WritePhyUshort(sc, 0x15, 0x0390); - MP_WritePhyUshort(sc, 0x19, 0xc017); - MP_WritePhyUshort(sc, 0x15, 0x0391); - MP_WritePhyUshort(sc, 0x19, 0x0004); - MP_WritePhyUshort(sc, 0x15, 0x0392); - MP_WritePhyUshort(sc, 0x19, 0xd64f); - MP_WritePhyUshort(sc, 0x15, 0x0393); - MP_WritePhyUshort(sc, 0x19, 0x00f4); - MP_WritePhyUshort(sc, 0x15, 0x0397); - MP_WritePhyUshort(sc, 0x19, 0x4098); - MP_WritePhyUshort(sc, 0x15, 0x0398); - MP_WritePhyUshort(sc, 0x19, 0x4408); - MP_WritePhyUshort(sc, 0x15, 0x0399); - MP_WritePhyUshort(sc, 0x19, 0x55bf); - MP_WritePhyUshort(sc, 0x15, 0x039a); - MP_WritePhyUshort(sc, 0x19, 0x4bb9); - MP_WritePhyUshort(sc, 0x15, 0x039b); - MP_WritePhyUshort(sc, 0x19, 0x6810); - MP_WritePhyUshort(sc, 0x15, 0x039c); - MP_WritePhyUshort(sc, 0x19, 0x4b29); - MP_WritePhyUshort(sc, 0x15, 0x039d); - MP_WritePhyUshort(sc, 0x19, 0x4041); - MP_WritePhyUshort(sc, 0x15, 0x039e); - MP_WritePhyUshort(sc, 0x19, 0x442a); - MP_WritePhyUshort(sc, 0x15, 0x039f); - MP_WritePhyUshort(sc, 0x19, 0x4029); - MP_WritePhyUshort(sc, 0x15, 0x03aa); - MP_WritePhyUshort(sc, 0x19, 0x33b8); - MP_WritePhyUshort(sc, 0x15, 0x03b6); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03b7); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03b8); - MP_WritePhyUshort(sc, 0x19, 0x543f); - MP_WritePhyUshort(sc, 0x15, 0x03b9); - MP_WritePhyUshort(sc, 0x19, 0x499a); - MP_WritePhyUshort(sc, 0x15, 0x03ba); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x03bb); - MP_WritePhyUshort(sc, 0x19, 0x4c40); - MP_WritePhyUshort(sc, 0x15, 0x03bc); - MP_WritePhyUshort(sc, 0x19, 0x490a); - MP_WritePhyUshort(sc, 0x15, 0x03bd); - MP_WritePhyUshort(sc, 0x19, 0x405e); - MP_WritePhyUshort(sc, 0x15, 0x03c2); - MP_WritePhyUshort(sc, 0x19, 0x9a03); - MP_WritePhyUshort(sc, 0x15, 0x03c4); - MP_WritePhyUshort(sc, 0x19, 0x0015); - MP_WritePhyUshort(sc, 0x15, 0x03c5); - MP_WritePhyUshort(sc, 0x19, 0x9e03); - MP_WritePhyUshort(sc, 0x15, 0x03c8); - MP_WritePhyUshort(sc, 0x19, 0x9cf7); - MP_WritePhyUshort(sc, 0x15, 0x03c9); - MP_WritePhyUshort(sc, 0x19, 0x7c12); - MP_WritePhyUshort(sc, 0x15, 0x03ca); - MP_WritePhyUshort(sc, 0x19, 0x4c52); - MP_WritePhyUshort(sc, 0x15, 0x03cb); - MP_WritePhyUshort(sc, 0x19, 0x4458); - MP_WritePhyUshort(sc, 0x15, 0x03cd); - MP_WritePhyUshort(sc, 0x19, 0x4c40); - MP_WritePhyUshort(sc, 0x15, 0x03ce); - MP_WritePhyUshort(sc, 0x19, 0x33bf); - MP_WritePhyUshort(sc, 0x15, 0x03cf); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03d0); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03d1); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03d5); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03d6); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03d7); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03d8); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03d9); - MP_WritePhyUshort(sc, 0x19, 0x49bb); - MP_WritePhyUshort(sc, 0x15, 0x03da); - MP_WritePhyUshort(sc, 0x19, 0x4478); - MP_WritePhyUshort(sc, 0x15, 0x03db); - MP_WritePhyUshort(sc, 0x19, 0x492b); - MP_WritePhyUshort(sc, 0x15, 0x03dc); - MP_WritePhyUshort(sc, 0x19, 0x7c01); - MP_WritePhyUshort(sc, 0x15, 0x03dd); - MP_WritePhyUshort(sc, 0x19, 0x4c00); - MP_WritePhyUshort(sc, 0x15, 0x03de); - MP_WritePhyUshort(sc, 0x19, 0xbd1a); - MP_WritePhyUshort(sc, 0x15, 0x03df); - MP_WritePhyUshort(sc, 0x19, 0xc428); - MP_WritePhyUshort(sc, 0x15, 0x03e0); - MP_WritePhyUshort(sc, 0x19, 0x0008); - MP_WritePhyUshort(sc, 0x15, 0x03e1); - MP_WritePhyUshort(sc, 0x19, 0x9cfd); - MP_WritePhyUshort(sc, 0x15, 0x03e2); - MP_WritePhyUshort(sc, 0x19, 0x7c12); - MP_WritePhyUshort(sc, 0x15, 0x03e3); - MP_WritePhyUshort(sc, 0x19, 0x4c52); - MP_WritePhyUshort(sc, 0x15, 0x03e4); - MP_WritePhyUshort(sc, 0x19, 0x4458); - MP_WritePhyUshort(sc, 0x15, 0x03e5); - MP_WritePhyUshort(sc, 0x19, 0x7c12); - MP_WritePhyUshort(sc, 0x15, 0x03e6); - MP_WritePhyUshort(sc, 0x19, 0x4c40); - MP_WritePhyUshort(sc, 0x15, 0x03e7); - MP_WritePhyUshort(sc, 0x19, 0x33de); - MP_WritePhyUshort(sc, 0x15, 0x03e8); - MP_WritePhyUshort(sc, 0x19, 0xc218); - MP_WritePhyUshort(sc, 0x15, 0x03e9); - MP_WritePhyUshort(sc, 0x19, 0x0002); - MP_WritePhyUshort(sc, 0x15, 0x03ea); - MP_WritePhyUshort(sc, 0x19, 0x32df); - MP_WritePhyUshort(sc, 0x15, 0x03eb); - MP_WritePhyUshort(sc, 0x19, 0x3316); - MP_WritePhyUshort(sc, 0x15, 0x03ec); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03ed); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03ee); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03ef); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03f7); - MP_WritePhyUshort(sc, 0x19, 0x330c); - MP_WritePhyUshort(sc, 0x16, 0x0306); - MP_WritePhyUshort(sc, 0x16, 0x0300); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x0080); - MP_WritePhyUshort(sc, 0x05, 0x8000); - MP_WritePhyUshort(sc, 0x06, 0x0280); - MP_WritePhyUshort(sc, 0x06, 0x48f7); - MP_WritePhyUshort(sc, 0x06, 0x00e0); - MP_WritePhyUshort(sc, 0x06, 0xfff7); - MP_WritePhyUshort(sc, 0x06, 0xa080); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0xf602); - MP_WritePhyUshort(sc, 0x06, 0x0200); - MP_WritePhyUshort(sc, 0x06, 0x0280); - MP_WritePhyUshort(sc, 0x06, 0x9002); - MP_WritePhyUshort(sc, 0x06, 0x0224); - MP_WritePhyUshort(sc, 0x06, 0x0202); - MP_WritePhyUshort(sc, 0x06, 0x3402); - MP_WritePhyUshort(sc, 0x06, 0x027f); - MP_WritePhyUshort(sc, 0x06, 0x0280); - MP_WritePhyUshort(sc, 0x06, 0xa602); - MP_WritePhyUshort(sc, 0x06, 0x80bf); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x88e1); - MP_WritePhyUshort(sc, 0x06, 0x8b89); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8a1e); - MP_WritePhyUshort(sc, 0x06, 0x01e1); - MP_WritePhyUshort(sc, 0x06, 0x8b8b); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8c1e); - MP_WritePhyUshort(sc, 0x06, 0x01e1); - MP_WritePhyUshort(sc, 0x06, 0x8b8d); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8e1e); - MP_WritePhyUshort(sc, 0x06, 0x01a0); - MP_WritePhyUshort(sc, 0x06, 0x00c7); - MP_WritePhyUshort(sc, 0x06, 0xaebb); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0xe600); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0xee03); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0xefb8); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0xe902); - MP_WritePhyUshort(sc, 0x06, 0xee8b); - MP_WritePhyUshort(sc, 0x06, 0x8285); - MP_WritePhyUshort(sc, 0x06, 0xee8b); - MP_WritePhyUshort(sc, 0x06, 0x8520); - MP_WritePhyUshort(sc, 0x06, 0xee8b); - MP_WritePhyUshort(sc, 0x06, 0x8701); - MP_WritePhyUshort(sc, 0x06, 0xd481); - MP_WritePhyUshort(sc, 0x06, 0x35e4); - MP_WritePhyUshort(sc, 0x06, 0x8b94); - MP_WritePhyUshort(sc, 0x06, 0xe58b); - MP_WritePhyUshort(sc, 0x06, 0x95bf); - MP_WritePhyUshort(sc, 0x06, 0x8b88); - MP_WritePhyUshort(sc, 0x06, 0xec00); - MP_WritePhyUshort(sc, 0x06, 0x19a9); - MP_WritePhyUshort(sc, 0x06, 0x8b90); - MP_WritePhyUshort(sc, 0x06, 0xf9ee); - MP_WritePhyUshort(sc, 0x06, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0xfff7); - MP_WritePhyUshort(sc, 0x06, 0xffe0); - MP_WritePhyUshort(sc, 0x06, 0xe140); - MP_WritePhyUshort(sc, 0x06, 0xe1e1); - MP_WritePhyUshort(sc, 0x06, 0x41f7); - MP_WritePhyUshort(sc, 0x06, 0x2ff6); - MP_WritePhyUshort(sc, 0x06, 0x28e4); - MP_WritePhyUshort(sc, 0x06, 0xe140); - MP_WritePhyUshort(sc, 0x06, 0xe5e1); - MP_WritePhyUshort(sc, 0x06, 0x4104); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b89); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x0dee); - MP_WritePhyUshort(sc, 0x06, 0x8b89); - MP_WritePhyUshort(sc, 0x06, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x82f4); - MP_WritePhyUshort(sc, 0x06, 0x021f); - MP_WritePhyUshort(sc, 0x06, 0x4102); - MP_WritePhyUshort(sc, 0x06, 0x2812); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b8d); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x10ee); - MP_WritePhyUshort(sc, 0x06, 0x8b8d); - MP_WritePhyUshort(sc, 0x06, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x139d); - MP_WritePhyUshort(sc, 0x06, 0x0281); - MP_WritePhyUshort(sc, 0x06, 0xd602); - MP_WritePhyUshort(sc, 0x06, 0x1f99); - MP_WritePhyUshort(sc, 0x06, 0x0227); - MP_WritePhyUshort(sc, 0x06, 0xeafc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x2014); - MP_WritePhyUshort(sc, 0x06, 0xf620); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x8104); - MP_WritePhyUshort(sc, 0x06, 0x021b); - MP_WritePhyUshort(sc, 0x06, 0xf402); - MP_WritePhyUshort(sc, 0x06, 0x2c9c); - MP_WritePhyUshort(sc, 0x06, 0x0281); - MP_WritePhyUshort(sc, 0x06, 0x7902); - MP_WritePhyUshort(sc, 0x06, 0x8443); - MP_WritePhyUshort(sc, 0x06, 0xad22); - MP_WritePhyUshort(sc, 0x06, 0x11f6); - MP_WritePhyUshort(sc, 0x06, 0x22e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0x022c); - MP_WritePhyUshort(sc, 0x06, 0x4602); - MP_WritePhyUshort(sc, 0x06, 0x2ac5); - MP_WritePhyUshort(sc, 0x06, 0x0229); - MP_WritePhyUshort(sc, 0x06, 0x2002); - MP_WritePhyUshort(sc, 0x06, 0x2b91); - MP_WritePhyUshort(sc, 0x06, 0xad25); - MP_WritePhyUshort(sc, 0x06, 0x11f6); - MP_WritePhyUshort(sc, 0x06, 0x25e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0x0284); - MP_WritePhyUshort(sc, 0x06, 0xe202); - MP_WritePhyUshort(sc, 0x06, 0x043a); - MP_WritePhyUshort(sc, 0x06, 0x021a); - MP_WritePhyUshort(sc, 0x06, 0x5902); - MP_WritePhyUshort(sc, 0x06, 0x2bfc); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x00e1); - MP_WritePhyUshort(sc, 0x06, 0xe001); - MP_WritePhyUshort(sc, 0x06, 0xad27); - MP_WritePhyUshort(sc, 0x06, 0x1fd1); - MP_WritePhyUshort(sc, 0x06, 0x01bf); - MP_WritePhyUshort(sc, 0x06, 0x8638); - MP_WritePhyUshort(sc, 0x06, 0x022f); - MP_WritePhyUshort(sc, 0x06, 0x50e0); - MP_WritePhyUshort(sc, 0x06, 0xe020); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x21ad); - MP_WritePhyUshort(sc, 0x06, 0x200e); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf86); - MP_WritePhyUshort(sc, 0x06, 0x3802); - MP_WritePhyUshort(sc, 0x06, 0x2f50); - MP_WritePhyUshort(sc, 0x06, 0xbf3d); - MP_WritePhyUshort(sc, 0x06, 0x3902); - MP_WritePhyUshort(sc, 0x06, 0x2eb0); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefc); - MP_WritePhyUshort(sc, 0x06, 0x0402); - MP_WritePhyUshort(sc, 0x06, 0x8591); - MP_WritePhyUshort(sc, 0x06, 0x0281); - MP_WritePhyUshort(sc, 0x06, 0x3c05); - MP_WritePhyUshort(sc, 0x06, 0xf8fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xe0e2); - MP_WritePhyUshort(sc, 0x06, 0xfee1); - MP_WritePhyUshort(sc, 0x06, 0xe2ff); - MP_WritePhyUshort(sc, 0x06, 0xad2d); - MP_WritePhyUshort(sc, 0x06, 0x1ae0); - MP_WritePhyUshort(sc, 0x06, 0xe14e); - MP_WritePhyUshort(sc, 0x06, 0xe1e1); - MP_WritePhyUshort(sc, 0x06, 0x4fac); - MP_WritePhyUshort(sc, 0x06, 0x2d22); - MP_WritePhyUshort(sc, 0x06, 0xf603); - MP_WritePhyUshort(sc, 0x06, 0x0203); - MP_WritePhyUshort(sc, 0x06, 0x36f7); - MP_WritePhyUshort(sc, 0x06, 0x03f7); - MP_WritePhyUshort(sc, 0x06, 0x06bf); - MP_WritePhyUshort(sc, 0x06, 0x8622); - MP_WritePhyUshort(sc, 0x06, 0x022e); - MP_WritePhyUshort(sc, 0x06, 0xb0ae); - MP_WritePhyUshort(sc, 0x06, 0x11e0); - MP_WritePhyUshort(sc, 0x06, 0xe14e); - MP_WritePhyUshort(sc, 0x06, 0xe1e1); - MP_WritePhyUshort(sc, 0x06, 0x4fad); - MP_WritePhyUshort(sc, 0x06, 0x2d08); - MP_WritePhyUshort(sc, 0x06, 0xbf86); - MP_WritePhyUshort(sc, 0x06, 0x2d02); - MP_WritePhyUshort(sc, 0x06, 0x2eb0); - MP_WritePhyUshort(sc, 0x06, 0xf606); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xf9fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x87ad); - MP_WritePhyUshort(sc, 0x06, 0x204c); - MP_WritePhyUshort(sc, 0x06, 0xd200); - MP_WritePhyUshort(sc, 0x06, 0xe0e2); - MP_WritePhyUshort(sc, 0x06, 0x0058); - MP_WritePhyUshort(sc, 0x06, 0x010c); - MP_WritePhyUshort(sc, 0x06, 0x021e); - MP_WritePhyUshort(sc, 0x06, 0x20e0); - MP_WritePhyUshort(sc, 0x06, 0xe000); - MP_WritePhyUshort(sc, 0x06, 0x5810); - MP_WritePhyUshort(sc, 0x06, 0x1e20); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x3658); - MP_WritePhyUshort(sc, 0x06, 0x031e); - MP_WritePhyUshort(sc, 0x06, 0x20e0); - MP_WritePhyUshort(sc, 0x06, 0xe022); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x2358); - MP_WritePhyUshort(sc, 0x06, 0xe01e); - MP_WritePhyUshort(sc, 0x06, 0x20e0); - MP_WritePhyUshort(sc, 0x06, 0x8ae6); - MP_WritePhyUshort(sc, 0x06, 0x1f02); - MP_WritePhyUshort(sc, 0x06, 0x9e22); - MP_WritePhyUshort(sc, 0x06, 0xe68a); - MP_WritePhyUshort(sc, 0x06, 0xe6ad); - MP_WritePhyUshort(sc, 0x06, 0x3214); - MP_WritePhyUshort(sc, 0x06, 0xad34); - MP_WritePhyUshort(sc, 0x06, 0x11ef); - MP_WritePhyUshort(sc, 0x06, 0x0258); - MP_WritePhyUshort(sc, 0x06, 0x039e); - MP_WritePhyUshort(sc, 0x06, 0x07ad); - MP_WritePhyUshort(sc, 0x06, 0x3508); - MP_WritePhyUshort(sc, 0x06, 0x5ac0); - MP_WritePhyUshort(sc, 0x06, 0x9f04); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xae02); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf86); - MP_WritePhyUshort(sc, 0x06, 0x3e02); - MP_WritePhyUshort(sc, 0x06, 0x2f50); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefd); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8f9); - MP_WritePhyUshort(sc, 0x06, 0xfae0); - MP_WritePhyUshort(sc, 0x06, 0x8b81); - MP_WritePhyUshort(sc, 0x06, 0xac26); - MP_WritePhyUshort(sc, 0x06, 0x0ee0); - MP_WritePhyUshort(sc, 0x06, 0x8b81); - MP_WritePhyUshort(sc, 0x06, 0xac21); - MP_WritePhyUshort(sc, 0x06, 0x08e0); - MP_WritePhyUshort(sc, 0x06, 0x8b87); - MP_WritePhyUshort(sc, 0x06, 0xac24); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x6bee); - MP_WritePhyUshort(sc, 0x06, 0xe0ea); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0xe0eb); - MP_WritePhyUshort(sc, 0x06, 0x00e2); - MP_WritePhyUshort(sc, 0x06, 0xe07c); - MP_WritePhyUshort(sc, 0x06, 0xe3e0); - MP_WritePhyUshort(sc, 0x06, 0x7da5); - MP_WritePhyUshort(sc, 0x06, 0x1111); - MP_WritePhyUshort(sc, 0x06, 0x15d2); - MP_WritePhyUshort(sc, 0x06, 0x60d6); - MP_WritePhyUshort(sc, 0x06, 0x6666); - MP_WritePhyUshort(sc, 0x06, 0x0207); - MP_WritePhyUshort(sc, 0x06, 0xf9d2); - MP_WritePhyUshort(sc, 0x06, 0xa0d6); - MP_WritePhyUshort(sc, 0x06, 0xaaaa); - MP_WritePhyUshort(sc, 0x06, 0x0207); - MP_WritePhyUshort(sc, 0x06, 0xf902); - MP_WritePhyUshort(sc, 0x06, 0x825c); - MP_WritePhyUshort(sc, 0x06, 0xae44); - MP_WritePhyUshort(sc, 0x06, 0xa566); - MP_WritePhyUshort(sc, 0x06, 0x6602); - MP_WritePhyUshort(sc, 0x06, 0xae38); - MP_WritePhyUshort(sc, 0x06, 0xa5aa); - MP_WritePhyUshort(sc, 0x06, 0xaa02); - MP_WritePhyUshort(sc, 0x06, 0xae32); - MP_WritePhyUshort(sc, 0x06, 0xeee0); - MP_WritePhyUshort(sc, 0x06, 0xea04); - MP_WritePhyUshort(sc, 0x06, 0xeee0); - MP_WritePhyUshort(sc, 0x06, 0xeb06); - MP_WritePhyUshort(sc, 0x06, 0xe2e0); - MP_WritePhyUshort(sc, 0x06, 0x7ce3); - MP_WritePhyUshort(sc, 0x06, 0xe07d); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x38e1); - MP_WritePhyUshort(sc, 0x06, 0xe039); - MP_WritePhyUshort(sc, 0x06, 0xad2e); - MP_WritePhyUshort(sc, 0x06, 0x21ad); - MP_WritePhyUshort(sc, 0x06, 0x3f13); - MP_WritePhyUshort(sc, 0x06, 0xe0e4); - MP_WritePhyUshort(sc, 0x06, 0x14e1); - MP_WritePhyUshort(sc, 0x06, 0xe415); - MP_WritePhyUshort(sc, 0x06, 0x6880); - MP_WritePhyUshort(sc, 0x06, 0xe4e4); - MP_WritePhyUshort(sc, 0x06, 0x14e5); - MP_WritePhyUshort(sc, 0x06, 0xe415); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0x5cae); - MP_WritePhyUshort(sc, 0x06, 0x0bac); - MP_WritePhyUshort(sc, 0x06, 0x3e02); - MP_WritePhyUshort(sc, 0x06, 0xae06); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0x8602); - MP_WritePhyUshort(sc, 0x06, 0x82b0); - MP_WritePhyUshort(sc, 0x06, 0xfefd); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e1); - MP_WritePhyUshort(sc, 0x06, 0x8b2e); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x2605); - MP_WritePhyUshort(sc, 0x06, 0x0221); - MP_WritePhyUshort(sc, 0x06, 0xf3f7); - MP_WritePhyUshort(sc, 0x06, 0x28e0); - MP_WritePhyUshort(sc, 0x06, 0x8b81); - MP_WritePhyUshort(sc, 0x06, 0xad21); - MP_WritePhyUshort(sc, 0x06, 0x0502); - MP_WritePhyUshort(sc, 0x06, 0x22f8); - MP_WritePhyUshort(sc, 0x06, 0xf729); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x87ad); - MP_WritePhyUshort(sc, 0x06, 0x2405); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0xebf7); - MP_WritePhyUshort(sc, 0x06, 0x2ae5); - MP_WritePhyUshort(sc, 0x06, 0x8b2e); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b81); - MP_WritePhyUshort(sc, 0x06, 0xad26); - MP_WritePhyUshort(sc, 0x06, 0x0302); - MP_WritePhyUshort(sc, 0x06, 0x2134); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x2109); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x2eac); - MP_WritePhyUshort(sc, 0x06, 0x2003); - MP_WritePhyUshort(sc, 0x06, 0x0283); - MP_WritePhyUshort(sc, 0x06, 0x52e0); - MP_WritePhyUshort(sc, 0x06, 0x8b87); - MP_WritePhyUshort(sc, 0x06, 0xad24); - MP_WritePhyUshort(sc, 0x06, 0x09e0); - MP_WritePhyUshort(sc, 0x06, 0x8b2e); - MP_WritePhyUshort(sc, 0x06, 0xac21); - MP_WritePhyUshort(sc, 0x06, 0x0302); - MP_WritePhyUshort(sc, 0x06, 0x8337); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e1); - MP_WritePhyUshort(sc, 0x06, 0x8b2e); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x2608); - MP_WritePhyUshort(sc, 0x06, 0xe085); - MP_WritePhyUshort(sc, 0x06, 0xd2ad); - MP_WritePhyUshort(sc, 0x06, 0x2502); - MP_WritePhyUshort(sc, 0x06, 0xf628); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x210a); - MP_WritePhyUshort(sc, 0x06, 0xe086); - MP_WritePhyUshort(sc, 0x06, 0x0af6); - MP_WritePhyUshort(sc, 0x06, 0x27a0); - MP_WritePhyUshort(sc, 0x06, 0x0502); - MP_WritePhyUshort(sc, 0x06, 0xf629); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x87ad); - MP_WritePhyUshort(sc, 0x06, 0x2408); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xedad); - MP_WritePhyUshort(sc, 0x06, 0x2002); - MP_WritePhyUshort(sc, 0x06, 0xf62a); - MP_WritePhyUshort(sc, 0x06, 0xe58b); - MP_WritePhyUshort(sc, 0x06, 0x2ea1); - MP_WritePhyUshort(sc, 0x06, 0x0003); - MP_WritePhyUshort(sc, 0x06, 0x0221); - MP_WritePhyUshort(sc, 0x06, 0x11fc); - MP_WritePhyUshort(sc, 0x06, 0x04ee); - MP_WritePhyUshort(sc, 0x06, 0x8aed); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x8aec); - MP_WritePhyUshort(sc, 0x06, 0x0004); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b87); - MP_WritePhyUshort(sc, 0x06, 0xad24); - MP_WritePhyUshort(sc, 0x06, 0x3ae0); - MP_WritePhyUshort(sc, 0x06, 0xe0ea); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0xeb58); - MP_WritePhyUshort(sc, 0x06, 0xf8d1); - MP_WritePhyUshort(sc, 0x06, 0x01e4); - MP_WritePhyUshort(sc, 0x06, 0xe0ea); - MP_WritePhyUshort(sc, 0x06, 0xe5e0); - MP_WritePhyUshort(sc, 0x06, 0xebe0); - MP_WritePhyUshort(sc, 0x06, 0xe07c); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x7d5c); - MP_WritePhyUshort(sc, 0x06, 0x00ff); - MP_WritePhyUshort(sc, 0x06, 0x3c00); - MP_WritePhyUshort(sc, 0x06, 0x1eab); - MP_WritePhyUshort(sc, 0x06, 0x1ce0); - MP_WritePhyUshort(sc, 0x06, 0xe04c); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x4d58); - MP_WritePhyUshort(sc, 0x06, 0xc1e4); - MP_WritePhyUshort(sc, 0x06, 0xe04c); - MP_WritePhyUshort(sc, 0x06, 0xe5e0); - MP_WritePhyUshort(sc, 0x06, 0x4de0); - MP_WritePhyUshort(sc, 0x06, 0xe0ee); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0x3ce4); - MP_WritePhyUshort(sc, 0x06, 0xe0ee); - MP_WritePhyUshort(sc, 0x06, 0xe5e0); - MP_WritePhyUshort(sc, 0x06, 0xeffc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x87ad); - MP_WritePhyUshort(sc, 0x06, 0x2412); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0xeee1); - MP_WritePhyUshort(sc, 0x06, 0xe0ef); - MP_WritePhyUshort(sc, 0x06, 0x59c3); - MP_WritePhyUshort(sc, 0x06, 0xe4e0); - MP_WritePhyUshort(sc, 0x06, 0xeee5); - MP_WritePhyUshort(sc, 0x06, 0xe0ef); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0xed01); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b81); - MP_WritePhyUshort(sc, 0x06, 0xac25); - MP_WritePhyUshort(sc, 0x06, 0x0502); - MP_WritePhyUshort(sc, 0x06, 0x8363); - MP_WritePhyUshort(sc, 0x06, 0xae03); - MP_WritePhyUshort(sc, 0x06, 0x0225); - MP_WritePhyUshort(sc, 0x06, 0x16fc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xf9fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xfae0); - MP_WritePhyUshort(sc, 0x06, 0x860a); - MP_WritePhyUshort(sc, 0x06, 0xa000); - MP_WritePhyUshort(sc, 0x06, 0x19e0); - MP_WritePhyUshort(sc, 0x06, 0x860b); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x331b); - MP_WritePhyUshort(sc, 0x06, 0x109e); - MP_WritePhyUshort(sc, 0x06, 0x04aa); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x06ee); - MP_WritePhyUshort(sc, 0x06, 0x860a); - MP_WritePhyUshort(sc, 0x06, 0x01ae); - MP_WritePhyUshort(sc, 0x06, 0xe602); - MP_WritePhyUshort(sc, 0x06, 0x241e); - MP_WritePhyUshort(sc, 0x06, 0xae14); - MP_WritePhyUshort(sc, 0x06, 0xa001); - MP_WritePhyUshort(sc, 0x06, 0x1402); - MP_WritePhyUshort(sc, 0x06, 0x2426); - MP_WritePhyUshort(sc, 0x06, 0xbf26); - MP_WritePhyUshort(sc, 0x06, 0x6d02); - MP_WritePhyUshort(sc, 0x06, 0x2eb0); - MP_WritePhyUshort(sc, 0x06, 0xee86); - MP_WritePhyUshort(sc, 0x06, 0x0b00); - MP_WritePhyUshort(sc, 0x06, 0xee86); - MP_WritePhyUshort(sc, 0x06, 0x0a02); - MP_WritePhyUshort(sc, 0x06, 0xaf84); - MP_WritePhyUshort(sc, 0x06, 0x3ca0); - MP_WritePhyUshort(sc, 0x06, 0x0252); - MP_WritePhyUshort(sc, 0x06, 0xee86); - MP_WritePhyUshort(sc, 0x06, 0x0400); - MP_WritePhyUshort(sc, 0x06, 0xee86); - MP_WritePhyUshort(sc, 0x06, 0x0500); - MP_WritePhyUshort(sc, 0x06, 0xe086); - MP_WritePhyUshort(sc, 0x06, 0x0be1); - MP_WritePhyUshort(sc, 0x06, 0x8b32); - MP_WritePhyUshort(sc, 0x06, 0x1b10); - MP_WritePhyUshort(sc, 0x06, 0x9e04); - MP_WritePhyUshort(sc, 0x06, 0xaa02); - MP_WritePhyUshort(sc, 0x06, 0xaecb); - MP_WritePhyUshort(sc, 0x06, 0xee86); - MP_WritePhyUshort(sc, 0x06, 0x0b00); - MP_WritePhyUshort(sc, 0x06, 0x0224); - MP_WritePhyUshort(sc, 0x06, 0x3ae2); - MP_WritePhyUshort(sc, 0x06, 0x8604); - MP_WritePhyUshort(sc, 0x06, 0xe386); - MP_WritePhyUshort(sc, 0x06, 0x05ef); - MP_WritePhyUshort(sc, 0x06, 0x65e2); - MP_WritePhyUshort(sc, 0x06, 0x8606); - MP_WritePhyUshort(sc, 0x06, 0xe386); - MP_WritePhyUshort(sc, 0x06, 0x071b); - MP_WritePhyUshort(sc, 0x06, 0x56aa); - MP_WritePhyUshort(sc, 0x06, 0x0eef); - MP_WritePhyUshort(sc, 0x06, 0x56e6); - MP_WritePhyUshort(sc, 0x06, 0x8606); - MP_WritePhyUshort(sc, 0x06, 0xe786); - MP_WritePhyUshort(sc, 0x06, 0x07e2); - MP_WritePhyUshort(sc, 0x06, 0x8609); - MP_WritePhyUshort(sc, 0x06, 0xe686); - MP_WritePhyUshort(sc, 0x06, 0x08e0); - MP_WritePhyUshort(sc, 0x06, 0x8609); - MP_WritePhyUshort(sc, 0x06, 0xa000); - MP_WritePhyUshort(sc, 0x06, 0x07ee); - MP_WritePhyUshort(sc, 0x06, 0x860a); - MP_WritePhyUshort(sc, 0x06, 0x03af); - MP_WritePhyUshort(sc, 0x06, 0x8369); - MP_WritePhyUshort(sc, 0x06, 0x0224); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x2426); - MP_WritePhyUshort(sc, 0x06, 0xae48); - MP_WritePhyUshort(sc, 0x06, 0xa003); - MP_WritePhyUshort(sc, 0x06, 0x21e0); - MP_WritePhyUshort(sc, 0x06, 0x8608); - MP_WritePhyUshort(sc, 0x06, 0xe186); - MP_WritePhyUshort(sc, 0x06, 0x091b); - MP_WritePhyUshort(sc, 0x06, 0x019e); - MP_WritePhyUshort(sc, 0x06, 0x0caa); - MP_WritePhyUshort(sc, 0x06, 0x0502); - MP_WritePhyUshort(sc, 0x06, 0x249d); - MP_WritePhyUshort(sc, 0x06, 0xaee7); - MP_WritePhyUshort(sc, 0x06, 0x0224); - MP_WritePhyUshort(sc, 0x06, 0x8eae); - MP_WritePhyUshort(sc, 0x06, 0xe2ee); - MP_WritePhyUshort(sc, 0x06, 0x860a); - MP_WritePhyUshort(sc, 0x06, 0x04ee); - MP_WritePhyUshort(sc, 0x06, 0x860b); - MP_WritePhyUshort(sc, 0x06, 0x00af); - MP_WritePhyUshort(sc, 0x06, 0x8369); - MP_WritePhyUshort(sc, 0x06, 0xa004); - MP_WritePhyUshort(sc, 0x06, 0x15e0); - MP_WritePhyUshort(sc, 0x06, 0x860b); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x341b); - MP_WritePhyUshort(sc, 0x06, 0x109e); - MP_WritePhyUshort(sc, 0x06, 0x05aa); - MP_WritePhyUshort(sc, 0x06, 0x03af); - MP_WritePhyUshort(sc, 0x06, 0x8383); - MP_WritePhyUshort(sc, 0x06, 0xee86); - MP_WritePhyUshort(sc, 0x06, 0x0a05); - MP_WritePhyUshort(sc, 0x06, 0xae0c); - MP_WritePhyUshort(sc, 0x06, 0xa005); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x0702); - MP_WritePhyUshort(sc, 0x06, 0x2309); - MP_WritePhyUshort(sc, 0x06, 0xee86); - MP_WritePhyUshort(sc, 0x06, 0x0a00); - MP_WritePhyUshort(sc, 0x06, 0xfeef); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfdfc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xf9fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xfbe0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xad25); - MP_WritePhyUshort(sc, 0x06, 0x22e0); - MP_WritePhyUshort(sc, 0x06, 0xe022); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x23e2); - MP_WritePhyUshort(sc, 0x06, 0xe036); - MP_WritePhyUshort(sc, 0x06, 0xe3e0); - MP_WritePhyUshort(sc, 0x06, 0x375a); - MP_WritePhyUshort(sc, 0x06, 0xc40d); - MP_WritePhyUshort(sc, 0x06, 0x0158); - MP_WritePhyUshort(sc, 0x06, 0x021e); - MP_WritePhyUshort(sc, 0x06, 0x20e3); - MP_WritePhyUshort(sc, 0x06, 0x8ae7); - MP_WritePhyUshort(sc, 0x06, 0xac31); - MP_WritePhyUshort(sc, 0x06, 0x60ac); - MP_WritePhyUshort(sc, 0x06, 0x3a08); - MP_WritePhyUshort(sc, 0x06, 0xac3e); - MP_WritePhyUshort(sc, 0x06, 0x26ae); - MP_WritePhyUshort(sc, 0x06, 0x67af); - MP_WritePhyUshort(sc, 0x06, 0x84db); - MP_WritePhyUshort(sc, 0x06, 0xad37); - MP_WritePhyUshort(sc, 0x06, 0x61e0); - MP_WritePhyUshort(sc, 0x06, 0x8ae8); - MP_WritePhyUshort(sc, 0x06, 0x10e4); - MP_WritePhyUshort(sc, 0x06, 0x8ae8); - MP_WritePhyUshort(sc, 0x06, 0xe18a); - MP_WritePhyUshort(sc, 0x06, 0xe91b); - MP_WritePhyUshort(sc, 0x06, 0x109e); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x51d1); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x863b); - MP_WritePhyUshort(sc, 0x06, 0x022f); - MP_WritePhyUshort(sc, 0x06, 0x50ee); - MP_WritePhyUshort(sc, 0x06, 0x8ae8); - MP_WritePhyUshort(sc, 0x06, 0x00ae); - MP_WritePhyUshort(sc, 0x06, 0x43ad); - MP_WritePhyUshort(sc, 0x06, 0x3627); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xeee1); - MP_WritePhyUshort(sc, 0x06, 0x8aef); - MP_WritePhyUshort(sc, 0x06, 0xef74); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xeae1); - MP_WritePhyUshort(sc, 0x06, 0x8aeb); - MP_WritePhyUshort(sc, 0x06, 0x1b74); - MP_WritePhyUshort(sc, 0x06, 0x9e2e); - MP_WritePhyUshort(sc, 0x06, 0x14e4); - MP_WritePhyUshort(sc, 0x06, 0x8aea); - MP_WritePhyUshort(sc, 0x06, 0xe58a); - MP_WritePhyUshort(sc, 0x06, 0xebef); - MP_WritePhyUshort(sc, 0x06, 0x74e0); - MP_WritePhyUshort(sc, 0x06, 0x8aee); - MP_WritePhyUshort(sc, 0x06, 0xe18a); - MP_WritePhyUshort(sc, 0x06, 0xef1b); - MP_WritePhyUshort(sc, 0x06, 0x479e); - MP_WritePhyUshort(sc, 0x06, 0x0fae); - MP_WritePhyUshort(sc, 0x06, 0x19ee); - MP_WritePhyUshort(sc, 0x06, 0x8aea); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x8aeb); - MP_WritePhyUshort(sc, 0x06, 0x00ae); - MP_WritePhyUshort(sc, 0x06, 0x0fac); - MP_WritePhyUshort(sc, 0x06, 0x390c); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xbf86); - MP_WritePhyUshort(sc, 0x06, 0x3b02); - MP_WritePhyUshort(sc, 0x06, 0x2f50); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0xe800); - MP_WritePhyUshort(sc, 0x06, 0xe68a); - MP_WritePhyUshort(sc, 0x06, 0xe7ff); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefd); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8f9); - MP_WritePhyUshort(sc, 0x06, 0xfaef); - MP_WritePhyUshort(sc, 0x06, 0x69e0); - MP_WritePhyUshort(sc, 0x06, 0xe022); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x2358); - MP_WritePhyUshort(sc, 0x06, 0xc4e1); - MP_WritePhyUshort(sc, 0x06, 0x8b6e); - MP_WritePhyUshort(sc, 0x06, 0x1f10); - MP_WritePhyUshort(sc, 0x06, 0x9e24); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x6ead); - MP_WritePhyUshort(sc, 0x06, 0x2218); - MP_WritePhyUshort(sc, 0x06, 0xac27); - MP_WritePhyUshort(sc, 0x06, 0x0dac); - MP_WritePhyUshort(sc, 0x06, 0x2605); - MP_WritePhyUshort(sc, 0x06, 0x0203); - MP_WritePhyUshort(sc, 0x06, 0x8fae); - MP_WritePhyUshort(sc, 0x06, 0x1302); - MP_WritePhyUshort(sc, 0x06, 0x03c8); - MP_WritePhyUshort(sc, 0x06, 0xae0e); - MP_WritePhyUshort(sc, 0x06, 0x0203); - MP_WritePhyUshort(sc, 0x06, 0xe102); - MP_WritePhyUshort(sc, 0x06, 0x8520); - MP_WritePhyUshort(sc, 0x06, 0xae06); - MP_WritePhyUshort(sc, 0x06, 0x0203); - MP_WritePhyUshort(sc, 0x06, 0x8f02); - MP_WritePhyUshort(sc, 0x06, 0x8566); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefd); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x82ad); - MP_WritePhyUshort(sc, 0x06, 0x2737); - MP_WritePhyUshort(sc, 0x06, 0xbf86); - MP_WritePhyUshort(sc, 0x06, 0x4402); - MP_WritePhyUshort(sc, 0x06, 0x2f23); - MP_WritePhyUshort(sc, 0x06, 0xac28); - MP_WritePhyUshort(sc, 0x06, 0x2ed1); - MP_WritePhyUshort(sc, 0x06, 0x01bf); - MP_WritePhyUshort(sc, 0x06, 0x8647); - MP_WritePhyUshort(sc, 0x06, 0x022f); - MP_WritePhyUshort(sc, 0x06, 0x50bf); - MP_WritePhyUshort(sc, 0x06, 0x8641); - MP_WritePhyUshort(sc, 0x06, 0x022f); - MP_WritePhyUshort(sc, 0x06, 0x23e5); - MP_WritePhyUshort(sc, 0x06, 0x8af0); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x22e1); - MP_WritePhyUshort(sc, 0x06, 0xe023); - MP_WritePhyUshort(sc, 0x06, 0xac2e); - MP_WritePhyUshort(sc, 0x06, 0x04d1); - MP_WritePhyUshort(sc, 0x06, 0x01ae); - MP_WritePhyUshort(sc, 0x06, 0x02d1); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x8641); - MP_WritePhyUshort(sc, 0x06, 0x022f); - MP_WritePhyUshort(sc, 0x06, 0x50d1); - MP_WritePhyUshort(sc, 0x06, 0x01bf); - MP_WritePhyUshort(sc, 0x06, 0x8644); - MP_WritePhyUshort(sc, 0x06, 0x022f); - MP_WritePhyUshort(sc, 0x06, 0x50ef); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xbf86); - MP_WritePhyUshort(sc, 0x06, 0x4702); - MP_WritePhyUshort(sc, 0x06, 0x2f23); - MP_WritePhyUshort(sc, 0x06, 0xad28); - MP_WritePhyUshort(sc, 0x06, 0x19d1); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x8644); - MP_WritePhyUshort(sc, 0x06, 0x022f); - MP_WritePhyUshort(sc, 0x06, 0x50e1); - MP_WritePhyUshort(sc, 0x06, 0x8af0); - MP_WritePhyUshort(sc, 0x06, 0xbf86); - MP_WritePhyUshort(sc, 0x06, 0x4102); - MP_WritePhyUshort(sc, 0x06, 0x2f50); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf86); - MP_WritePhyUshort(sc, 0x06, 0x4702); - MP_WritePhyUshort(sc, 0x06, 0x2f50); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xe0e2); - MP_WritePhyUshort(sc, 0x06, 0xfee1); - MP_WritePhyUshort(sc, 0x06, 0xe2ff); - MP_WritePhyUshort(sc, 0x06, 0xad2e); - MP_WritePhyUshort(sc, 0x06, 0x63e0); - MP_WritePhyUshort(sc, 0x06, 0xe038); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x39ad); - MP_WritePhyUshort(sc, 0x06, 0x2f10); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x34e1); - MP_WritePhyUshort(sc, 0x06, 0xe035); - MP_WritePhyUshort(sc, 0x06, 0xf726); - MP_WritePhyUshort(sc, 0x06, 0xe4e0); - MP_WritePhyUshort(sc, 0x06, 0x34e5); - MP_WritePhyUshort(sc, 0x06, 0xe035); - MP_WritePhyUshort(sc, 0x06, 0xae0e); - MP_WritePhyUshort(sc, 0x06, 0xe0e2); - MP_WritePhyUshort(sc, 0x06, 0xd6e1); - MP_WritePhyUshort(sc, 0x06, 0xe2d7); - MP_WritePhyUshort(sc, 0x06, 0xf728); - MP_WritePhyUshort(sc, 0x06, 0xe4e2); - MP_WritePhyUshort(sc, 0x06, 0xd6e5); - MP_WritePhyUshort(sc, 0x06, 0xe2d7); - MP_WritePhyUshort(sc, 0x06, 0xe0e2); - MP_WritePhyUshort(sc, 0x06, 0x34e1); - MP_WritePhyUshort(sc, 0x06, 0xe235); - MP_WritePhyUshort(sc, 0x06, 0xf72b); - MP_WritePhyUshort(sc, 0x06, 0xe4e2); - MP_WritePhyUshort(sc, 0x06, 0x34e5); - MP_WritePhyUshort(sc, 0x06, 0xe235); - MP_WritePhyUshort(sc, 0x06, 0xd07d); - MP_WritePhyUshort(sc, 0x06, 0xb0fe); - MP_WritePhyUshort(sc, 0x06, 0xe0e2); - MP_WritePhyUshort(sc, 0x06, 0x34e1); - MP_WritePhyUshort(sc, 0x06, 0xe235); - MP_WritePhyUshort(sc, 0x06, 0xf62b); - MP_WritePhyUshort(sc, 0x06, 0xe4e2); - MP_WritePhyUshort(sc, 0x06, 0x34e5); - MP_WritePhyUshort(sc, 0x06, 0xe235); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x34e1); - MP_WritePhyUshort(sc, 0x06, 0xe035); - MP_WritePhyUshort(sc, 0x06, 0xf626); - MP_WritePhyUshort(sc, 0x06, 0xe4e0); - MP_WritePhyUshort(sc, 0x06, 0x34e5); - MP_WritePhyUshort(sc, 0x06, 0xe035); - MP_WritePhyUshort(sc, 0x06, 0xe0e2); - MP_WritePhyUshort(sc, 0x06, 0xd6e1); - MP_WritePhyUshort(sc, 0x06, 0xe2d7); - MP_WritePhyUshort(sc, 0x06, 0xf628); - MP_WritePhyUshort(sc, 0x06, 0xe4e2); - MP_WritePhyUshort(sc, 0x06, 0xd6e5); - MP_WritePhyUshort(sc, 0x06, 0xe2d7); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xae20); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0xa725); - MP_WritePhyUshort(sc, 0x06, 0xe50a); - MP_WritePhyUshort(sc, 0x06, 0x1de5); - MP_WritePhyUshort(sc, 0x06, 0x0a2c); - MP_WritePhyUshort(sc, 0x06, 0xe50a); - MP_WritePhyUshort(sc, 0x06, 0x6de5); - MP_WritePhyUshort(sc, 0x06, 0x0a1d); - MP_WritePhyUshort(sc, 0x06, 0xe50a); - MP_WritePhyUshort(sc, 0x06, 0x1ce5); - MP_WritePhyUshort(sc, 0x06, 0x0a2d); - MP_WritePhyUshort(sc, 0x06, 0xa755); - MP_WritePhyUshort(sc, 0x06, 0x00e2); - MP_WritePhyUshort(sc, 0x06, 0x3488); - MP_WritePhyUshort(sc, 0x06, 0xe200); - MP_WritePhyUshort(sc, 0x06, 0xcce2); - MP_WritePhyUshort(sc, 0x06, 0x0055); - MP_WritePhyUshort(sc, 0x06, 0xe020); - MP_WritePhyUshort(sc, 0x06, 0x55e2); - MP_WritePhyUshort(sc, 0x06, 0xd600); - MP_WritePhyUshort(sc, 0x06, 0xe24a); - PhyRegValue = MP_ReadPhyUshort(sc, 0x01); - PhyRegValue |= BIT_0; - MP_WritePhyUshort(sc, 0x01, PhyRegValue); - PhyRegValue = MP_ReadPhyUshort(sc, 0x00); - PhyRegValue |= BIT_0; - MP_WritePhyUshort(sc, 0x00, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x17, 0x2179); - MP_WritePhyUshort(sc, 0x1f, 0x0001); - MP_WritePhyUshort(sc, 0x10, 0xf274); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0042); - MP_WritePhyUshort(sc, 0x15, 0x0f00); - MP_WritePhyUshort(sc, 0x15, 0x0f00); - MP_WritePhyUshort(sc, 0x16, 0x7408); - MP_WritePhyUshort(sc, 0x15, 0x0e00); - MP_WritePhyUshort(sc, 0x15, 0x0f00); - MP_WritePhyUshort(sc, 0x15, 0x0f01); - MP_WritePhyUshort(sc, 0x16, 0x4000); - MP_WritePhyUshort(sc, 0x15, 0x0e01); - MP_WritePhyUshort(sc, 0x15, 0x0f01); - MP_WritePhyUshort(sc, 0x15, 0x0f02); - MP_WritePhyUshort(sc, 0x16, 0x9400); - MP_WritePhyUshort(sc, 0x15, 0x0e02); - MP_WritePhyUshort(sc, 0x15, 0x0f02); - MP_WritePhyUshort(sc, 0x15, 0x0f03); - MP_WritePhyUshort(sc, 0x16, 0x7408); - MP_WritePhyUshort(sc, 0x15, 0x0e03); - MP_WritePhyUshort(sc, 0x15, 0x0f03); - MP_WritePhyUshort(sc, 0x15, 0x0f04); - MP_WritePhyUshort(sc, 0x16, 0x4008); - MP_WritePhyUshort(sc, 0x15, 0x0e04); - MP_WritePhyUshort(sc, 0x15, 0x0f04); - MP_WritePhyUshort(sc, 0x15, 0x0f05); - MP_WritePhyUshort(sc, 0x16, 0x9400); - MP_WritePhyUshort(sc, 0x15, 0x0e05); - MP_WritePhyUshort(sc, 0x15, 0x0f05); - MP_WritePhyUshort(sc, 0x15, 0x0f06); - MP_WritePhyUshort(sc, 0x16, 0x0803); - MP_WritePhyUshort(sc, 0x15, 0x0e06); - MP_WritePhyUshort(sc, 0x15, 0x0f06); - MP_WritePhyUshort(sc, 0x15, 0x0d00); - MP_WritePhyUshort(sc, 0x15, 0x0100); - MP_WritePhyUshort(sc, 0x1f, 0x0001); - MP_WritePhyUshort(sc, 0x10, 0xf074); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x17, 0x2149); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x00); - if (PhyRegValue & 0x0080) - break; - } - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); + re_mdio_write(sc,0x1f, 0x0A43); + re_mdio_write(sc,0x13, 0x8146); + re_mdio_write(sc,0x14, 0x8700); + re_mdio_write(sc,0x13, 0xB82E); + re_mdio_write(sc,0x14, 0x0001); + + re_mdio_write(sc, 0x1F, 0x0A43); + + re_mdio_write(sc, 0x13, 0x83DD); + re_mdio_write(sc, 0x14, 0xAF83); + re_mdio_write(sc, 0x14, 0xE9AF); + re_mdio_write(sc, 0x14, 0x83EE); + re_mdio_write(sc, 0x14, 0xAF83); + re_mdio_write(sc, 0x14, 0xF1A1); + re_mdio_write(sc, 0x14, 0x83F4); + re_mdio_write(sc, 0x14, 0xD149); + re_mdio_write(sc, 0x14, 0xAF06); + re_mdio_write(sc, 0x14, 0x47AF); + re_mdio_write(sc, 0x14, 0x0000); + re_mdio_write(sc, 0x14, 0xAF00); + re_mdio_write(sc, 0x14, 0x00AF); + re_mdio_write(sc, 0x14, 0x0000); + + re_mdio_write(sc, 0x13, 0xB818); + re_mdio_write(sc, 0x14, 0x0645); + + re_mdio_write(sc, 0x13, 0xB81A); + re_mdio_write(sc, 0x14, 0x0000); + + re_mdio_write(sc, 0x13, 0xB81C); + re_mdio_write(sc, 0x14, 0x0000); + + re_mdio_write(sc, 0x13, 0xB81E); + re_mdio_write(sc, 0x14, 0x0000); + + re_mdio_write(sc, 0x13, 0xB832); + re_mdio_write(sc, 0x14, 0x0001); + + re_mdio_write(sc,0x1F, 0x0A43); + re_mdio_write(sc,0x13, 0x0000); + re_mdio_write(sc,0x14, 0x0000); + re_mdio_write(sc,0x1f, 0x0B82); + PhyRegValue = re_mdio_read(sc, 0x17); PhyRegValue &= ~(BIT_0); - if (sc->RequiredSecLanDonglePatch) - PhyRegValue &= ~(BIT_2); - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); - PhyRegValue |= BIT_14; - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - MP_WritePhyUshort(sc, 0x1e, 0x0020); - PhyRegValue = MP_ReadPhyUshort(sc, 0x1b); - PhyRegValue |= BIT_7; - MP_WritePhyUshort(sc, 0x1b, PhyRegValue); - MP_WritePhyUshort(sc, 0x1e, 0x0041); - MP_WritePhyUshort(sc, 0x15, 0x0e02); - MP_WritePhyUshort(sc, 0x1e, 0x0028); - PhyRegValue = MP_ReadPhyUshort(sc, 0x19); - PhyRegValue |= BIT_15; - MP_WritePhyUshort(sc, 0x19, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - } - else { - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x1800); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - MP_WritePhyUshort(sc, 0x17, 0x0117); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x002C); - MP_WritePhyUshort(sc, 0x1B, 0x5000); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x16, 0x4104); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x1E); - PhyRegValue &= 0x03FF; - if (PhyRegValue == 0x000C) - break; - } - MP_WritePhyUshort(sc, 0x1f, 0x0005); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x07); - if ((PhyRegValue & BIT_5) == 0) - break; - } - PhyRegValue = MP_ReadPhyUshort(sc, 0x07); - if (PhyRegValue & BIT_5) { - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x00a1); - MP_WritePhyUshort(sc, 0x17, 0x1000); - MP_WritePhyUshort(sc, 0x17, 0x0000); - MP_WritePhyUshort(sc, 0x17, 0x2000); - MP_WritePhyUshort(sc, 0x1e, 0x002f); - MP_WritePhyUshort(sc, 0x18, 0x9bfb); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x07, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - } - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x0080); - PhyRegValue = MP_ReadPhyUshort(sc, 0x00); - PhyRegValue &= ~(BIT_7); - MP_WritePhyUshort(sc, 0x00, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0002); - PhyRegValue = MP_ReadPhyUshort(sc, 0x08); - PhyRegValue &= ~(BIT_7); - MP_WritePhyUshort(sc, 0x08, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - MP_WritePhyUshort(sc, 0x16, 0x0306); - MP_WritePhyUshort(sc, 0x16, 0x0307); - MP_WritePhyUshort(sc, 0x15, 0x000e); - MP_WritePhyUshort(sc, 0x19, 0x000a); - MP_WritePhyUshort(sc, 0x15, 0x0010); - MP_WritePhyUshort(sc, 0x19, 0x0008); - MP_WritePhyUshort(sc, 0x15, 0x0018); - MP_WritePhyUshort(sc, 0x19, 0x4801); - MP_WritePhyUshort(sc, 0x15, 0x0019); - MP_WritePhyUshort(sc, 0x19, 0x6801); - MP_WritePhyUshort(sc, 0x15, 0x001a); - MP_WritePhyUshort(sc, 0x19, 0x66a1); - MP_WritePhyUshort(sc, 0x15, 0x001f); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0020); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0021); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0022); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0023); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0024); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0025); - MP_WritePhyUshort(sc, 0x19, 0x64a1); - MP_WritePhyUshort(sc, 0x15, 0x0026); - MP_WritePhyUshort(sc, 0x19, 0x40ea); - MP_WritePhyUshort(sc, 0x15, 0x0027); - MP_WritePhyUshort(sc, 0x19, 0x4503); - MP_WritePhyUshort(sc, 0x15, 0x0028); - MP_WritePhyUshort(sc, 0x19, 0x9f00); - MP_WritePhyUshort(sc, 0x15, 0x0029); - MP_WritePhyUshort(sc, 0x19, 0xa631); - MP_WritePhyUshort(sc, 0x15, 0x002a); - MP_WritePhyUshort(sc, 0x19, 0x9717); - MP_WritePhyUshort(sc, 0x15, 0x002b); - MP_WritePhyUshort(sc, 0x19, 0x302c); - MP_WritePhyUshort(sc, 0x15, 0x002c); - MP_WritePhyUshort(sc, 0x19, 0x4802); - MP_WritePhyUshort(sc, 0x15, 0x002d); - MP_WritePhyUshort(sc, 0x19, 0x58da); - MP_WritePhyUshort(sc, 0x15, 0x002e); - MP_WritePhyUshort(sc, 0x19, 0x400d); - MP_WritePhyUshort(sc, 0x15, 0x002f); - MP_WritePhyUshort(sc, 0x19, 0x4488); - MP_WritePhyUshort(sc, 0x15, 0x0030); - MP_WritePhyUshort(sc, 0x19, 0x9e00); - MP_WritePhyUshort(sc, 0x15, 0x0031); - MP_WritePhyUshort(sc, 0x19, 0x63c8); - MP_WritePhyUshort(sc, 0x15, 0x0032); - MP_WritePhyUshort(sc, 0x19, 0x6481); - MP_WritePhyUshort(sc, 0x15, 0x0033); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0034); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0035); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0036); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0037); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0038); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0039); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x003a); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x003b); - MP_WritePhyUshort(sc, 0x19, 0x63e8); - MP_WritePhyUshort(sc, 0x15, 0x003c); - MP_WritePhyUshort(sc, 0x19, 0x7d00); - MP_WritePhyUshort(sc, 0x15, 0x003d); - MP_WritePhyUshort(sc, 0x19, 0x59d4); - MP_WritePhyUshort(sc, 0x15, 0x003e); - MP_WritePhyUshort(sc, 0x19, 0x63f8); - MP_WritePhyUshort(sc, 0x15, 0x0040); - MP_WritePhyUshort(sc, 0x19, 0x64a1); - MP_WritePhyUshort(sc, 0x15, 0x0041); - MP_WritePhyUshort(sc, 0x19, 0x30de); - MP_WritePhyUshort(sc, 0x15, 0x0044); - MP_WritePhyUshort(sc, 0x19, 0x480f); - MP_WritePhyUshort(sc, 0x15, 0x0045); - MP_WritePhyUshort(sc, 0x19, 0x6800); - MP_WritePhyUshort(sc, 0x15, 0x0046); - MP_WritePhyUshort(sc, 0x19, 0x6680); - MP_WritePhyUshort(sc, 0x15, 0x0047); - MP_WritePhyUshort(sc, 0x19, 0x7c10); - MP_WritePhyUshort(sc, 0x15, 0x0048); - MP_WritePhyUshort(sc, 0x19, 0x63c8); - MP_WritePhyUshort(sc, 0x15, 0x0049); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004a); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004b); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004c); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004d); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004e); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004f); - MP_WritePhyUshort(sc, 0x19, 0x40ea); - MP_WritePhyUshort(sc, 0x15, 0x0050); - MP_WritePhyUshort(sc, 0x19, 0x4503); - MP_WritePhyUshort(sc, 0x15, 0x0051); - MP_WritePhyUshort(sc, 0x19, 0x58ca); - MP_WritePhyUshort(sc, 0x15, 0x0052); - MP_WritePhyUshort(sc, 0x19, 0x63c8); - MP_WritePhyUshort(sc, 0x15, 0x0053); - MP_WritePhyUshort(sc, 0x19, 0x63d8); - MP_WritePhyUshort(sc, 0x15, 0x0054); - MP_WritePhyUshort(sc, 0x19, 0x66a0); - MP_WritePhyUshort(sc, 0x15, 0x0055); - MP_WritePhyUshort(sc, 0x19, 0x9f00); - MP_WritePhyUshort(sc, 0x15, 0x0056); - MP_WritePhyUshort(sc, 0x19, 0x3000); - MP_WritePhyUshort(sc, 0x15, 0x00a1); - MP_WritePhyUshort(sc, 0x19, 0x3044); - MP_WritePhyUshort(sc, 0x15, 0x00ab); - MP_WritePhyUshort(sc, 0x19, 0x5820); - MP_WritePhyUshort(sc, 0x15, 0x00ac); - MP_WritePhyUshort(sc, 0x19, 0x5e04); - MP_WritePhyUshort(sc, 0x15, 0x00ad); - MP_WritePhyUshort(sc, 0x19, 0xb60c); - MP_WritePhyUshort(sc, 0x15, 0x00af); - MP_WritePhyUshort(sc, 0x19, 0x000a); - MP_WritePhyUshort(sc, 0x15, 0x00b2); - MP_WritePhyUshort(sc, 0x19, 0x30b9); - MP_WritePhyUshort(sc, 0x15, 0x00b9); - MP_WritePhyUshort(sc, 0x19, 0x4408); - MP_WritePhyUshort(sc, 0x15, 0x00ba); - MP_WritePhyUshort(sc, 0x19, 0x480b); - MP_WritePhyUshort(sc, 0x15, 0x00bb); - MP_WritePhyUshort(sc, 0x19, 0x5e00); - MP_WritePhyUshort(sc, 0x15, 0x00bc); - MP_WritePhyUshort(sc, 0x19, 0x405f); - MP_WritePhyUshort(sc, 0x15, 0x00bd); - MP_WritePhyUshort(sc, 0x19, 0x4448); - MP_WritePhyUshort(sc, 0x15, 0x00be); - MP_WritePhyUshort(sc, 0x19, 0x4020); - MP_WritePhyUshort(sc, 0x15, 0x00bf); - MP_WritePhyUshort(sc, 0x19, 0x4468); - MP_WritePhyUshort(sc, 0x15, 0x00c0); - MP_WritePhyUshort(sc, 0x19, 0x9c02); - MP_WritePhyUshort(sc, 0x15, 0x00c1); - MP_WritePhyUshort(sc, 0x19, 0x58a0); - MP_WritePhyUshort(sc, 0x15, 0x00c2); - MP_WritePhyUshort(sc, 0x19, 0xb605); - MP_WritePhyUshort(sc, 0x15, 0x00c3); - MP_WritePhyUshort(sc, 0x19, 0xc0d3); - MP_WritePhyUshort(sc, 0x15, 0x00c4); - MP_WritePhyUshort(sc, 0x19, 0x00e6); - MP_WritePhyUshort(sc, 0x15, 0x00c5); - MP_WritePhyUshort(sc, 0x19, 0xdaec); - MP_WritePhyUshort(sc, 0x15, 0x00c6); - MP_WritePhyUshort(sc, 0x19, 0x00fa); - MP_WritePhyUshort(sc, 0x15, 0x00c7); - MP_WritePhyUshort(sc, 0x19, 0x9df9); - MP_WritePhyUshort(sc, 0x15, 0x0112); - MP_WritePhyUshort(sc, 0x19, 0x6421); - MP_WritePhyUshort(sc, 0x15, 0x0113); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x0114); - MP_WritePhyUshort(sc, 0x19, 0x63f0); - MP_WritePhyUshort(sc, 0x15, 0x0115); - MP_WritePhyUshort(sc, 0x19, 0x4003); - MP_WritePhyUshort(sc, 0x15, 0x0116); - MP_WritePhyUshort(sc, 0x19, 0x4418); - MP_WritePhyUshort(sc, 0x15, 0x0117); - MP_WritePhyUshort(sc, 0x19, 0x9b00); - MP_WritePhyUshort(sc, 0x15, 0x0118); - MP_WritePhyUshort(sc, 0x19, 0x6461); - MP_WritePhyUshort(sc, 0x15, 0x0119); - MP_WritePhyUshort(sc, 0x19, 0x64e1); - MP_WritePhyUshort(sc, 0x15, 0x011a); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0150); - MP_WritePhyUshort(sc, 0x19, 0x7c80); - MP_WritePhyUshort(sc, 0x15, 0x0151); - MP_WritePhyUshort(sc, 0x19, 0x6461); - MP_WritePhyUshort(sc, 0x15, 0x0152); - MP_WritePhyUshort(sc, 0x19, 0x4003); - MP_WritePhyUshort(sc, 0x15, 0x0153); - MP_WritePhyUshort(sc, 0x19, 0x4540); - MP_WritePhyUshort(sc, 0x15, 0x0154); - MP_WritePhyUshort(sc, 0x19, 0x9f00); - MP_WritePhyUshort(sc, 0x15, 0x0155); - MP_WritePhyUshort(sc, 0x19, 0x9d00); - MP_WritePhyUshort(sc, 0x15, 0x0156); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x0157); - MP_WritePhyUshort(sc, 0x19, 0x6421); - MP_WritePhyUshort(sc, 0x15, 0x0158); - MP_WritePhyUshort(sc, 0x19, 0x7c80); - MP_WritePhyUshort(sc, 0x15, 0x0159); - MP_WritePhyUshort(sc, 0x19, 0x64a1); - MP_WritePhyUshort(sc, 0x15, 0x015a); - MP_WritePhyUshort(sc, 0x19, 0x30fe); - MP_WritePhyUshort(sc, 0x15, 0x029c); - MP_WritePhyUshort(sc, 0x19, 0x0070); - MP_WritePhyUshort(sc, 0x15, 0x02b2); - MP_WritePhyUshort(sc, 0x19, 0x005a); - MP_WritePhyUshort(sc, 0x15, 0x02bd); - MP_WritePhyUshort(sc, 0x19, 0xa522); - MP_WritePhyUshort(sc, 0x15, 0x02ce); - MP_WritePhyUshort(sc, 0x19, 0xb63e); - MP_WritePhyUshort(sc, 0x15, 0x02d9); - MP_WritePhyUshort(sc, 0x19, 0x32df); - MP_WritePhyUshort(sc, 0x15, 0x02df); - MP_WritePhyUshort(sc, 0x19, 0x4500); - MP_WritePhyUshort(sc, 0x15, 0x02f4); - MP_WritePhyUshort(sc, 0x19, 0xb618); - MP_WritePhyUshort(sc, 0x15, 0x02fb); - MP_WritePhyUshort(sc, 0x19, 0xb900); - MP_WritePhyUshort(sc, 0x15, 0x02fc); - MP_WritePhyUshort(sc, 0x19, 0x49b5); - MP_WritePhyUshort(sc, 0x15, 0x02fd); - MP_WritePhyUshort(sc, 0x19, 0x6812); - MP_WritePhyUshort(sc, 0x15, 0x02fe); - MP_WritePhyUshort(sc, 0x19, 0x66a0); - MP_WritePhyUshort(sc, 0x15, 0x02ff); - MP_WritePhyUshort(sc, 0x19, 0x9900); - MP_WritePhyUshort(sc, 0x15, 0x0300); - MP_WritePhyUshort(sc, 0x19, 0x64a0); - MP_WritePhyUshort(sc, 0x15, 0x0301); - MP_WritePhyUshort(sc, 0x19, 0x3316); - MP_WritePhyUshort(sc, 0x15, 0x0308); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x030c); - MP_WritePhyUshort(sc, 0x19, 0x3000); - MP_WritePhyUshort(sc, 0x15, 0x0312); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0313); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0314); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0315); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0316); - MP_WritePhyUshort(sc, 0x19, 0x49b5); - MP_WritePhyUshort(sc, 0x15, 0x0317); - MP_WritePhyUshort(sc, 0x19, 0x7d00); - MP_WritePhyUshort(sc, 0x15, 0x0318); - MP_WritePhyUshort(sc, 0x19, 0x4d00); - MP_WritePhyUshort(sc, 0x15, 0x0319); - MP_WritePhyUshort(sc, 0x19, 0x6810); - MP_WritePhyUshort(sc, 0x15, 0x031a); - MP_WritePhyUshort(sc, 0x19, 0x6c08); - MP_WritePhyUshort(sc, 0x15, 0x031b); - MP_WritePhyUshort(sc, 0x19, 0x4925); - MP_WritePhyUshort(sc, 0x15, 0x031c); - MP_WritePhyUshort(sc, 0x19, 0x403b); - MP_WritePhyUshort(sc, 0x15, 0x031d); - MP_WritePhyUshort(sc, 0x19, 0xa602); - MP_WritePhyUshort(sc, 0x15, 0x031e); - MP_WritePhyUshort(sc, 0x19, 0x402f); - MP_WritePhyUshort(sc, 0x15, 0x031f); - MP_WritePhyUshort(sc, 0x19, 0x4484); - MP_WritePhyUshort(sc, 0x15, 0x0320); - MP_WritePhyUshort(sc, 0x19, 0x40c8); - MP_WritePhyUshort(sc, 0x15, 0x0321); - MP_WritePhyUshort(sc, 0x19, 0x44c4); - MP_WritePhyUshort(sc, 0x15, 0x0322); - MP_WritePhyUshort(sc, 0x19, 0x404f); - MP_WritePhyUshort(sc, 0x15, 0x0323); - MP_WritePhyUshort(sc, 0x19, 0x44c8); - MP_WritePhyUshort(sc, 0x15, 0x0324); - MP_WritePhyUshort(sc, 0x19, 0xd64f); - MP_WritePhyUshort(sc, 0x15, 0x0325); - MP_WritePhyUshort(sc, 0x19, 0x00e7); - MP_WritePhyUshort(sc, 0x15, 0x0326); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x0327); - MP_WritePhyUshort(sc, 0x19, 0x8203); - MP_WritePhyUshort(sc, 0x15, 0x0328); - MP_WritePhyUshort(sc, 0x19, 0x4d48); - MP_WritePhyUshort(sc, 0x15, 0x0329); - MP_WritePhyUshort(sc, 0x19, 0x332b); - MP_WritePhyUshort(sc, 0x15, 0x032a); - MP_WritePhyUshort(sc, 0x19, 0x4d40); - MP_WritePhyUshort(sc, 0x15, 0x032c); - MP_WritePhyUshort(sc, 0x19, 0x00f8); - MP_WritePhyUshort(sc, 0x15, 0x032d); - MP_WritePhyUshort(sc, 0x19, 0x82b2); - MP_WritePhyUshort(sc, 0x15, 0x032f); - MP_WritePhyUshort(sc, 0x19, 0x00b0); - MP_WritePhyUshort(sc, 0x15, 0x0332); - MP_WritePhyUshort(sc, 0x19, 0x91f2); - MP_WritePhyUshort(sc, 0x15, 0x033f); - MP_WritePhyUshort(sc, 0x19, 0xb6cd); - MP_WritePhyUshort(sc, 0x15, 0x0340); - MP_WritePhyUshort(sc, 0x19, 0x9e01); - MP_WritePhyUshort(sc, 0x15, 0x0341); - MP_WritePhyUshort(sc, 0x19, 0xd11d); - MP_WritePhyUshort(sc, 0x15, 0x0342); - MP_WritePhyUshort(sc, 0x19, 0x009d); - MP_WritePhyUshort(sc, 0x15, 0x0343); - MP_WritePhyUshort(sc, 0x19, 0xbb1c); - MP_WritePhyUshort(sc, 0x15, 0x0344); - MP_WritePhyUshort(sc, 0x19, 0x8102); - MP_WritePhyUshort(sc, 0x15, 0x0345); - MP_WritePhyUshort(sc, 0x19, 0x3348); - MP_WritePhyUshort(sc, 0x15, 0x0346); - MP_WritePhyUshort(sc, 0x19, 0xa231); - MP_WritePhyUshort(sc, 0x15, 0x0347); - MP_WritePhyUshort(sc, 0x19, 0x335b); - MP_WritePhyUshort(sc, 0x15, 0x0348); - MP_WritePhyUshort(sc, 0x19, 0x91f7); - MP_WritePhyUshort(sc, 0x15, 0x0349); - MP_WritePhyUshort(sc, 0x19, 0xc218); - MP_WritePhyUshort(sc, 0x15, 0x034a); - MP_WritePhyUshort(sc, 0x19, 0x00f5); - MP_WritePhyUshort(sc, 0x15, 0x034b); - MP_WritePhyUshort(sc, 0x19, 0x335b); - MP_WritePhyUshort(sc, 0x15, 0x034c); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x034d); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x034e); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x034f); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0350); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x035b); - MP_WritePhyUshort(sc, 0x19, 0xa23c); - MP_WritePhyUshort(sc, 0x15, 0x035c); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x035d); - MP_WritePhyUshort(sc, 0x19, 0x4c00); - MP_WritePhyUshort(sc, 0x15, 0x035e); - MP_WritePhyUshort(sc, 0x19, 0x3397); - MP_WritePhyUshort(sc, 0x15, 0x0363); - MP_WritePhyUshort(sc, 0x19, 0xb6a9); - MP_WritePhyUshort(sc, 0x15, 0x0366); - MP_WritePhyUshort(sc, 0x19, 0x00f5); - MP_WritePhyUshort(sc, 0x15, 0x0382); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x0388); - MP_WritePhyUshort(sc, 0x19, 0x0084); - MP_WritePhyUshort(sc, 0x15, 0x0389); - MP_WritePhyUshort(sc, 0x19, 0xdd17); - MP_WritePhyUshort(sc, 0x15, 0x038a); - MP_WritePhyUshort(sc, 0x19, 0x000b); - MP_WritePhyUshort(sc, 0x15, 0x038b); - MP_WritePhyUshort(sc, 0x19, 0xa10a); - MP_WritePhyUshort(sc, 0x15, 0x038c); - MP_WritePhyUshort(sc, 0x19, 0x337e); - MP_WritePhyUshort(sc, 0x15, 0x038d); - MP_WritePhyUshort(sc, 0x19, 0x6c0b); - MP_WritePhyUshort(sc, 0x15, 0x038e); - MP_WritePhyUshort(sc, 0x19, 0xa107); - MP_WritePhyUshort(sc, 0x15, 0x038f); - MP_WritePhyUshort(sc, 0x19, 0x6c08); - MP_WritePhyUshort(sc, 0x15, 0x0390); - MP_WritePhyUshort(sc, 0x19, 0xc017); - MP_WritePhyUshort(sc, 0x15, 0x0391); - MP_WritePhyUshort(sc, 0x19, 0x0004); - MP_WritePhyUshort(sc, 0x15, 0x0392); - MP_WritePhyUshort(sc, 0x19, 0xd64f); - MP_WritePhyUshort(sc, 0x15, 0x0393); - MP_WritePhyUshort(sc, 0x19, 0x00f4); - MP_WritePhyUshort(sc, 0x15, 0x0397); - MP_WritePhyUshort(sc, 0x19, 0x4098); - MP_WritePhyUshort(sc, 0x15, 0x0398); - MP_WritePhyUshort(sc, 0x19, 0x4408); - MP_WritePhyUshort(sc, 0x15, 0x0399); - MP_WritePhyUshort(sc, 0x19, 0x55bf); - MP_WritePhyUshort(sc, 0x15, 0x039a); - MP_WritePhyUshort(sc, 0x19, 0x4bb9); - MP_WritePhyUshort(sc, 0x15, 0x039b); - MP_WritePhyUshort(sc, 0x19, 0x6810); - MP_WritePhyUshort(sc, 0x15, 0x039c); - MP_WritePhyUshort(sc, 0x19, 0x4b29); - MP_WritePhyUshort(sc, 0x15, 0x039d); - MP_WritePhyUshort(sc, 0x19, 0x4041); - MP_WritePhyUshort(sc, 0x15, 0x039e); - MP_WritePhyUshort(sc, 0x19, 0x442a); - MP_WritePhyUshort(sc, 0x15, 0x039f); - MP_WritePhyUshort(sc, 0x19, 0x4029); - MP_WritePhyUshort(sc, 0x15, 0x03aa); - MP_WritePhyUshort(sc, 0x19, 0x33b8); - MP_WritePhyUshort(sc, 0x15, 0x03b6); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03b7); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03b8); - MP_WritePhyUshort(sc, 0x19, 0x543f); - MP_WritePhyUshort(sc, 0x15, 0x03b9); - MP_WritePhyUshort(sc, 0x19, 0x499a); - MP_WritePhyUshort(sc, 0x15, 0x03ba); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x03bb); - MP_WritePhyUshort(sc, 0x19, 0x4c40); - MP_WritePhyUshort(sc, 0x15, 0x03bc); - MP_WritePhyUshort(sc, 0x19, 0x490a); - MP_WritePhyUshort(sc, 0x15, 0x03bd); - MP_WritePhyUshort(sc, 0x19, 0x405e); - MP_WritePhyUshort(sc, 0x15, 0x03c2); - MP_WritePhyUshort(sc, 0x19, 0x9a03); - MP_WritePhyUshort(sc, 0x15, 0x03c4); - MP_WritePhyUshort(sc, 0x19, 0x0015); - MP_WritePhyUshort(sc, 0x15, 0x03c5); - MP_WritePhyUshort(sc, 0x19, 0x9e03); - MP_WritePhyUshort(sc, 0x15, 0x03c8); - MP_WritePhyUshort(sc, 0x19, 0x9cf7); - MP_WritePhyUshort(sc, 0x15, 0x03c9); - MP_WritePhyUshort(sc, 0x19, 0x7c12); - MP_WritePhyUshort(sc, 0x15, 0x03ca); - MP_WritePhyUshort(sc, 0x19, 0x4c52); - MP_WritePhyUshort(sc, 0x15, 0x03cb); - MP_WritePhyUshort(sc, 0x19, 0x4458); - MP_WritePhyUshort(sc, 0x15, 0x03cd); - MP_WritePhyUshort(sc, 0x19, 0x4c40); - MP_WritePhyUshort(sc, 0x15, 0x03ce); - MP_WritePhyUshort(sc, 0x19, 0x33bf); - MP_WritePhyUshort(sc, 0x15, 0x03cf); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03d0); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03d1); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03d5); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03d6); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03d7); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03d8); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03d9); - MP_WritePhyUshort(sc, 0x19, 0x49bb); - MP_WritePhyUshort(sc, 0x15, 0x03da); - MP_WritePhyUshort(sc, 0x19, 0x4478); - MP_WritePhyUshort(sc, 0x15, 0x03db); - MP_WritePhyUshort(sc, 0x19, 0x492b); - MP_WritePhyUshort(sc, 0x15, 0x03dc); - MP_WritePhyUshort(sc, 0x19, 0x7c01); - MP_WritePhyUshort(sc, 0x15, 0x03dd); - MP_WritePhyUshort(sc, 0x19, 0x4c00); - MP_WritePhyUshort(sc, 0x15, 0x03de); - MP_WritePhyUshort(sc, 0x19, 0xbd1a); - MP_WritePhyUshort(sc, 0x15, 0x03df); - MP_WritePhyUshort(sc, 0x19, 0xc428); - MP_WritePhyUshort(sc, 0x15, 0x03e0); - MP_WritePhyUshort(sc, 0x19, 0x0008); - MP_WritePhyUshort(sc, 0x15, 0x03e1); - MP_WritePhyUshort(sc, 0x19, 0x9cfd); - MP_WritePhyUshort(sc, 0x15, 0x03e2); - MP_WritePhyUshort(sc, 0x19, 0x7c12); - MP_WritePhyUshort(sc, 0x15, 0x03e3); - MP_WritePhyUshort(sc, 0x19, 0x4c52); - MP_WritePhyUshort(sc, 0x15, 0x03e4); - MP_WritePhyUshort(sc, 0x19, 0x4458); - MP_WritePhyUshort(sc, 0x15, 0x03e5); - MP_WritePhyUshort(sc, 0x19, 0x7c12); - MP_WritePhyUshort(sc, 0x15, 0x03e6); - MP_WritePhyUshort(sc, 0x19, 0x4c40); - MP_WritePhyUshort(sc, 0x15, 0x03e7); - MP_WritePhyUshort(sc, 0x19, 0x33de); - MP_WritePhyUshort(sc, 0x15, 0x03e8); - MP_WritePhyUshort(sc, 0x19, 0xc218); - MP_WritePhyUshort(sc, 0x15, 0x03e9); - MP_WritePhyUshort(sc, 0x19, 0x0002); - MP_WritePhyUshort(sc, 0x15, 0x03ea); - MP_WritePhyUshort(sc, 0x19, 0x32df); - MP_WritePhyUshort(sc, 0x15, 0x03eb); - MP_WritePhyUshort(sc, 0x19, 0x3316); - MP_WritePhyUshort(sc, 0x15, 0x03ec); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03ed); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03ee); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03ef); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03f7); - MP_WritePhyUshort(sc, 0x19, 0x330c); - MP_WritePhyUshort(sc, 0x16, 0x0306); - MP_WritePhyUshort(sc, 0x16, 0x0300); - - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x0080); - MP_WritePhyUshort(sc, 0x05, 0x8000); - MP_WritePhyUshort(sc, 0x06, 0x0280); - MP_WritePhyUshort(sc, 0x06, 0x48f7); - MP_WritePhyUshort(sc, 0x06, 0x00e0); - MP_WritePhyUshort(sc, 0x06, 0xfff7); - MP_WritePhyUshort(sc, 0x06, 0xa080); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0xf602); - MP_WritePhyUshort(sc, 0x06, 0x0200); - MP_WritePhyUshort(sc, 0x06, 0x0280); - MP_WritePhyUshort(sc, 0x06, 0x9002); - MP_WritePhyUshort(sc, 0x06, 0x0224); - MP_WritePhyUshort(sc, 0x06, 0x0202); - MP_WritePhyUshort(sc, 0x06, 0x3402); - MP_WritePhyUshort(sc, 0x06, 0x027f); - MP_WritePhyUshort(sc, 0x06, 0x0280); - MP_WritePhyUshort(sc, 0x06, 0xa602); - MP_WritePhyUshort(sc, 0x06, 0x80bf); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x88e1); - MP_WritePhyUshort(sc, 0x06, 0x8b89); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8a1e); - MP_WritePhyUshort(sc, 0x06, 0x01e1); - MP_WritePhyUshort(sc, 0x06, 0x8b8b); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8c1e); - MP_WritePhyUshort(sc, 0x06, 0x01e1); - MP_WritePhyUshort(sc, 0x06, 0x8b8d); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8e1e); - MP_WritePhyUshort(sc, 0x06, 0x01a0); - MP_WritePhyUshort(sc, 0x06, 0x00c7); - MP_WritePhyUshort(sc, 0x06, 0xaebb); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0xe600); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0xee03); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0xefb8); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0xe902); - MP_WritePhyUshort(sc, 0x06, 0xee8b); - MP_WritePhyUshort(sc, 0x06, 0x8285); - MP_WritePhyUshort(sc, 0x06, 0xee8b); - MP_WritePhyUshort(sc, 0x06, 0x8520); - MP_WritePhyUshort(sc, 0x06, 0xee8b); - MP_WritePhyUshort(sc, 0x06, 0x8701); - MP_WritePhyUshort(sc, 0x06, 0xd481); - MP_WritePhyUshort(sc, 0x06, 0x35e4); - MP_WritePhyUshort(sc, 0x06, 0x8b94); - MP_WritePhyUshort(sc, 0x06, 0xe58b); - MP_WritePhyUshort(sc, 0x06, 0x95bf); - MP_WritePhyUshort(sc, 0x06, 0x8b88); - MP_WritePhyUshort(sc, 0x06, 0xec00); - MP_WritePhyUshort(sc, 0x06, 0x19a9); - MP_WritePhyUshort(sc, 0x06, 0x8b90); - MP_WritePhyUshort(sc, 0x06, 0xf9ee); - MP_WritePhyUshort(sc, 0x06, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0xfff7); - MP_WritePhyUshort(sc, 0x06, 0xffe0); - MP_WritePhyUshort(sc, 0x06, 0xe140); - MP_WritePhyUshort(sc, 0x06, 0xe1e1); - MP_WritePhyUshort(sc, 0x06, 0x41f7); - MP_WritePhyUshort(sc, 0x06, 0x2ff6); - MP_WritePhyUshort(sc, 0x06, 0x28e4); - MP_WritePhyUshort(sc, 0x06, 0xe140); - MP_WritePhyUshort(sc, 0x06, 0xe5e1); - MP_WritePhyUshort(sc, 0x06, 0x4104); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b89); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x0dee); - MP_WritePhyUshort(sc, 0x06, 0x8b89); - MP_WritePhyUshort(sc, 0x06, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x82f4); - MP_WritePhyUshort(sc, 0x06, 0x021f); - MP_WritePhyUshort(sc, 0x06, 0x4102); - MP_WritePhyUshort(sc, 0x06, 0x2812); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b8d); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x10ee); - MP_WritePhyUshort(sc, 0x06, 0x8b8d); - MP_WritePhyUshort(sc, 0x06, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x139d); - MP_WritePhyUshort(sc, 0x06, 0x0281); - MP_WritePhyUshort(sc, 0x06, 0xd602); - MP_WritePhyUshort(sc, 0x06, 0x1f99); - MP_WritePhyUshort(sc, 0x06, 0x0227); - MP_WritePhyUshort(sc, 0x06, 0xeafc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x2014); - MP_WritePhyUshort(sc, 0x06, 0xf620); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x8104); - MP_WritePhyUshort(sc, 0x06, 0x021b); - MP_WritePhyUshort(sc, 0x06, 0xf402); - MP_WritePhyUshort(sc, 0x06, 0x2c9c); - MP_WritePhyUshort(sc, 0x06, 0x0281); - MP_WritePhyUshort(sc, 0x06, 0x7902); - MP_WritePhyUshort(sc, 0x06, 0x8443); - MP_WritePhyUshort(sc, 0x06, 0xad22); - MP_WritePhyUshort(sc, 0x06, 0x11f6); - MP_WritePhyUshort(sc, 0x06, 0x22e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0x022c); - MP_WritePhyUshort(sc, 0x06, 0x4602); - MP_WritePhyUshort(sc, 0x06, 0x2ac5); - MP_WritePhyUshort(sc, 0x06, 0x0229); - MP_WritePhyUshort(sc, 0x06, 0x2002); - MP_WritePhyUshort(sc, 0x06, 0x2b91); - MP_WritePhyUshort(sc, 0x06, 0xad25); - MP_WritePhyUshort(sc, 0x06, 0x11f6); - MP_WritePhyUshort(sc, 0x06, 0x25e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0x0284); - MP_WritePhyUshort(sc, 0x06, 0xe202); - MP_WritePhyUshort(sc, 0x06, 0x043a); - MP_WritePhyUshort(sc, 0x06, 0x021a); - MP_WritePhyUshort(sc, 0x06, 0x5902); - MP_WritePhyUshort(sc, 0x06, 0x2bfc); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x00e1); - MP_WritePhyUshort(sc, 0x06, 0xe001); - MP_WritePhyUshort(sc, 0x06, 0xad27); - MP_WritePhyUshort(sc, 0x06, 0x1fd1); - MP_WritePhyUshort(sc, 0x06, 0x01bf); - MP_WritePhyUshort(sc, 0x06, 0x8638); - MP_WritePhyUshort(sc, 0x06, 0x022f); - MP_WritePhyUshort(sc, 0x06, 0x50e0); - MP_WritePhyUshort(sc, 0x06, 0xe020); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x21ad); - MP_WritePhyUshort(sc, 0x06, 0x200e); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf86); - MP_WritePhyUshort(sc, 0x06, 0x3802); - MP_WritePhyUshort(sc, 0x06, 0x2f50); - MP_WritePhyUshort(sc, 0x06, 0xbf3d); - MP_WritePhyUshort(sc, 0x06, 0x3902); - MP_WritePhyUshort(sc, 0x06, 0x2eb0); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefc); - MP_WritePhyUshort(sc, 0x06, 0x0402); - MP_WritePhyUshort(sc, 0x06, 0x8591); - MP_WritePhyUshort(sc, 0x06, 0x0281); - MP_WritePhyUshort(sc, 0x06, 0x3c05); - MP_WritePhyUshort(sc, 0x06, 0xf8fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xe0e2); - MP_WritePhyUshort(sc, 0x06, 0xfee1); - MP_WritePhyUshort(sc, 0x06, 0xe2ff); - MP_WritePhyUshort(sc, 0x06, 0xad2d); - MP_WritePhyUshort(sc, 0x06, 0x1ae0); - MP_WritePhyUshort(sc, 0x06, 0xe14e); - MP_WritePhyUshort(sc, 0x06, 0xe1e1); - MP_WritePhyUshort(sc, 0x06, 0x4fac); - MP_WritePhyUshort(sc, 0x06, 0x2d22); - MP_WritePhyUshort(sc, 0x06, 0xf603); - MP_WritePhyUshort(sc, 0x06, 0x0203); - MP_WritePhyUshort(sc, 0x06, 0x36f7); - MP_WritePhyUshort(sc, 0x06, 0x03f7); - MP_WritePhyUshort(sc, 0x06, 0x06bf); - MP_WritePhyUshort(sc, 0x06, 0x8622); - MP_WritePhyUshort(sc, 0x06, 0x022e); - MP_WritePhyUshort(sc, 0x06, 0xb0ae); - MP_WritePhyUshort(sc, 0x06, 0x11e0); - MP_WritePhyUshort(sc, 0x06, 0xe14e); - MP_WritePhyUshort(sc, 0x06, 0xe1e1); - MP_WritePhyUshort(sc, 0x06, 0x4fad); - MP_WritePhyUshort(sc, 0x06, 0x2d08); - MP_WritePhyUshort(sc, 0x06, 0xbf86); - MP_WritePhyUshort(sc, 0x06, 0x2d02); - MP_WritePhyUshort(sc, 0x06, 0x2eb0); - MP_WritePhyUshort(sc, 0x06, 0xf606); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xf9fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x87ad); - MP_WritePhyUshort(sc, 0x06, 0x204c); - MP_WritePhyUshort(sc, 0x06, 0xd200); - MP_WritePhyUshort(sc, 0x06, 0xe0e2); - MP_WritePhyUshort(sc, 0x06, 0x0058); - MP_WritePhyUshort(sc, 0x06, 0x010c); - MP_WritePhyUshort(sc, 0x06, 0x021e); - MP_WritePhyUshort(sc, 0x06, 0x20e0); - MP_WritePhyUshort(sc, 0x06, 0xe000); - MP_WritePhyUshort(sc, 0x06, 0x5810); - MP_WritePhyUshort(sc, 0x06, 0x1e20); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x3658); - MP_WritePhyUshort(sc, 0x06, 0x031e); - MP_WritePhyUshort(sc, 0x06, 0x20e0); - MP_WritePhyUshort(sc, 0x06, 0xe022); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x2358); - MP_WritePhyUshort(sc, 0x06, 0xe01e); - MP_WritePhyUshort(sc, 0x06, 0x20e0); - MP_WritePhyUshort(sc, 0x06, 0x8ae6); - MP_WritePhyUshort(sc, 0x06, 0x1f02); - MP_WritePhyUshort(sc, 0x06, 0x9e22); - MP_WritePhyUshort(sc, 0x06, 0xe68a); - MP_WritePhyUshort(sc, 0x06, 0xe6ad); - MP_WritePhyUshort(sc, 0x06, 0x3214); - MP_WritePhyUshort(sc, 0x06, 0xad34); - MP_WritePhyUshort(sc, 0x06, 0x11ef); - MP_WritePhyUshort(sc, 0x06, 0x0258); - MP_WritePhyUshort(sc, 0x06, 0x039e); - MP_WritePhyUshort(sc, 0x06, 0x07ad); - MP_WritePhyUshort(sc, 0x06, 0x3508); - MP_WritePhyUshort(sc, 0x06, 0x5ac0); - MP_WritePhyUshort(sc, 0x06, 0x9f04); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xae02); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf86); - MP_WritePhyUshort(sc, 0x06, 0x3e02); - MP_WritePhyUshort(sc, 0x06, 0x2f50); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefd); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8f9); - MP_WritePhyUshort(sc, 0x06, 0xfae0); - MP_WritePhyUshort(sc, 0x06, 0x8b81); - MP_WritePhyUshort(sc, 0x06, 0xac26); - MP_WritePhyUshort(sc, 0x06, 0x0ee0); - MP_WritePhyUshort(sc, 0x06, 0x8b81); - MP_WritePhyUshort(sc, 0x06, 0xac21); - MP_WritePhyUshort(sc, 0x06, 0x08e0); - MP_WritePhyUshort(sc, 0x06, 0x8b87); - MP_WritePhyUshort(sc, 0x06, 0xac24); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x6bee); - MP_WritePhyUshort(sc, 0x06, 0xe0ea); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0xe0eb); - MP_WritePhyUshort(sc, 0x06, 0x00e2); - MP_WritePhyUshort(sc, 0x06, 0xe07c); - MP_WritePhyUshort(sc, 0x06, 0xe3e0); - MP_WritePhyUshort(sc, 0x06, 0x7da5); - MP_WritePhyUshort(sc, 0x06, 0x1111); - MP_WritePhyUshort(sc, 0x06, 0x15d2); - MP_WritePhyUshort(sc, 0x06, 0x60d6); - MP_WritePhyUshort(sc, 0x06, 0x6666); - MP_WritePhyUshort(sc, 0x06, 0x0207); - MP_WritePhyUshort(sc, 0x06, 0xf9d2); - MP_WritePhyUshort(sc, 0x06, 0xa0d6); - MP_WritePhyUshort(sc, 0x06, 0xaaaa); - MP_WritePhyUshort(sc, 0x06, 0x0207); - MP_WritePhyUshort(sc, 0x06, 0xf902); - MP_WritePhyUshort(sc, 0x06, 0x825c); - MP_WritePhyUshort(sc, 0x06, 0xae44); - MP_WritePhyUshort(sc, 0x06, 0xa566); - MP_WritePhyUshort(sc, 0x06, 0x6602); - MP_WritePhyUshort(sc, 0x06, 0xae38); - MP_WritePhyUshort(sc, 0x06, 0xa5aa); - MP_WritePhyUshort(sc, 0x06, 0xaa02); - MP_WritePhyUshort(sc, 0x06, 0xae32); - MP_WritePhyUshort(sc, 0x06, 0xeee0); - MP_WritePhyUshort(sc, 0x06, 0xea04); - MP_WritePhyUshort(sc, 0x06, 0xeee0); - MP_WritePhyUshort(sc, 0x06, 0xeb06); - MP_WritePhyUshort(sc, 0x06, 0xe2e0); - MP_WritePhyUshort(sc, 0x06, 0x7ce3); - MP_WritePhyUshort(sc, 0x06, 0xe07d); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x38e1); - MP_WritePhyUshort(sc, 0x06, 0xe039); - MP_WritePhyUshort(sc, 0x06, 0xad2e); - MP_WritePhyUshort(sc, 0x06, 0x21ad); - MP_WritePhyUshort(sc, 0x06, 0x3f13); - MP_WritePhyUshort(sc, 0x06, 0xe0e4); - MP_WritePhyUshort(sc, 0x06, 0x14e1); - MP_WritePhyUshort(sc, 0x06, 0xe415); - MP_WritePhyUshort(sc, 0x06, 0x6880); - MP_WritePhyUshort(sc, 0x06, 0xe4e4); - MP_WritePhyUshort(sc, 0x06, 0x14e5); - MP_WritePhyUshort(sc, 0x06, 0xe415); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0x5cae); - MP_WritePhyUshort(sc, 0x06, 0x0bac); - MP_WritePhyUshort(sc, 0x06, 0x3e02); - MP_WritePhyUshort(sc, 0x06, 0xae06); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0x8602); - MP_WritePhyUshort(sc, 0x06, 0x82b0); - MP_WritePhyUshort(sc, 0x06, 0xfefd); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e1); - MP_WritePhyUshort(sc, 0x06, 0x8b2e); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x2605); - MP_WritePhyUshort(sc, 0x06, 0x0221); - MP_WritePhyUshort(sc, 0x06, 0xf3f7); - MP_WritePhyUshort(sc, 0x06, 0x28e0); - MP_WritePhyUshort(sc, 0x06, 0x8b81); - MP_WritePhyUshort(sc, 0x06, 0xad21); - MP_WritePhyUshort(sc, 0x06, 0x0502); - MP_WritePhyUshort(sc, 0x06, 0x22f8); - MP_WritePhyUshort(sc, 0x06, 0xf729); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x87ad); - MP_WritePhyUshort(sc, 0x06, 0x2405); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0xebf7); - MP_WritePhyUshort(sc, 0x06, 0x2ae5); - MP_WritePhyUshort(sc, 0x06, 0x8b2e); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b81); - MP_WritePhyUshort(sc, 0x06, 0xad26); - MP_WritePhyUshort(sc, 0x06, 0x0302); - MP_WritePhyUshort(sc, 0x06, 0x2134); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x2109); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x2eac); - MP_WritePhyUshort(sc, 0x06, 0x2003); - MP_WritePhyUshort(sc, 0x06, 0x0283); - MP_WritePhyUshort(sc, 0x06, 0x52e0); - MP_WritePhyUshort(sc, 0x06, 0x8b87); - MP_WritePhyUshort(sc, 0x06, 0xad24); - MP_WritePhyUshort(sc, 0x06, 0x09e0); - MP_WritePhyUshort(sc, 0x06, 0x8b2e); - MP_WritePhyUshort(sc, 0x06, 0xac21); - MP_WritePhyUshort(sc, 0x06, 0x0302); - MP_WritePhyUshort(sc, 0x06, 0x8337); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e1); - MP_WritePhyUshort(sc, 0x06, 0x8b2e); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x2608); - MP_WritePhyUshort(sc, 0x06, 0xe085); - MP_WritePhyUshort(sc, 0x06, 0xd2ad); - MP_WritePhyUshort(sc, 0x06, 0x2502); - MP_WritePhyUshort(sc, 0x06, 0xf628); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x210a); - MP_WritePhyUshort(sc, 0x06, 0xe086); - MP_WritePhyUshort(sc, 0x06, 0x0af6); - MP_WritePhyUshort(sc, 0x06, 0x27a0); - MP_WritePhyUshort(sc, 0x06, 0x0502); - MP_WritePhyUshort(sc, 0x06, 0xf629); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x87ad); - MP_WritePhyUshort(sc, 0x06, 0x2408); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xedad); - MP_WritePhyUshort(sc, 0x06, 0x2002); - MP_WritePhyUshort(sc, 0x06, 0xf62a); - MP_WritePhyUshort(sc, 0x06, 0xe58b); - MP_WritePhyUshort(sc, 0x06, 0x2ea1); - MP_WritePhyUshort(sc, 0x06, 0x0003); - MP_WritePhyUshort(sc, 0x06, 0x0221); - MP_WritePhyUshort(sc, 0x06, 0x11fc); - MP_WritePhyUshort(sc, 0x06, 0x04ee); - MP_WritePhyUshort(sc, 0x06, 0x8aed); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x8aec); - MP_WritePhyUshort(sc, 0x06, 0x0004); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b87); - MP_WritePhyUshort(sc, 0x06, 0xad24); - MP_WritePhyUshort(sc, 0x06, 0x3ae0); - MP_WritePhyUshort(sc, 0x06, 0xe0ea); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0xeb58); - MP_WritePhyUshort(sc, 0x06, 0xf8d1); - MP_WritePhyUshort(sc, 0x06, 0x01e4); - MP_WritePhyUshort(sc, 0x06, 0xe0ea); - MP_WritePhyUshort(sc, 0x06, 0xe5e0); - MP_WritePhyUshort(sc, 0x06, 0xebe0); - MP_WritePhyUshort(sc, 0x06, 0xe07c); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x7d5c); - MP_WritePhyUshort(sc, 0x06, 0x00ff); - MP_WritePhyUshort(sc, 0x06, 0x3c00); - MP_WritePhyUshort(sc, 0x06, 0x1eab); - MP_WritePhyUshort(sc, 0x06, 0x1ce0); - MP_WritePhyUshort(sc, 0x06, 0xe04c); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x4d58); - MP_WritePhyUshort(sc, 0x06, 0xc1e4); - MP_WritePhyUshort(sc, 0x06, 0xe04c); - MP_WritePhyUshort(sc, 0x06, 0xe5e0); - MP_WritePhyUshort(sc, 0x06, 0x4de0); - MP_WritePhyUshort(sc, 0x06, 0xe0ee); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0x3ce4); - MP_WritePhyUshort(sc, 0x06, 0xe0ee); - MP_WritePhyUshort(sc, 0x06, 0xe5e0); - MP_WritePhyUshort(sc, 0x06, 0xeffc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x87ad); - MP_WritePhyUshort(sc, 0x06, 0x2412); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0xeee1); - MP_WritePhyUshort(sc, 0x06, 0xe0ef); - MP_WritePhyUshort(sc, 0x06, 0x59c3); - MP_WritePhyUshort(sc, 0x06, 0xe4e0); - MP_WritePhyUshort(sc, 0x06, 0xeee5); - MP_WritePhyUshort(sc, 0x06, 0xe0ef); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0xed01); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b81); - MP_WritePhyUshort(sc, 0x06, 0xac25); - MP_WritePhyUshort(sc, 0x06, 0x0502); - MP_WritePhyUshort(sc, 0x06, 0x8363); - MP_WritePhyUshort(sc, 0x06, 0xae03); - MP_WritePhyUshort(sc, 0x06, 0x0225); - MP_WritePhyUshort(sc, 0x06, 0x16fc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xf9fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xfae0); - MP_WritePhyUshort(sc, 0x06, 0x860a); - MP_WritePhyUshort(sc, 0x06, 0xa000); - MP_WritePhyUshort(sc, 0x06, 0x19e0); - MP_WritePhyUshort(sc, 0x06, 0x860b); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x331b); - MP_WritePhyUshort(sc, 0x06, 0x109e); - MP_WritePhyUshort(sc, 0x06, 0x04aa); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x06ee); - MP_WritePhyUshort(sc, 0x06, 0x860a); - MP_WritePhyUshort(sc, 0x06, 0x01ae); - MP_WritePhyUshort(sc, 0x06, 0xe602); - MP_WritePhyUshort(sc, 0x06, 0x241e); - MP_WritePhyUshort(sc, 0x06, 0xae14); - MP_WritePhyUshort(sc, 0x06, 0xa001); - MP_WritePhyUshort(sc, 0x06, 0x1402); - MP_WritePhyUshort(sc, 0x06, 0x2426); - MP_WritePhyUshort(sc, 0x06, 0xbf26); - MP_WritePhyUshort(sc, 0x06, 0x6d02); - MP_WritePhyUshort(sc, 0x06, 0x2eb0); - MP_WritePhyUshort(sc, 0x06, 0xee86); - MP_WritePhyUshort(sc, 0x06, 0x0b00); - MP_WritePhyUshort(sc, 0x06, 0xee86); - MP_WritePhyUshort(sc, 0x06, 0x0a02); - MP_WritePhyUshort(sc, 0x06, 0xaf84); - MP_WritePhyUshort(sc, 0x06, 0x3ca0); - MP_WritePhyUshort(sc, 0x06, 0x0252); - MP_WritePhyUshort(sc, 0x06, 0xee86); - MP_WritePhyUshort(sc, 0x06, 0x0400); - MP_WritePhyUshort(sc, 0x06, 0xee86); - MP_WritePhyUshort(sc, 0x06, 0x0500); - MP_WritePhyUshort(sc, 0x06, 0xe086); - MP_WritePhyUshort(sc, 0x06, 0x0be1); - MP_WritePhyUshort(sc, 0x06, 0x8b32); - MP_WritePhyUshort(sc, 0x06, 0x1b10); - MP_WritePhyUshort(sc, 0x06, 0x9e04); - MP_WritePhyUshort(sc, 0x06, 0xaa02); - MP_WritePhyUshort(sc, 0x06, 0xaecb); - MP_WritePhyUshort(sc, 0x06, 0xee86); - MP_WritePhyUshort(sc, 0x06, 0x0b00); - MP_WritePhyUshort(sc, 0x06, 0x0224); - MP_WritePhyUshort(sc, 0x06, 0x3ae2); - MP_WritePhyUshort(sc, 0x06, 0x8604); - MP_WritePhyUshort(sc, 0x06, 0xe386); - MP_WritePhyUshort(sc, 0x06, 0x05ef); - MP_WritePhyUshort(sc, 0x06, 0x65e2); - MP_WritePhyUshort(sc, 0x06, 0x8606); - MP_WritePhyUshort(sc, 0x06, 0xe386); - MP_WritePhyUshort(sc, 0x06, 0x071b); - MP_WritePhyUshort(sc, 0x06, 0x56aa); - MP_WritePhyUshort(sc, 0x06, 0x0eef); - MP_WritePhyUshort(sc, 0x06, 0x56e6); - MP_WritePhyUshort(sc, 0x06, 0x8606); - MP_WritePhyUshort(sc, 0x06, 0xe786); - MP_WritePhyUshort(sc, 0x06, 0x07e2); - MP_WritePhyUshort(sc, 0x06, 0x8609); - MP_WritePhyUshort(sc, 0x06, 0xe686); - MP_WritePhyUshort(sc, 0x06, 0x08e0); - MP_WritePhyUshort(sc, 0x06, 0x8609); - MP_WritePhyUshort(sc, 0x06, 0xa000); - MP_WritePhyUshort(sc, 0x06, 0x07ee); - MP_WritePhyUshort(sc, 0x06, 0x860a); - MP_WritePhyUshort(sc, 0x06, 0x03af); - MP_WritePhyUshort(sc, 0x06, 0x8369); - MP_WritePhyUshort(sc, 0x06, 0x0224); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x2426); - MP_WritePhyUshort(sc, 0x06, 0xae48); - MP_WritePhyUshort(sc, 0x06, 0xa003); - MP_WritePhyUshort(sc, 0x06, 0x21e0); - MP_WritePhyUshort(sc, 0x06, 0x8608); - MP_WritePhyUshort(sc, 0x06, 0xe186); - MP_WritePhyUshort(sc, 0x06, 0x091b); - MP_WritePhyUshort(sc, 0x06, 0x019e); - MP_WritePhyUshort(sc, 0x06, 0x0caa); - MP_WritePhyUshort(sc, 0x06, 0x0502); - MP_WritePhyUshort(sc, 0x06, 0x249d); - MP_WritePhyUshort(sc, 0x06, 0xaee7); - MP_WritePhyUshort(sc, 0x06, 0x0224); - MP_WritePhyUshort(sc, 0x06, 0x8eae); - MP_WritePhyUshort(sc, 0x06, 0xe2ee); - MP_WritePhyUshort(sc, 0x06, 0x860a); - MP_WritePhyUshort(sc, 0x06, 0x04ee); - MP_WritePhyUshort(sc, 0x06, 0x860b); - MP_WritePhyUshort(sc, 0x06, 0x00af); - MP_WritePhyUshort(sc, 0x06, 0x8369); - MP_WritePhyUshort(sc, 0x06, 0xa004); - MP_WritePhyUshort(sc, 0x06, 0x15e0); - MP_WritePhyUshort(sc, 0x06, 0x860b); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x341b); - MP_WritePhyUshort(sc, 0x06, 0x109e); - MP_WritePhyUshort(sc, 0x06, 0x05aa); - MP_WritePhyUshort(sc, 0x06, 0x03af); - MP_WritePhyUshort(sc, 0x06, 0x8383); - MP_WritePhyUshort(sc, 0x06, 0xee86); - MP_WritePhyUshort(sc, 0x06, 0x0a05); - MP_WritePhyUshort(sc, 0x06, 0xae0c); - MP_WritePhyUshort(sc, 0x06, 0xa005); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x0702); - MP_WritePhyUshort(sc, 0x06, 0x2309); - MP_WritePhyUshort(sc, 0x06, 0xee86); - MP_WritePhyUshort(sc, 0x06, 0x0a00); - MP_WritePhyUshort(sc, 0x06, 0xfeef); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfdfc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xf9fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xfbe0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xad25); - MP_WritePhyUshort(sc, 0x06, 0x22e0); - MP_WritePhyUshort(sc, 0x06, 0xe022); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x23e2); - MP_WritePhyUshort(sc, 0x06, 0xe036); - MP_WritePhyUshort(sc, 0x06, 0xe3e0); - MP_WritePhyUshort(sc, 0x06, 0x375a); - MP_WritePhyUshort(sc, 0x06, 0xc40d); - MP_WritePhyUshort(sc, 0x06, 0x0158); - MP_WritePhyUshort(sc, 0x06, 0x021e); - MP_WritePhyUshort(sc, 0x06, 0x20e3); - MP_WritePhyUshort(sc, 0x06, 0x8ae7); - MP_WritePhyUshort(sc, 0x06, 0xac31); - MP_WritePhyUshort(sc, 0x06, 0x60ac); - MP_WritePhyUshort(sc, 0x06, 0x3a08); - MP_WritePhyUshort(sc, 0x06, 0xac3e); - MP_WritePhyUshort(sc, 0x06, 0x26ae); - MP_WritePhyUshort(sc, 0x06, 0x67af); - MP_WritePhyUshort(sc, 0x06, 0x84db); - MP_WritePhyUshort(sc, 0x06, 0xad37); - MP_WritePhyUshort(sc, 0x06, 0x61e0); - MP_WritePhyUshort(sc, 0x06, 0x8ae8); - MP_WritePhyUshort(sc, 0x06, 0x10e4); - MP_WritePhyUshort(sc, 0x06, 0x8ae8); - MP_WritePhyUshort(sc, 0x06, 0xe18a); - MP_WritePhyUshort(sc, 0x06, 0xe91b); - MP_WritePhyUshort(sc, 0x06, 0x109e); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x51d1); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x863b); - MP_WritePhyUshort(sc, 0x06, 0x022f); - MP_WritePhyUshort(sc, 0x06, 0x50ee); - MP_WritePhyUshort(sc, 0x06, 0x8ae8); - MP_WritePhyUshort(sc, 0x06, 0x00ae); - MP_WritePhyUshort(sc, 0x06, 0x43ad); - MP_WritePhyUshort(sc, 0x06, 0x3627); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xeee1); - MP_WritePhyUshort(sc, 0x06, 0x8aef); - MP_WritePhyUshort(sc, 0x06, 0xef74); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xeae1); - MP_WritePhyUshort(sc, 0x06, 0x8aeb); - MP_WritePhyUshort(sc, 0x06, 0x1b74); - MP_WritePhyUshort(sc, 0x06, 0x9e2e); - MP_WritePhyUshort(sc, 0x06, 0x14e4); - MP_WritePhyUshort(sc, 0x06, 0x8aea); - MP_WritePhyUshort(sc, 0x06, 0xe58a); - MP_WritePhyUshort(sc, 0x06, 0xebef); - MP_WritePhyUshort(sc, 0x06, 0x74e0); - MP_WritePhyUshort(sc, 0x06, 0x8aee); - MP_WritePhyUshort(sc, 0x06, 0xe18a); - MP_WritePhyUshort(sc, 0x06, 0xef1b); - MP_WritePhyUshort(sc, 0x06, 0x479e); - MP_WritePhyUshort(sc, 0x06, 0x0fae); - MP_WritePhyUshort(sc, 0x06, 0x19ee); - MP_WritePhyUshort(sc, 0x06, 0x8aea); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x8aeb); - MP_WritePhyUshort(sc, 0x06, 0x00ae); - MP_WritePhyUshort(sc, 0x06, 0x0fac); - MP_WritePhyUshort(sc, 0x06, 0x390c); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xbf86); - MP_WritePhyUshort(sc, 0x06, 0x3b02); - MP_WritePhyUshort(sc, 0x06, 0x2f50); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0xe800); - MP_WritePhyUshort(sc, 0x06, 0xe68a); - MP_WritePhyUshort(sc, 0x06, 0xe7ff); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefd); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8f9); - MP_WritePhyUshort(sc, 0x06, 0xfaef); - MP_WritePhyUshort(sc, 0x06, 0x69e0); - MP_WritePhyUshort(sc, 0x06, 0xe022); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x2358); - MP_WritePhyUshort(sc, 0x06, 0xc4e1); - MP_WritePhyUshort(sc, 0x06, 0x8b6e); - MP_WritePhyUshort(sc, 0x06, 0x1f10); - MP_WritePhyUshort(sc, 0x06, 0x9e24); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x6ead); - MP_WritePhyUshort(sc, 0x06, 0x2218); - MP_WritePhyUshort(sc, 0x06, 0xac27); - MP_WritePhyUshort(sc, 0x06, 0x0dac); - MP_WritePhyUshort(sc, 0x06, 0x2605); - MP_WritePhyUshort(sc, 0x06, 0x0203); - MP_WritePhyUshort(sc, 0x06, 0x8fae); - MP_WritePhyUshort(sc, 0x06, 0x1302); - MP_WritePhyUshort(sc, 0x06, 0x03c8); - MP_WritePhyUshort(sc, 0x06, 0xae0e); - MP_WritePhyUshort(sc, 0x06, 0x0203); - MP_WritePhyUshort(sc, 0x06, 0xe102); - MP_WritePhyUshort(sc, 0x06, 0x8520); - MP_WritePhyUshort(sc, 0x06, 0xae06); - MP_WritePhyUshort(sc, 0x06, 0x0203); - MP_WritePhyUshort(sc, 0x06, 0x8f02); - MP_WritePhyUshort(sc, 0x06, 0x8566); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefd); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x82ad); - MP_WritePhyUshort(sc, 0x06, 0x2737); - MP_WritePhyUshort(sc, 0x06, 0xbf86); - MP_WritePhyUshort(sc, 0x06, 0x4402); - MP_WritePhyUshort(sc, 0x06, 0x2f23); - MP_WritePhyUshort(sc, 0x06, 0xac28); - MP_WritePhyUshort(sc, 0x06, 0x2ed1); - MP_WritePhyUshort(sc, 0x06, 0x01bf); - MP_WritePhyUshort(sc, 0x06, 0x8647); - MP_WritePhyUshort(sc, 0x06, 0x022f); - MP_WritePhyUshort(sc, 0x06, 0x50bf); - MP_WritePhyUshort(sc, 0x06, 0x8641); - MP_WritePhyUshort(sc, 0x06, 0x022f); - MP_WritePhyUshort(sc, 0x06, 0x23e5); - MP_WritePhyUshort(sc, 0x06, 0x8af0); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x22e1); - MP_WritePhyUshort(sc, 0x06, 0xe023); - MP_WritePhyUshort(sc, 0x06, 0xac2e); - MP_WritePhyUshort(sc, 0x06, 0x04d1); - MP_WritePhyUshort(sc, 0x06, 0x01ae); - MP_WritePhyUshort(sc, 0x06, 0x02d1); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x8641); - MP_WritePhyUshort(sc, 0x06, 0x022f); - MP_WritePhyUshort(sc, 0x06, 0x50d1); - MP_WritePhyUshort(sc, 0x06, 0x01bf); - MP_WritePhyUshort(sc, 0x06, 0x8644); - MP_WritePhyUshort(sc, 0x06, 0x022f); - MP_WritePhyUshort(sc, 0x06, 0x50ef); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xbf86); - MP_WritePhyUshort(sc, 0x06, 0x4702); - MP_WritePhyUshort(sc, 0x06, 0x2f23); - MP_WritePhyUshort(sc, 0x06, 0xad28); - MP_WritePhyUshort(sc, 0x06, 0x19d1); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x8644); - MP_WritePhyUshort(sc, 0x06, 0x022f); - MP_WritePhyUshort(sc, 0x06, 0x50e1); - MP_WritePhyUshort(sc, 0x06, 0x8af0); - MP_WritePhyUshort(sc, 0x06, 0xbf86); - MP_WritePhyUshort(sc, 0x06, 0x4102); - MP_WritePhyUshort(sc, 0x06, 0x2f50); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf86); - MP_WritePhyUshort(sc, 0x06, 0x4702); - MP_WritePhyUshort(sc, 0x06, 0x2f50); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xe0e2); - MP_WritePhyUshort(sc, 0x06, 0xfee1); - MP_WritePhyUshort(sc, 0x06, 0xe2ff); - MP_WritePhyUshort(sc, 0x06, 0xad2e); - MP_WritePhyUshort(sc, 0x06, 0x63e0); - MP_WritePhyUshort(sc, 0x06, 0xe038); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x39ad); - MP_WritePhyUshort(sc, 0x06, 0x2f10); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x34e1); - MP_WritePhyUshort(sc, 0x06, 0xe035); - MP_WritePhyUshort(sc, 0x06, 0xf726); - MP_WritePhyUshort(sc, 0x06, 0xe4e0); - MP_WritePhyUshort(sc, 0x06, 0x34e5); - MP_WritePhyUshort(sc, 0x06, 0xe035); - MP_WritePhyUshort(sc, 0x06, 0xae0e); - MP_WritePhyUshort(sc, 0x06, 0xe0e2); - MP_WritePhyUshort(sc, 0x06, 0xd6e1); - MP_WritePhyUshort(sc, 0x06, 0xe2d7); - MP_WritePhyUshort(sc, 0x06, 0xf728); - MP_WritePhyUshort(sc, 0x06, 0xe4e2); - MP_WritePhyUshort(sc, 0x06, 0xd6e5); - MP_WritePhyUshort(sc, 0x06, 0xe2d7); - MP_WritePhyUshort(sc, 0x06, 0xe0e2); - MP_WritePhyUshort(sc, 0x06, 0x34e1); - MP_WritePhyUshort(sc, 0x06, 0xe235); - MP_WritePhyUshort(sc, 0x06, 0xf72b); - MP_WritePhyUshort(sc, 0x06, 0xe4e2); - MP_WritePhyUshort(sc, 0x06, 0x34e5); - MP_WritePhyUshort(sc, 0x06, 0xe235); - MP_WritePhyUshort(sc, 0x06, 0xd07d); - MP_WritePhyUshort(sc, 0x06, 0xb0fe); - MP_WritePhyUshort(sc, 0x06, 0xe0e2); - MP_WritePhyUshort(sc, 0x06, 0x34e1); - MP_WritePhyUshort(sc, 0x06, 0xe235); - MP_WritePhyUshort(sc, 0x06, 0xf62b); - MP_WritePhyUshort(sc, 0x06, 0xe4e2); - MP_WritePhyUshort(sc, 0x06, 0x34e5); - MP_WritePhyUshort(sc, 0x06, 0xe235); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x34e1); - MP_WritePhyUshort(sc, 0x06, 0xe035); - MP_WritePhyUshort(sc, 0x06, 0xf626); - MP_WritePhyUshort(sc, 0x06, 0xe4e0); - MP_WritePhyUshort(sc, 0x06, 0x34e5); - MP_WritePhyUshort(sc, 0x06, 0xe035); - MP_WritePhyUshort(sc, 0x06, 0xe0e2); - MP_WritePhyUshort(sc, 0x06, 0xd6e1); - MP_WritePhyUshort(sc, 0x06, 0xe2d7); - MP_WritePhyUshort(sc, 0x06, 0xf628); - MP_WritePhyUshort(sc, 0x06, 0xe4e2); - MP_WritePhyUshort(sc, 0x06, 0xd6e5); - MP_WritePhyUshort(sc, 0x06, 0xe2d7); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xae20); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0xa725); - MP_WritePhyUshort(sc, 0x06, 0xe50a); - MP_WritePhyUshort(sc, 0x06, 0x1de5); - MP_WritePhyUshort(sc, 0x06, 0x0a2c); - MP_WritePhyUshort(sc, 0x06, 0xe50a); - MP_WritePhyUshort(sc, 0x06, 0x6de5); - MP_WritePhyUshort(sc, 0x06, 0x0a1d); - MP_WritePhyUshort(sc, 0x06, 0xe50a); - MP_WritePhyUshort(sc, 0x06, 0x1ce5); - MP_WritePhyUshort(sc, 0x06, 0x0a2d); - MP_WritePhyUshort(sc, 0x06, 0xa755); - MP_WritePhyUshort(sc, 0x06, 0x00e2); - MP_WritePhyUshort(sc, 0x06, 0x3488); - MP_WritePhyUshort(sc, 0x06, 0xe200); - MP_WritePhyUshort(sc, 0x06, 0xcce2); - MP_WritePhyUshort(sc, 0x06, 0x0055); - MP_WritePhyUshort(sc, 0x06, 0xe020); - MP_WritePhyUshort(sc, 0x06, 0x55e2); - MP_WritePhyUshort(sc, 0x06, 0xd600); - MP_WritePhyUshort(sc, 0x06, 0xe24a); - PhyRegValue = MP_ReadPhyUshort(sc, 0x01); - PhyRegValue |= BIT_0; - MP_WritePhyUshort(sc, 0x01, PhyRegValue); - PhyRegValue = MP_ReadPhyUshort(sc, 0x00); - PhyRegValue |= BIT_0; - MP_WritePhyUshort(sc, 0x00, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); + re_mdio_write(sc,0x17, PhyRegValue); + re_mdio_write(sc,0x1f, 0x0A43); + re_mdio_write(sc,0x13, 0x8146); + re_mdio_write(sc,0x14, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x00); - if (PhyRegValue & BIT_7) - break; - } - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); - PhyRegValue &= ~(BIT_0); - if (sc->RequiredSecLanDonglePatch) - PhyRegValue &= ~(BIT_2); - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - } -} - -static void re_set_phy_mcu_8168evl_1(struct re_softc* sc) -{ - u_int16_t PhyRegValue; - int i; - - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x1800); - PhyRegValue = MP_ReadPhyUshort(sc, 0x15); - PhyRegValue &= ~BIT_12; - MP_WritePhyUshort(sc, 0x15, PhyRegValue); - DELAY(200); - DELAY(200); - MP_WritePhyUshort(sc, 0x1f, 0x0004); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); - if ((PhyRegValue & BIT_11) == 0x0000) { - PhyRegValue |= BIT_0; - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); - if (PhyRegValue & BIT_11) - break; - } - } - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); - PhyRegValue |= BIT_11; - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0004); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x002C); - MP_WritePhyUshort(sc, 0x1B, 0x5000); - MP_WritePhyUshort(sc, 0x1E, 0x002d); - MP_WritePhyUshort(sc, 0x19, 0x0004); - MP_WritePhyUshort(sc, 0x1f, 0x0002); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x1E); - if ((PhyRegValue & 0x03FF) == 0x0014) - break; - } - MP_WritePhyUshort(sc, 0x1f, 0x0005); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x07); - if ((PhyRegValue & BIT_5) == 0) - break; - } - PhyRegValue = MP_ReadPhyUshort(sc, 0x07); - if (PhyRegValue & BIT_5) { - MP_WritePhyUshort(sc, 0x1f, 0x0004); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x00a1); - MP_WritePhyUshort(sc, 0x17, 0x1000); - MP_WritePhyUshort(sc, 0x17, 0x0000); - MP_WritePhyUshort(sc, 0x17, 0x2000); - MP_WritePhyUshort(sc, 0x1e, 0x002f); - MP_WritePhyUshort(sc, 0x18, 0x9bfb); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x07, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0002); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - } - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x0080); - PhyRegValue = MP_ReadPhyUshort(sc, 0x00); - PhyRegValue &= ~BIT_7; - MP_WritePhyUshort(sc, 0x00, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0004); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - MP_WritePhyUshort(sc, 0x16, 0x0306); - MP_WritePhyUshort(sc, 0x16, 0x0307); - MP_WritePhyUshort(sc, 0x15, 0x0000); - MP_WritePhyUshort(sc, 0x19, 0x407d); - MP_WritePhyUshort(sc, 0x15, 0x0001); - MP_WritePhyUshort(sc, 0x19, 0x440f); - MP_WritePhyUshort(sc, 0x15, 0x0002); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x0003); - MP_WritePhyUshort(sc, 0x19, 0x6c03); - MP_WritePhyUshort(sc, 0x15, 0x0004); - MP_WritePhyUshort(sc, 0x19, 0xc4d5); - MP_WritePhyUshort(sc, 0x15, 0x0005); - MP_WritePhyUshort(sc, 0x19, 0x00ff); - MP_WritePhyUshort(sc, 0x15, 0x0006); - MP_WritePhyUshort(sc, 0x19, 0x74f0); - MP_WritePhyUshort(sc, 0x15, 0x0007); - MP_WritePhyUshort(sc, 0x19, 0x4880); - MP_WritePhyUshort(sc, 0x15, 0x0008); - MP_WritePhyUshort(sc, 0x19, 0x4c00); - MP_WritePhyUshort(sc, 0x15, 0x0009); - MP_WritePhyUshort(sc, 0x19, 0x4800); - MP_WritePhyUshort(sc, 0x15, 0x000a); - MP_WritePhyUshort(sc, 0x19, 0x5000); - MP_WritePhyUshort(sc, 0x15, 0x000b); - MP_WritePhyUshort(sc, 0x19, 0x4400); - MP_WritePhyUshort(sc, 0x15, 0x000c); - MP_WritePhyUshort(sc, 0x19, 0x7801); - MP_WritePhyUshort(sc, 0x15, 0x000d); - MP_WritePhyUshort(sc, 0x19, 0x4000); - MP_WritePhyUshort(sc, 0x15, 0x000e); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x000f); - MP_WritePhyUshort(sc, 0x19, 0x7010); - MP_WritePhyUshort(sc, 0x15, 0x0010); - MP_WritePhyUshort(sc, 0x19, 0x6804); - MP_WritePhyUshort(sc, 0x15, 0x0011); - MP_WritePhyUshort(sc, 0x19, 0x64a0); - MP_WritePhyUshort(sc, 0x15, 0x0012); - MP_WritePhyUshort(sc, 0x19, 0x63da); - MP_WritePhyUshort(sc, 0x15, 0x0013); - MP_WritePhyUshort(sc, 0x19, 0x63d8); - MP_WritePhyUshort(sc, 0x15, 0x0014); - MP_WritePhyUshort(sc, 0x19, 0x6f05); - MP_WritePhyUshort(sc, 0x15, 0x0015); - MP_WritePhyUshort(sc, 0x19, 0x5420); - MP_WritePhyUshort(sc, 0x15, 0x0016); - MP_WritePhyUshort(sc, 0x19, 0x58ce); - MP_WritePhyUshort(sc, 0x15, 0x0017); - MP_WritePhyUshort(sc, 0x19, 0x5cf3); - MP_WritePhyUshort(sc, 0x15, 0x0018); - MP_WritePhyUshort(sc, 0x19, 0xb600); - MP_WritePhyUshort(sc, 0x15, 0x0019); - MP_WritePhyUshort(sc, 0x19, 0xc659); - MP_WritePhyUshort(sc, 0x15, 0x001a); - MP_WritePhyUshort(sc, 0x19, 0x0018); - MP_WritePhyUshort(sc, 0x15, 0x001b); - MP_WritePhyUshort(sc, 0x19, 0xc403); - MP_WritePhyUshort(sc, 0x15, 0x001c); - MP_WritePhyUshort(sc, 0x19, 0x0016); - MP_WritePhyUshort(sc, 0x15, 0x001d); - MP_WritePhyUshort(sc, 0x19, 0xaa05); - MP_WritePhyUshort(sc, 0x15, 0x001e); - MP_WritePhyUshort(sc, 0x19, 0xc503); - MP_WritePhyUshort(sc, 0x15, 0x001f); - MP_WritePhyUshort(sc, 0x19, 0x0003); - MP_WritePhyUshort(sc, 0x15, 0x0020); - MP_WritePhyUshort(sc, 0x19, 0x89f8); - MP_WritePhyUshort(sc, 0x15, 0x0021); - MP_WritePhyUshort(sc, 0x19, 0x32ae); - MP_WritePhyUshort(sc, 0x15, 0x0022); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x0023); - MP_WritePhyUshort(sc, 0x19, 0x6c03); - MP_WritePhyUshort(sc, 0x15, 0x0024); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x0025); - MP_WritePhyUshort(sc, 0x19, 0x6801); - MP_WritePhyUshort(sc, 0x15, 0x0026); - MP_WritePhyUshort(sc, 0x19, 0x66a0); - MP_WritePhyUshort(sc, 0x15, 0x0027); - MP_WritePhyUshort(sc, 0x19, 0xa300); - MP_WritePhyUshort(sc, 0x15, 0x0028); - MP_WritePhyUshort(sc, 0x19, 0x64a0); - MP_WritePhyUshort(sc, 0x15, 0x0029); - MP_WritePhyUshort(sc, 0x19, 0x76f0); - MP_WritePhyUshort(sc, 0x15, 0x002a); - MP_WritePhyUshort(sc, 0x19, 0x7670); - MP_WritePhyUshort(sc, 0x15, 0x002b); - MP_WritePhyUshort(sc, 0x19, 0x7630); - MP_WritePhyUshort(sc, 0x15, 0x002c); - MP_WritePhyUshort(sc, 0x19, 0x31a6); - MP_WritePhyUshort(sc, 0x15, 0x002d); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x002e); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x002f); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0030); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0031); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0032); - MP_WritePhyUshort(sc, 0x19, 0x4801); - MP_WritePhyUshort(sc, 0x15, 0x0033); - MP_WritePhyUshort(sc, 0x19, 0x6803); - MP_WritePhyUshort(sc, 0x15, 0x0034); - MP_WritePhyUshort(sc, 0x19, 0x66a1); - MP_WritePhyUshort(sc, 0x15, 0x0035); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x0036); - MP_WritePhyUshort(sc, 0x19, 0x6c03); - MP_WritePhyUshort(sc, 0x15, 0x0037); - MP_WritePhyUshort(sc, 0x19, 0xa300); - MP_WritePhyUshort(sc, 0x15, 0x0038); - MP_WritePhyUshort(sc, 0x19, 0x64a1); - MP_WritePhyUshort(sc, 0x15, 0x0039); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x003a); - MP_WritePhyUshort(sc, 0x19, 0x74f8); - MP_WritePhyUshort(sc, 0x15, 0x003b); - MP_WritePhyUshort(sc, 0x19, 0x63d0); - MP_WritePhyUshort(sc, 0x15, 0x003c); - MP_WritePhyUshort(sc, 0x19, 0x7ff0); - MP_WritePhyUshort(sc, 0x15, 0x003d); - MP_WritePhyUshort(sc, 0x19, 0x77f0); - MP_WritePhyUshort(sc, 0x15, 0x003e); - MP_WritePhyUshort(sc, 0x19, 0x7ff0); - MP_WritePhyUshort(sc, 0x15, 0x003f); - MP_WritePhyUshort(sc, 0x19, 0x7750); - MP_WritePhyUshort(sc, 0x15, 0x0040); - MP_WritePhyUshort(sc, 0x19, 0x63d8); - MP_WritePhyUshort(sc, 0x15, 0x0041); - MP_WritePhyUshort(sc, 0x19, 0x7cf0); - MP_WritePhyUshort(sc, 0x15, 0x0042); - MP_WritePhyUshort(sc, 0x19, 0x7708); - MP_WritePhyUshort(sc, 0x15, 0x0043); - MP_WritePhyUshort(sc, 0x19, 0xa654); - MP_WritePhyUshort(sc, 0x15, 0x0044); - MP_WritePhyUshort(sc, 0x19, 0x304a); - MP_WritePhyUshort(sc, 0x15, 0x0045); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0046); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0047); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0048); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0049); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x004a); - MP_WritePhyUshort(sc, 0x19, 0x4802); - MP_WritePhyUshort(sc, 0x15, 0x004b); - MP_WritePhyUshort(sc, 0x19, 0x4003); - MP_WritePhyUshort(sc, 0x15, 0x004c); - MP_WritePhyUshort(sc, 0x19, 0x4440); - MP_WritePhyUshort(sc, 0x15, 0x004d); - MP_WritePhyUshort(sc, 0x19, 0x63c8); - MP_WritePhyUshort(sc, 0x15, 0x004e); - MP_WritePhyUshort(sc, 0x19, 0x6481); - MP_WritePhyUshort(sc, 0x15, 0x004f); - MP_WritePhyUshort(sc, 0x19, 0x9d00); - MP_WritePhyUshort(sc, 0x15, 0x0050); - MP_WritePhyUshort(sc, 0x19, 0x63e8); - MP_WritePhyUshort(sc, 0x15, 0x0051); - MP_WritePhyUshort(sc, 0x19, 0x7d00); - MP_WritePhyUshort(sc, 0x15, 0x0052); - MP_WritePhyUshort(sc, 0x19, 0x5900); - MP_WritePhyUshort(sc, 0x15, 0x0053); - MP_WritePhyUshort(sc, 0x19, 0x63f8); - MP_WritePhyUshort(sc, 0x15, 0x0054); - MP_WritePhyUshort(sc, 0x19, 0x64a1); - MP_WritePhyUshort(sc, 0x15, 0x0055); - MP_WritePhyUshort(sc, 0x19, 0x3116); - MP_WritePhyUshort(sc, 0x15, 0x0056); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0057); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0058); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0059); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x005a); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x005b); - MP_WritePhyUshort(sc, 0x19, 0x6c03); - MP_WritePhyUshort(sc, 0x15, 0x005c); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x005d); - MP_WritePhyUshort(sc, 0x19, 0x6000); - MP_WritePhyUshort(sc, 0x15, 0x005e); - MP_WritePhyUshort(sc, 0x19, 0x59ce); - MP_WritePhyUshort(sc, 0x15, 0x005f); - MP_WritePhyUshort(sc, 0x19, 0x4400); - MP_WritePhyUshort(sc, 0x15, 0x0060); - MP_WritePhyUshort(sc, 0x19, 0x7d00); - MP_WritePhyUshort(sc, 0x15, 0x0061); - MP_WritePhyUshort(sc, 0x19, 0x72b0); - MP_WritePhyUshort(sc, 0x15, 0x0062); - MP_WritePhyUshort(sc, 0x19, 0x400e); - MP_WritePhyUshort(sc, 0x15, 0x0063); - MP_WritePhyUshort(sc, 0x19, 0x4440); - MP_WritePhyUshort(sc, 0x15, 0x0064); - MP_WritePhyUshort(sc, 0x19, 0x9d00); - MP_WritePhyUshort(sc, 0x15, 0x0065); - MP_WritePhyUshort(sc, 0x19, 0x7f00); - MP_WritePhyUshort(sc, 0x15, 0x0066); - MP_WritePhyUshort(sc, 0x19, 0x70b0); - MP_WritePhyUshort(sc, 0x15, 0x0067); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x0068); - MP_WritePhyUshort(sc, 0x19, 0x6008); - MP_WritePhyUshort(sc, 0x15, 0x0069); - MP_WritePhyUshort(sc, 0x19, 0x7cf0); - MP_WritePhyUshort(sc, 0x15, 0x006a); - MP_WritePhyUshort(sc, 0x19, 0x7750); - MP_WritePhyUshort(sc, 0x15, 0x006b); - MP_WritePhyUshort(sc, 0x19, 0x4007); - MP_WritePhyUshort(sc, 0x15, 0x006c); - MP_WritePhyUshort(sc, 0x19, 0x4500); - MP_WritePhyUshort(sc, 0x15, 0x006d); - MP_WritePhyUshort(sc, 0x19, 0x4023); - MP_WritePhyUshort(sc, 0x15, 0x006e); - MP_WritePhyUshort(sc, 0x19, 0x4580); - MP_WritePhyUshort(sc, 0x15, 0x006f); - MP_WritePhyUshort(sc, 0x19, 0x9f00); - MP_WritePhyUshort(sc, 0x15, 0x0070); - MP_WritePhyUshort(sc, 0x19, 0xcd78); - MP_WritePhyUshort(sc, 0x15, 0x0071); - MP_WritePhyUshort(sc, 0x19, 0x0003); - MP_WritePhyUshort(sc, 0x15, 0x0072); - MP_WritePhyUshort(sc, 0x19, 0xbe02); - MP_WritePhyUshort(sc, 0x15, 0x0073); - MP_WritePhyUshort(sc, 0x19, 0x3070); - MP_WritePhyUshort(sc, 0x15, 0x0074); - MP_WritePhyUshort(sc, 0x19, 0x7cf0); - MP_WritePhyUshort(sc, 0x15, 0x0075); - MP_WritePhyUshort(sc, 0x19, 0x77f0); - MP_WritePhyUshort(sc, 0x15, 0x0076); - MP_WritePhyUshort(sc, 0x19, 0x4400); - MP_WritePhyUshort(sc, 0x15, 0x0077); - MP_WritePhyUshort(sc, 0x19, 0x4007); - MP_WritePhyUshort(sc, 0x15, 0x0078); - MP_WritePhyUshort(sc, 0x19, 0x4500); - MP_WritePhyUshort(sc, 0x15, 0x0079); - MP_WritePhyUshort(sc, 0x19, 0x4023); - MP_WritePhyUshort(sc, 0x15, 0x007a); - MP_WritePhyUshort(sc, 0x19, 0x4580); - MP_WritePhyUshort(sc, 0x15, 0x007b); - MP_WritePhyUshort(sc, 0x19, 0x9f00); - MP_WritePhyUshort(sc, 0x15, 0x007c); - MP_WritePhyUshort(sc, 0x19, 0xce80); - MP_WritePhyUshort(sc, 0x15, 0x007d); - MP_WritePhyUshort(sc, 0x19, 0x0004); - MP_WritePhyUshort(sc, 0x15, 0x007e); - MP_WritePhyUshort(sc, 0x19, 0xce80); - MP_WritePhyUshort(sc, 0x15, 0x007f); - MP_WritePhyUshort(sc, 0x19, 0x0002); - MP_WritePhyUshort(sc, 0x15, 0x0080); - MP_WritePhyUshort(sc, 0x19, 0x307c); - MP_WritePhyUshort(sc, 0x15, 0x0081); - MP_WritePhyUshort(sc, 0x19, 0x4400); - MP_WritePhyUshort(sc, 0x15, 0x0082); - MP_WritePhyUshort(sc, 0x19, 0x480f); - MP_WritePhyUshort(sc, 0x15, 0x0083); - MP_WritePhyUshort(sc, 0x19, 0x6802); - MP_WritePhyUshort(sc, 0x15, 0x0084); - MP_WritePhyUshort(sc, 0x19, 0x6680); - MP_WritePhyUshort(sc, 0x15, 0x0085); - MP_WritePhyUshort(sc, 0x19, 0x7c10); - MP_WritePhyUshort(sc, 0x15, 0x0086); - MP_WritePhyUshort(sc, 0x19, 0x6010); - MP_WritePhyUshort(sc, 0x15, 0x0087); - MP_WritePhyUshort(sc, 0x19, 0x400a); - MP_WritePhyUshort(sc, 0x15, 0x0088); - MP_WritePhyUshort(sc, 0x19, 0x4580); - MP_WritePhyUshort(sc, 0x15, 0x0089); - MP_WritePhyUshort(sc, 0x19, 0x9e00); - MP_WritePhyUshort(sc, 0x15, 0x008a); - MP_WritePhyUshort(sc, 0x19, 0x7d00); - MP_WritePhyUshort(sc, 0x15, 0x008b); - MP_WritePhyUshort(sc, 0x19, 0x5800); - MP_WritePhyUshort(sc, 0x15, 0x008c); - MP_WritePhyUshort(sc, 0x19, 0x63c8); - MP_WritePhyUshort(sc, 0x15, 0x008d); - MP_WritePhyUshort(sc, 0x19, 0x63d8); - MP_WritePhyUshort(sc, 0x15, 0x008e); - MP_WritePhyUshort(sc, 0x19, 0x66a0); - MP_WritePhyUshort(sc, 0x15, 0x008f); - MP_WritePhyUshort(sc, 0x19, 0x8300); - MP_WritePhyUshort(sc, 0x15, 0x0090); - MP_WritePhyUshort(sc, 0x19, 0x7ff0); - MP_WritePhyUshort(sc, 0x15, 0x0091); - MP_WritePhyUshort(sc, 0x19, 0x74f0); - MP_WritePhyUshort(sc, 0x15, 0x0092); - MP_WritePhyUshort(sc, 0x19, 0x3006); - MP_WritePhyUshort(sc, 0x15, 0x0093); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0094); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0095); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0096); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0097); - MP_WritePhyUshort(sc, 0x19, 0x4803); - MP_WritePhyUshort(sc, 0x15, 0x0098); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x0099); - MP_WritePhyUshort(sc, 0x19, 0x6c03); - MP_WritePhyUshort(sc, 0x15, 0x009a); - MP_WritePhyUshort(sc, 0x19, 0xa203); - MP_WritePhyUshort(sc, 0x15, 0x009b); - MP_WritePhyUshort(sc, 0x19, 0x64b1); - MP_WritePhyUshort(sc, 0x15, 0x009c); - MP_WritePhyUshort(sc, 0x19, 0x309e); - MP_WritePhyUshort(sc, 0x15, 0x009d); - MP_WritePhyUshort(sc, 0x19, 0x64b3); - MP_WritePhyUshort(sc, 0x15, 0x009e); - MP_WritePhyUshort(sc, 0x19, 0x4030); - MP_WritePhyUshort(sc, 0x15, 0x009f); - MP_WritePhyUshort(sc, 0x19, 0x440e); - MP_WritePhyUshort(sc, 0x15, 0x00a0); - MP_WritePhyUshort(sc, 0x19, 0x4020); - MP_WritePhyUshort(sc, 0x15, 0x00a1); - MP_WritePhyUshort(sc, 0x19, 0x4419); - MP_WritePhyUshort(sc, 0x15, 0x00a2); - MP_WritePhyUshort(sc, 0x19, 0x7801); - MP_WritePhyUshort(sc, 0x15, 0x00a3); - MP_WritePhyUshort(sc, 0x19, 0xc520); - MP_WritePhyUshort(sc, 0x15, 0x00a4); - MP_WritePhyUshort(sc, 0x19, 0x000b); - MP_WritePhyUshort(sc, 0x15, 0x00a5); - MP_WritePhyUshort(sc, 0x19, 0x4020); - MP_WritePhyUshort(sc, 0x15, 0x00a6); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x00a7); - MP_WritePhyUshort(sc, 0x19, 0x58a4); - MP_WritePhyUshort(sc, 0x15, 0x00a8); - MP_WritePhyUshort(sc, 0x19, 0x63da); - MP_WritePhyUshort(sc, 0x15, 0x00a9); - MP_WritePhyUshort(sc, 0x19, 0x5cb0); - MP_WritePhyUshort(sc, 0x15, 0x00aa); - MP_WritePhyUshort(sc, 0x19, 0x7d00); - MP_WritePhyUshort(sc, 0x15, 0x00ab); - MP_WritePhyUshort(sc, 0x19, 0x72b0); - MP_WritePhyUshort(sc, 0x15, 0x00ac); - MP_WritePhyUshort(sc, 0x19, 0x7f00); - MP_WritePhyUshort(sc, 0x15, 0x00ad); - MP_WritePhyUshort(sc, 0x19, 0x70b0); - MP_WritePhyUshort(sc, 0x15, 0x00ae); - MP_WritePhyUshort(sc, 0x19, 0x30b8); - MP_WritePhyUshort(sc, 0x15, 0x00AF); - MP_WritePhyUshort(sc, 0x19, 0x4060); - MP_WritePhyUshort(sc, 0x15, 0x00B0); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x00B1); - MP_WritePhyUshort(sc, 0x19, 0x7e00); - MP_WritePhyUshort(sc, 0x15, 0x00B2); - MP_WritePhyUshort(sc, 0x19, 0x72B0); - MP_WritePhyUshort(sc, 0x15, 0x00B3); - MP_WritePhyUshort(sc, 0x19, 0x7F00); - MP_WritePhyUshort(sc, 0x15, 0x00B4); - MP_WritePhyUshort(sc, 0x19, 0x73B0); - MP_WritePhyUshort(sc, 0x15, 0x00b5); - MP_WritePhyUshort(sc, 0x19, 0x58a0); - MP_WritePhyUshort(sc, 0x15, 0x00b6); - MP_WritePhyUshort(sc, 0x19, 0x63d2); - MP_WritePhyUshort(sc, 0x15, 0x00b7); - MP_WritePhyUshort(sc, 0x19, 0x5c00); - MP_WritePhyUshort(sc, 0x15, 0x00b8); - MP_WritePhyUshort(sc, 0x19, 0x5780); - MP_WritePhyUshort(sc, 0x15, 0x00b9); - MP_WritePhyUshort(sc, 0x19, 0xb60d); - MP_WritePhyUshort(sc, 0x15, 0x00ba); - MP_WritePhyUshort(sc, 0x19, 0x9bff); - MP_WritePhyUshort(sc, 0x15, 0x00bb); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x00bc); - MP_WritePhyUshort(sc, 0x19, 0x6001); - MP_WritePhyUshort(sc, 0x15, 0x00bd); - MP_WritePhyUshort(sc, 0x19, 0xc020); - MP_WritePhyUshort(sc, 0x15, 0x00be); - MP_WritePhyUshort(sc, 0x19, 0x002b); - MP_WritePhyUshort(sc, 0x15, 0x00bf); - MP_WritePhyUshort(sc, 0x19, 0xc137); - MP_WritePhyUshort(sc, 0x15, 0x00c0); - MP_WritePhyUshort(sc, 0x19, 0x0006); - MP_WritePhyUshort(sc, 0x15, 0x00c1); - MP_WritePhyUshort(sc, 0x19, 0x9af8); - MP_WritePhyUshort(sc, 0x15, 0x00c2); - MP_WritePhyUshort(sc, 0x19, 0x30c6); - MP_WritePhyUshort(sc, 0x15, 0x00c3); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x00c4); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x00c5); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x00c6); - MP_WritePhyUshort(sc, 0x19, 0x7d00); - MP_WritePhyUshort(sc, 0x15, 0x00c7); - MP_WritePhyUshort(sc, 0x19, 0x70b0); - MP_WritePhyUshort(sc, 0x15, 0x00c8); - MP_WritePhyUshort(sc, 0x19, 0x4400); - MP_WritePhyUshort(sc, 0x15, 0x00c9); - MP_WritePhyUshort(sc, 0x19, 0x4804); - MP_WritePhyUshort(sc, 0x15, 0x00ca); - MP_WritePhyUshort(sc, 0x19, 0x7c80); - MP_WritePhyUshort(sc, 0x15, 0x00cb); - MP_WritePhyUshort(sc, 0x19, 0x5c80); - MP_WritePhyUshort(sc, 0x15, 0x00cc); - MP_WritePhyUshort(sc, 0x19, 0x4010); - MP_WritePhyUshort(sc, 0x15, 0x00cd); - MP_WritePhyUshort(sc, 0x19, 0x4415); - MP_WritePhyUshort(sc, 0x15, 0x00ce); - MP_WritePhyUshort(sc, 0x19, 0x9b00); - MP_WritePhyUshort(sc, 0x15, 0x00cf); - MP_WritePhyUshort(sc, 0x19, 0x7f00); - MP_WritePhyUshort(sc, 0x15, 0x00d0); - MP_WritePhyUshort(sc, 0x19, 0x70b0); - MP_WritePhyUshort(sc, 0x15, 0x00d1); - MP_WritePhyUshort(sc, 0x19, 0x3177); - MP_WritePhyUshort(sc, 0x15, 0x00d2); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x00d3); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x00d4); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x00d5); - MP_WritePhyUshort(sc, 0x19, 0x4808); - MP_WritePhyUshort(sc, 0x15, 0x00d6); - MP_WritePhyUshort(sc, 0x19, 0x4007); - MP_WritePhyUshort(sc, 0x15, 0x00d7); - MP_WritePhyUshort(sc, 0x19, 0x4420); - MP_WritePhyUshort(sc, 0x15, 0x00d8); - MP_WritePhyUshort(sc, 0x19, 0x63d8); - MP_WritePhyUshort(sc, 0x15, 0x00d9); - MP_WritePhyUshort(sc, 0x19, 0xb608); - MP_WritePhyUshort(sc, 0x15, 0x00da); - MP_WritePhyUshort(sc, 0x19, 0xbcbd); - MP_WritePhyUshort(sc, 0x15, 0x00db); - MP_WritePhyUshort(sc, 0x19, 0xc60b); - MP_WritePhyUshort(sc, 0x15, 0x00dc); - MP_WritePhyUshort(sc, 0x19, 0x00fd); - MP_WritePhyUshort(sc, 0x15, 0x00dd); - MP_WritePhyUshort(sc, 0x19, 0x30e1); - MP_WritePhyUshort(sc, 0x15, 0x00de); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x00df); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x00e0); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x00e1); - MP_WritePhyUshort(sc, 0x19, 0x4809); - MP_WritePhyUshort(sc, 0x15, 0x00e2); - MP_WritePhyUshort(sc, 0x19, 0x7e40); - MP_WritePhyUshort(sc, 0x15, 0x00e3); - MP_WritePhyUshort(sc, 0x19, 0x5a40); - MP_WritePhyUshort(sc, 0x15, 0x00e4); - MP_WritePhyUshort(sc, 0x19, 0x305a); - MP_WritePhyUshort(sc, 0x15, 0x00e5); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x00e6); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x00e7); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x00e8); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x00e9); - MP_WritePhyUshort(sc, 0x19, 0x480a); - MP_WritePhyUshort(sc, 0x15, 0x00ea); - MP_WritePhyUshort(sc, 0x19, 0x5820); - MP_WritePhyUshort(sc, 0x15, 0x00eb); - MP_WritePhyUshort(sc, 0x19, 0x6c03); - MP_WritePhyUshort(sc, 0x15, 0x00ec); - MP_WritePhyUshort(sc, 0x19, 0xb60a); - MP_WritePhyUshort(sc, 0x15, 0x00ed); - MP_WritePhyUshort(sc, 0x19, 0xda07); - MP_WritePhyUshort(sc, 0x15, 0x00ee); - MP_WritePhyUshort(sc, 0x19, 0x0008); - MP_WritePhyUshort(sc, 0x15, 0x00ef); - MP_WritePhyUshort(sc, 0x19, 0xc60b); - MP_WritePhyUshort(sc, 0x15, 0x00f0); - MP_WritePhyUshort(sc, 0x19, 0x00fc); - MP_WritePhyUshort(sc, 0x15, 0x00f1); - MP_WritePhyUshort(sc, 0x19, 0x30f6); - MP_WritePhyUshort(sc, 0x15, 0x00f2); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x00f3); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x00f4); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x00f5); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x00f6); - MP_WritePhyUshort(sc, 0x19, 0x4408); - MP_WritePhyUshort(sc, 0x15, 0x00f7); - MP_WritePhyUshort(sc, 0x19, 0x480b); - MP_WritePhyUshort(sc, 0x15, 0x00f8); - MP_WritePhyUshort(sc, 0x19, 0x6f03); - MP_WritePhyUshort(sc, 0x15, 0x00f9); - MP_WritePhyUshort(sc, 0x19, 0x405f); - MP_WritePhyUshort(sc, 0x15, 0x00fa); - MP_WritePhyUshort(sc, 0x19, 0x4448); - MP_WritePhyUshort(sc, 0x15, 0x00fb); - MP_WritePhyUshort(sc, 0x19, 0x4020); - MP_WritePhyUshort(sc, 0x15, 0x00fc); - MP_WritePhyUshort(sc, 0x19, 0x4468); - MP_WritePhyUshort(sc, 0x15, 0x00fd); - MP_WritePhyUshort(sc, 0x19, 0x9c03); - MP_WritePhyUshort(sc, 0x15, 0x00fe); - MP_WritePhyUshort(sc, 0x19, 0x6f07); - MP_WritePhyUshort(sc, 0x15, 0x00ff); - MP_WritePhyUshort(sc, 0x19, 0x58a0); - MP_WritePhyUshort(sc, 0x15, 0x0100); - MP_WritePhyUshort(sc, 0x19, 0xd6d1); - MP_WritePhyUshort(sc, 0x15, 0x0101); - MP_WritePhyUshort(sc, 0x19, 0x0004); - MP_WritePhyUshort(sc, 0x15, 0x0102); - MP_WritePhyUshort(sc, 0x19, 0xc137); - MP_WritePhyUshort(sc, 0x15, 0x0103); - MP_WritePhyUshort(sc, 0x19, 0x0002); - MP_WritePhyUshort(sc, 0x15, 0x0104); - MP_WritePhyUshort(sc, 0x19, 0xa0e5); - MP_WritePhyUshort(sc, 0x15, 0x0105); - MP_WritePhyUshort(sc, 0x19, 0x9df8); - MP_WritePhyUshort(sc, 0x15, 0x0106); - MP_WritePhyUshort(sc, 0x19, 0x30c6); - MP_WritePhyUshort(sc, 0x15, 0x0107); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0108); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0109); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x010a); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x010b); - MP_WritePhyUshort(sc, 0x19, 0x4808); - MP_WritePhyUshort(sc, 0x15, 0x010c); - MP_WritePhyUshort(sc, 0x19, 0xc32d); - MP_WritePhyUshort(sc, 0x15, 0x010d); - MP_WritePhyUshort(sc, 0x19, 0x0003); - MP_WritePhyUshort(sc, 0x15, 0x010e); - MP_WritePhyUshort(sc, 0x19, 0xc8b3); - MP_WritePhyUshort(sc, 0x15, 0x010f); - MP_WritePhyUshort(sc, 0x19, 0x00fc); - MP_WritePhyUshort(sc, 0x15, 0x0110); - MP_WritePhyUshort(sc, 0x19, 0x4400); - MP_WritePhyUshort(sc, 0x15, 0x0111); - MP_WritePhyUshort(sc, 0x19, 0x3116); - MP_WritePhyUshort(sc, 0x15, 0x0112); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0113); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0114); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0115); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0116); - MP_WritePhyUshort(sc, 0x19, 0x4803); - MP_WritePhyUshort(sc, 0x15, 0x0117); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x0118); - MP_WritePhyUshort(sc, 0x19, 0x6c02); - MP_WritePhyUshort(sc, 0x15, 0x0119); - MP_WritePhyUshort(sc, 0x19, 0x7c04); - MP_WritePhyUshort(sc, 0x15, 0x011a); - MP_WritePhyUshort(sc, 0x19, 0x6000); - MP_WritePhyUshort(sc, 0x15, 0x011b); - MP_WritePhyUshort(sc, 0x19, 0x5cf7); - MP_WritePhyUshort(sc, 0x15, 0x011c); - MP_WritePhyUshort(sc, 0x19, 0x7c2a); - MP_WritePhyUshort(sc, 0x15, 0x011d); - MP_WritePhyUshort(sc, 0x19, 0x5800); - MP_WritePhyUshort(sc, 0x15, 0x011e); - MP_WritePhyUshort(sc, 0x19, 0x5400); - MP_WritePhyUshort(sc, 0x15, 0x011f); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x0120); - MP_WritePhyUshort(sc, 0x19, 0x74f0); - MP_WritePhyUshort(sc, 0x15, 0x0121); - MP_WritePhyUshort(sc, 0x19, 0x4019); - MP_WritePhyUshort(sc, 0x15, 0x0122); - MP_WritePhyUshort(sc, 0x19, 0x440d); - MP_WritePhyUshort(sc, 0x15, 0x0123); - MP_WritePhyUshort(sc, 0x19, 0xb6c1); - MP_WritePhyUshort(sc, 0x15, 0x0124); - MP_WritePhyUshort(sc, 0x19, 0xc05b); - MP_WritePhyUshort(sc, 0x15, 0x0125); - MP_WritePhyUshort(sc, 0x19, 0x00bf); - MP_WritePhyUshort(sc, 0x15, 0x0126); - MP_WritePhyUshort(sc, 0x19, 0xc025); - MP_WritePhyUshort(sc, 0x15, 0x0127); - MP_WritePhyUshort(sc, 0x19, 0x00bd); - MP_WritePhyUshort(sc, 0x15, 0x0128); - MP_WritePhyUshort(sc, 0x19, 0xc603); - MP_WritePhyUshort(sc, 0x15, 0x0129); - MP_WritePhyUshort(sc, 0x19, 0x00bb); - MP_WritePhyUshort(sc, 0x15, 0x012a); - MP_WritePhyUshort(sc, 0x19, 0x8805); - MP_WritePhyUshort(sc, 0x15, 0x012b); - MP_WritePhyUshort(sc, 0x19, 0x7801); - MP_WritePhyUshort(sc, 0x15, 0x012c); - MP_WritePhyUshort(sc, 0x19, 0x4001); - MP_WritePhyUshort(sc, 0x15, 0x012d); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x012e); - MP_WritePhyUshort(sc, 0x19, 0xa3dd); - MP_WritePhyUshort(sc, 0x15, 0x012f); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x0130); - MP_WritePhyUshort(sc, 0x19, 0x6c03); - MP_WritePhyUshort(sc, 0x15, 0x0131); - MP_WritePhyUshort(sc, 0x19, 0x8407); - MP_WritePhyUshort(sc, 0x15, 0x0132); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x0133); - MP_WritePhyUshort(sc, 0x19, 0x6c02); - MP_WritePhyUshort(sc, 0x15, 0x0134); - MP_WritePhyUshort(sc, 0x19, 0xd9b8); - MP_WritePhyUshort(sc, 0x15, 0x0135); - MP_WritePhyUshort(sc, 0x19, 0x0003); - MP_WritePhyUshort(sc, 0x15, 0x0136); - MP_WritePhyUshort(sc, 0x19, 0xc240); - MP_WritePhyUshort(sc, 0x15, 0x0137); - MP_WritePhyUshort(sc, 0x19, 0x0015); - MP_WritePhyUshort(sc, 0x15, 0x0138); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x0139); - MP_WritePhyUshort(sc, 0x19, 0x6c02); - MP_WritePhyUshort(sc, 0x15, 0x013a); - MP_WritePhyUshort(sc, 0x19, 0x9ae9); - MP_WritePhyUshort(sc, 0x15, 0x013b); - MP_WritePhyUshort(sc, 0x19, 0x3140); - MP_WritePhyUshort(sc, 0x15, 0x013c); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x013d); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x013e); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x013f); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0140); - MP_WritePhyUshort(sc, 0x19, 0x4807); - MP_WritePhyUshort(sc, 0x15, 0x0141); - MP_WritePhyUshort(sc, 0x19, 0x4004); - MP_WritePhyUshort(sc, 0x15, 0x0142); - MP_WritePhyUshort(sc, 0x19, 0x4410); - MP_WritePhyUshort(sc, 0x15, 0x0143); - MP_WritePhyUshort(sc, 0x19, 0x7c0c); - MP_WritePhyUshort(sc, 0x15, 0x0144); - MP_WritePhyUshort(sc, 0x19, 0x600c); - MP_WritePhyUshort(sc, 0x15, 0x0145); - MP_WritePhyUshort(sc, 0x19, 0x9b00); - MP_WritePhyUshort(sc, 0x15, 0x0146); - MP_WritePhyUshort(sc, 0x19, 0xa68f); - MP_WritePhyUshort(sc, 0x15, 0x0147); - MP_WritePhyUshort(sc, 0x19, 0x3116); - MP_WritePhyUshort(sc, 0x15, 0x0148); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0149); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x014a); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x014b); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x014c); - MP_WritePhyUshort(sc, 0x19, 0x4804); - MP_WritePhyUshort(sc, 0x15, 0x014d); - MP_WritePhyUshort(sc, 0x19, 0x54c0); - MP_WritePhyUshort(sc, 0x15, 0x014e); - MP_WritePhyUshort(sc, 0x19, 0xb703); - MP_WritePhyUshort(sc, 0x15, 0x014f); - MP_WritePhyUshort(sc, 0x19, 0x5cff); - MP_WritePhyUshort(sc, 0x15, 0x0150); - MP_WritePhyUshort(sc, 0x19, 0x315f); - MP_WritePhyUshort(sc, 0x15, 0x0151); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x0152); - MP_WritePhyUshort(sc, 0x19, 0x74f8); - MP_WritePhyUshort(sc, 0x15, 0x0153); - MP_WritePhyUshort(sc, 0x19, 0x6421); - MP_WritePhyUshort(sc, 0x15, 0x0154); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x0155); - MP_WritePhyUshort(sc, 0x19, 0x6000); - MP_WritePhyUshort(sc, 0x15, 0x0156); - MP_WritePhyUshort(sc, 0x19, 0x4003); - MP_WritePhyUshort(sc, 0x15, 0x0157); - MP_WritePhyUshort(sc, 0x19, 0x4418); - MP_WritePhyUshort(sc, 0x15, 0x0158); - MP_WritePhyUshort(sc, 0x19, 0x9b00); - MP_WritePhyUshort(sc, 0x15, 0x0159); - MP_WritePhyUshort(sc, 0x19, 0x6461); - MP_WritePhyUshort(sc, 0x15, 0x015a); - MP_WritePhyUshort(sc, 0x19, 0x64e1); - MP_WritePhyUshort(sc, 0x15, 0x015b); - MP_WritePhyUshort(sc, 0x19, 0x7c20); - MP_WritePhyUshort(sc, 0x15, 0x015c); - MP_WritePhyUshort(sc, 0x19, 0x5820); - MP_WritePhyUshort(sc, 0x15, 0x015d); - MP_WritePhyUshort(sc, 0x19, 0x5ccf); - MP_WritePhyUshort(sc, 0x15, 0x015e); - MP_WritePhyUshort(sc, 0x19, 0x7050); - MP_WritePhyUshort(sc, 0x15, 0x015f); - MP_WritePhyUshort(sc, 0x19, 0xd9b8); - MP_WritePhyUshort(sc, 0x15, 0x0160); - MP_WritePhyUshort(sc, 0x19, 0x0008); - MP_WritePhyUshort(sc, 0x15, 0x0161); - MP_WritePhyUshort(sc, 0x19, 0xdab1); - MP_WritePhyUshort(sc, 0x15, 0x0162); - MP_WritePhyUshort(sc, 0x19, 0x0015); - MP_WritePhyUshort(sc, 0x15, 0x0163); - MP_WritePhyUshort(sc, 0x19, 0xc244); - MP_WritePhyUshort(sc, 0x15, 0x0164); - MP_WritePhyUshort(sc, 0x19, 0x0013); - MP_WritePhyUshort(sc, 0x15, 0x0165); - MP_WritePhyUshort(sc, 0x19, 0xc021); - MP_WritePhyUshort(sc, 0x15, 0x0166); - MP_WritePhyUshort(sc, 0x19, 0x00f9); - MP_WritePhyUshort(sc, 0x15, 0x0167); - MP_WritePhyUshort(sc, 0x19, 0x3177); - MP_WritePhyUshort(sc, 0x15, 0x0168); - MP_WritePhyUshort(sc, 0x19, 0x5cf7); - MP_WritePhyUshort(sc, 0x15, 0x0169); - MP_WritePhyUshort(sc, 0x19, 0x4010); - MP_WritePhyUshort(sc, 0x15, 0x016a); - MP_WritePhyUshort(sc, 0x19, 0x4428); - MP_WritePhyUshort(sc, 0x15, 0x016b); - MP_WritePhyUshort(sc, 0x19, 0x9c00); - MP_WritePhyUshort(sc, 0x15, 0x016c); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x016d); - MP_WritePhyUshort(sc, 0x19, 0x6008); - MP_WritePhyUshort(sc, 0x15, 0x016e); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x016f); - MP_WritePhyUshort(sc, 0x19, 0x74f0); - MP_WritePhyUshort(sc, 0x15, 0x0170); - MP_WritePhyUshort(sc, 0x19, 0x6461); - MP_WritePhyUshort(sc, 0x15, 0x0171); - MP_WritePhyUshort(sc, 0x19, 0x6421); - MP_WritePhyUshort(sc, 0x15, 0x0172); - MP_WritePhyUshort(sc, 0x19, 0x64a1); - MP_WritePhyUshort(sc, 0x15, 0x0173); - MP_WritePhyUshort(sc, 0x19, 0x3116); - MP_WritePhyUshort(sc, 0x15, 0x0174); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0175); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0176); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0177); - MP_WritePhyUshort(sc, 0x19, 0x4805); - MP_WritePhyUshort(sc, 0x15, 0x0178); - MP_WritePhyUshort(sc, 0x19, 0xa103); - MP_WritePhyUshort(sc, 0x15, 0x0179); - MP_WritePhyUshort(sc, 0x19, 0x7c02); - MP_WritePhyUshort(sc, 0x15, 0x017a); - MP_WritePhyUshort(sc, 0x19, 0x6002); - MP_WritePhyUshort(sc, 0x15, 0x017b); - MP_WritePhyUshort(sc, 0x19, 0x7e00); - MP_WritePhyUshort(sc, 0x15, 0x017c); - MP_WritePhyUshort(sc, 0x19, 0x5400); - MP_WritePhyUshort(sc, 0x15, 0x017d); - MP_WritePhyUshort(sc, 0x19, 0x7c6b); - MP_WritePhyUshort(sc, 0x15, 0x017e); - MP_WritePhyUshort(sc, 0x19, 0x5c63); - MP_WritePhyUshort(sc, 0x15, 0x017f); - MP_WritePhyUshort(sc, 0x19, 0x407d); - MP_WritePhyUshort(sc, 0x15, 0x0180); - MP_WritePhyUshort(sc, 0x19, 0xa602); - MP_WritePhyUshort(sc, 0x15, 0x0181); - MP_WritePhyUshort(sc, 0x19, 0x4001); - MP_WritePhyUshort(sc, 0x15, 0x0182); - MP_WritePhyUshort(sc, 0x19, 0x4420); - MP_WritePhyUshort(sc, 0x15, 0x0183); - MP_WritePhyUshort(sc, 0x19, 0x4020); - MP_WritePhyUshort(sc, 0x15, 0x0184); - MP_WritePhyUshort(sc, 0x19, 0x44a1); - MP_WritePhyUshort(sc, 0x15, 0x0185); - MP_WritePhyUshort(sc, 0x19, 0xd6e0); - MP_WritePhyUshort(sc, 0x15, 0x0186); - MP_WritePhyUshort(sc, 0x19, 0x0009); - MP_WritePhyUshort(sc, 0x15, 0x0187); - MP_WritePhyUshort(sc, 0x19, 0x9efe); - MP_WritePhyUshort(sc, 0x15, 0x0188); - MP_WritePhyUshort(sc, 0x19, 0x7c02); - MP_WritePhyUshort(sc, 0x15, 0x0189); - MP_WritePhyUshort(sc, 0x19, 0x6000); - MP_WritePhyUshort(sc, 0x15, 0x018a); - MP_WritePhyUshort(sc, 0x19, 0x9c00); - MP_WritePhyUshort(sc, 0x15, 0x018b); - MP_WritePhyUshort(sc, 0x19, 0x318f); - MP_WritePhyUshort(sc, 0x15, 0x018c); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x018d); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x018e); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x018f); - MP_WritePhyUshort(sc, 0x19, 0x4806); - MP_WritePhyUshort(sc, 0x15, 0x0190); - MP_WritePhyUshort(sc, 0x19, 0x7c10); - MP_WritePhyUshort(sc, 0x15, 0x0191); - MP_WritePhyUshort(sc, 0x19, 0x5c10); - MP_WritePhyUshort(sc, 0x15, 0x0192); - MP_WritePhyUshort(sc, 0x19, 0x40fa); - MP_WritePhyUshort(sc, 0x15, 0x0193); - MP_WritePhyUshort(sc, 0x19, 0xa602); - MP_WritePhyUshort(sc, 0x15, 0x0194); - MP_WritePhyUshort(sc, 0x19, 0x4010); - MP_WritePhyUshort(sc, 0x15, 0x0195); - MP_WritePhyUshort(sc, 0x19, 0x4440); - MP_WritePhyUshort(sc, 0x15, 0x0196); - MP_WritePhyUshort(sc, 0x19, 0x9d00); - MP_WritePhyUshort(sc, 0x15, 0x0197); - MP_WritePhyUshort(sc, 0x19, 0x7c80); - MP_WritePhyUshort(sc, 0x15, 0x0198); - MP_WritePhyUshort(sc, 0x19, 0x6400); - MP_WritePhyUshort(sc, 0x15, 0x0199); - MP_WritePhyUshort(sc, 0x19, 0x4003); - MP_WritePhyUshort(sc, 0x15, 0x019a); - MP_WritePhyUshort(sc, 0x19, 0x4540); - MP_WritePhyUshort(sc, 0x15, 0x019b); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x019c); - MP_WritePhyUshort(sc, 0x19, 0x6008); - MP_WritePhyUshort(sc, 0x15, 0x019d); - MP_WritePhyUshort(sc, 0x19, 0x9f00); - MP_WritePhyUshort(sc, 0x15, 0x019e); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x019f); - MP_WritePhyUshort(sc, 0x19, 0x6400); - MP_WritePhyUshort(sc, 0x15, 0x01a0); - MP_WritePhyUshort(sc, 0x19, 0x7c80); - MP_WritePhyUshort(sc, 0x15, 0x01a1); - MP_WritePhyUshort(sc, 0x19, 0x6480); - MP_WritePhyUshort(sc, 0x15, 0x01a2); - MP_WritePhyUshort(sc, 0x19, 0x3140); - MP_WritePhyUshort(sc, 0x15, 0x01a3); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x01a4); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x01a5); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x01a6); - MP_WritePhyUshort(sc, 0x19, 0x4400); - MP_WritePhyUshort(sc, 0x15, 0x01a7); - MP_WritePhyUshort(sc, 0x19, 0x7c0b); - MP_WritePhyUshort(sc, 0x15, 0x01a8); - MP_WritePhyUshort(sc, 0x19, 0x6c01); - MP_WritePhyUshort(sc, 0x15, 0x01a9); - MP_WritePhyUshort(sc, 0x19, 0x64a8); - MP_WritePhyUshort(sc, 0x15, 0x01aa); - MP_WritePhyUshort(sc, 0x19, 0x6800); - MP_WritePhyUshort(sc, 0x15, 0x01ab); - MP_WritePhyUshort(sc, 0x19, 0x5cf0); - MP_WritePhyUshort(sc, 0x15, 0x01ac); - MP_WritePhyUshort(sc, 0x19, 0x588f); - MP_WritePhyUshort(sc, 0x15, 0x01ad); - MP_WritePhyUshort(sc, 0x19, 0xb628); - MP_WritePhyUshort(sc, 0x15, 0x01ae); - MP_WritePhyUshort(sc, 0x19, 0xc053); - MP_WritePhyUshort(sc, 0x15, 0x01af); - MP_WritePhyUshort(sc, 0x19, 0x0026); - MP_WritePhyUshort(sc, 0x15, 0x01b0); - MP_WritePhyUshort(sc, 0x19, 0xc02d); - MP_WritePhyUshort(sc, 0x15, 0x01b1); - MP_WritePhyUshort(sc, 0x19, 0x0024); - MP_WritePhyUshort(sc, 0x15, 0x01b2); - MP_WritePhyUshort(sc, 0x19, 0xc603); - MP_WritePhyUshort(sc, 0x15, 0x01b3); - MP_WritePhyUshort(sc, 0x19, 0x0022); - MP_WritePhyUshort(sc, 0x15, 0x01b4); - MP_WritePhyUshort(sc, 0x19, 0x8cf9); - MP_WritePhyUshort(sc, 0x15, 0x01b5); - MP_WritePhyUshort(sc, 0x19, 0x31ba); - MP_WritePhyUshort(sc, 0x15, 0x01b6); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x01b7); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x01b8); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x01b9); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x01ba); - MP_WritePhyUshort(sc, 0x19, 0x4400); - MP_WritePhyUshort(sc, 0x15, 0x01bb); - MP_WritePhyUshort(sc, 0x19, 0x5420); - MP_WritePhyUshort(sc, 0x15, 0x01bc); - MP_WritePhyUshort(sc, 0x19, 0x4811); - MP_WritePhyUshort(sc, 0x15, 0x01bd); - MP_WritePhyUshort(sc, 0x19, 0x5000); - MP_WritePhyUshort(sc, 0x15, 0x01be); - MP_WritePhyUshort(sc, 0x19, 0x4801); - MP_WritePhyUshort(sc, 0x15, 0x01bf); - MP_WritePhyUshort(sc, 0x19, 0x6800); - MP_WritePhyUshort(sc, 0x15, 0x01c0); - MP_WritePhyUshort(sc, 0x19, 0x31f5); - MP_WritePhyUshort(sc, 0x15, 0x01c1); - MP_WritePhyUshort(sc, 0x19, 0xb614); - MP_WritePhyUshort(sc, 0x15, 0x01c2); - MP_WritePhyUshort(sc, 0x19, 0x8ce4); - MP_WritePhyUshort(sc, 0x15, 0x01c3); - MP_WritePhyUshort(sc, 0x19, 0xb30c); - MP_WritePhyUshort(sc, 0x15, 0x01c4); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x01c5); - MP_WritePhyUshort(sc, 0x19, 0x6c02); - MP_WritePhyUshort(sc, 0x15, 0x01c6); - MP_WritePhyUshort(sc, 0x19, 0x8206); - MP_WritePhyUshort(sc, 0x15, 0x01c7); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x01c8); - MP_WritePhyUshort(sc, 0x19, 0x6c00); - MP_WritePhyUshort(sc, 0x15, 0x01c9); - MP_WritePhyUshort(sc, 0x19, 0x7c04); - MP_WritePhyUshort(sc, 0x15, 0x01ca); - MP_WritePhyUshort(sc, 0x19, 0x7404); - MP_WritePhyUshort(sc, 0x15, 0x01cb); - MP_WritePhyUshort(sc, 0x19, 0x31c0); - MP_WritePhyUshort(sc, 0x15, 0x01cc); - MP_WritePhyUshort(sc, 0x19, 0x7c04); - MP_WritePhyUshort(sc, 0x15, 0x01cd); - MP_WritePhyUshort(sc, 0x19, 0x7400); - MP_WritePhyUshort(sc, 0x15, 0x01ce); - MP_WritePhyUshort(sc, 0x19, 0x31c0); - MP_WritePhyUshort(sc, 0x15, 0x01cf); - MP_WritePhyUshort(sc, 0x19, 0x8df1); - MP_WritePhyUshort(sc, 0x15, 0x01d0); - MP_WritePhyUshort(sc, 0x19, 0x3248); - MP_WritePhyUshort(sc, 0x15, 0x01d1); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x01d2); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x01d3); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x01d4); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x01d5); - MP_WritePhyUshort(sc, 0x19, 0x4400); - MP_WritePhyUshort(sc, 0x15, 0x01d6); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x01d7); - MP_WritePhyUshort(sc, 0x19, 0x6c03); - MP_WritePhyUshort(sc, 0x15, 0x01d8); - MP_WritePhyUshort(sc, 0x19, 0x7670); - MP_WritePhyUshort(sc, 0x15, 0x01d9); - MP_WritePhyUshort(sc, 0x19, 0x4023); - MP_WritePhyUshort(sc, 0x15, 0x01da); - MP_WritePhyUshort(sc, 0x19, 0x4500); - MP_WritePhyUshort(sc, 0x15, 0x01db); - MP_WritePhyUshort(sc, 0x19, 0x4069); - MP_WritePhyUshort(sc, 0x15, 0x01dc); - MP_WritePhyUshort(sc, 0x19, 0x4580); - MP_WritePhyUshort(sc, 0x15, 0x01dd); - MP_WritePhyUshort(sc, 0x19, 0x9f00); - MP_WritePhyUshort(sc, 0x15, 0x01de); - MP_WritePhyUshort(sc, 0x19, 0xcff5); - MP_WritePhyUshort(sc, 0x15, 0x01df); - MP_WritePhyUshort(sc, 0x19, 0x00ff); - MP_WritePhyUshort(sc, 0x15, 0x01e0); - MP_WritePhyUshort(sc, 0x19, 0x76f0); - MP_WritePhyUshort(sc, 0x15, 0x01e1); - MP_WritePhyUshort(sc, 0x19, 0x4400); - MP_WritePhyUshort(sc, 0x15, 0x01e2); - MP_WritePhyUshort(sc, 0x19, 0x4023); - MP_WritePhyUshort(sc, 0x15, 0x01e3); - MP_WritePhyUshort(sc, 0x19, 0x4500); - MP_WritePhyUshort(sc, 0x15, 0x01e4); - MP_WritePhyUshort(sc, 0x19, 0x4069); - MP_WritePhyUshort(sc, 0x15, 0x01e5); - MP_WritePhyUshort(sc, 0x19, 0x4580); - MP_WritePhyUshort(sc, 0x15, 0x01e6); - MP_WritePhyUshort(sc, 0x19, 0x9f00); - MP_WritePhyUshort(sc, 0x15, 0x01e7); - MP_WritePhyUshort(sc, 0x19, 0xd0f5); - MP_WritePhyUshort(sc, 0x15, 0x01e8); - MP_WritePhyUshort(sc, 0x19, 0x00ff); - MP_WritePhyUshort(sc, 0x15, 0x01e9); - MP_WritePhyUshort(sc, 0x19, 0x4400); - MP_WritePhyUshort(sc, 0x15, 0x01ea); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x01eb); - MP_WritePhyUshort(sc, 0x19, 0x6800); - MP_WritePhyUshort(sc, 0x15, 0x01ec); - MP_WritePhyUshort(sc, 0x19, 0x66a0); - MP_WritePhyUshort(sc, 0x15, 0x01ed); - MP_WritePhyUshort(sc, 0x19, 0x8300); - MP_WritePhyUshort(sc, 0x15, 0x01ee); - MP_WritePhyUshort(sc, 0x19, 0x74f0); - MP_WritePhyUshort(sc, 0x15, 0x01ef); - MP_WritePhyUshort(sc, 0x19, 0x3006); - MP_WritePhyUshort(sc, 0x15, 0x01f0); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x01f1); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x01f2); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x01f3); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x01f4); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x01f5); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x01f6); - MP_WritePhyUshort(sc, 0x19, 0x6c02); - MP_WritePhyUshort(sc, 0x15, 0x01f7); - MP_WritePhyUshort(sc, 0x19, 0x409d); - MP_WritePhyUshort(sc, 0x15, 0x01f8); - MP_WritePhyUshort(sc, 0x19, 0x7c87); - MP_WritePhyUshort(sc, 0x15, 0x01f9); - MP_WritePhyUshort(sc, 0x19, 0xae14); - MP_WritePhyUshort(sc, 0x15, 0x01fa); - MP_WritePhyUshort(sc, 0x19, 0x4400); - MP_WritePhyUshort(sc, 0x15, 0x01fb); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x01fc); - MP_WritePhyUshort(sc, 0x19, 0x6800); - MP_WritePhyUshort(sc, 0x15, 0x01fd); - MP_WritePhyUshort(sc, 0x19, 0x7801); - MP_WritePhyUshort(sc, 0x15, 0x01fe); - MP_WritePhyUshort(sc, 0x19, 0x980e); - MP_WritePhyUshort(sc, 0x15, 0x01ff); - MP_WritePhyUshort(sc, 0x19, 0x930c); - MP_WritePhyUshort(sc, 0x15, 0x0200); - MP_WritePhyUshort(sc, 0x19, 0x9206); - MP_WritePhyUshort(sc, 0x15, 0x0201); - MP_WritePhyUshort(sc, 0x19, 0x4002); - MP_WritePhyUshort(sc, 0x15, 0x0202); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x0203); - MP_WritePhyUshort(sc, 0x19, 0x588f); - MP_WritePhyUshort(sc, 0x15, 0x0204); - MP_WritePhyUshort(sc, 0x19, 0x5520); - MP_WritePhyUshort(sc, 0x15, 0x0205); - MP_WritePhyUshort(sc, 0x19, 0x320c); - MP_WritePhyUshort(sc, 0x15, 0x0206); - MP_WritePhyUshort(sc, 0x19, 0x4000); - MP_WritePhyUshort(sc, 0x15, 0x0207); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x0208); - MP_WritePhyUshort(sc, 0x19, 0x588d); - MP_WritePhyUshort(sc, 0x15, 0x0209); - MP_WritePhyUshort(sc, 0x19, 0x5500); - MP_WritePhyUshort(sc, 0x15, 0x020a); - MP_WritePhyUshort(sc, 0x19, 0x320c); - MP_WritePhyUshort(sc, 0x15, 0x020b); - MP_WritePhyUshort(sc, 0x19, 0x4002); - MP_WritePhyUshort(sc, 0x15, 0x020c); - MP_WritePhyUshort(sc, 0x19, 0x3220); - MP_WritePhyUshort(sc, 0x15, 0x020d); - MP_WritePhyUshort(sc, 0x19, 0x4480); - MP_WritePhyUshort(sc, 0x15, 0x020e); - MP_WritePhyUshort(sc, 0x19, 0x9e03); - MP_WritePhyUshort(sc, 0x15, 0x020f); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x0210); - MP_WritePhyUshort(sc, 0x19, 0x6840); - MP_WritePhyUshort(sc, 0x15, 0x0211); - MP_WritePhyUshort(sc, 0x19, 0x7801); - MP_WritePhyUshort(sc, 0x15, 0x0212); - MP_WritePhyUshort(sc, 0x19, 0x980e); - MP_WritePhyUshort(sc, 0x15, 0x0213); - MP_WritePhyUshort(sc, 0x19, 0x930c); - MP_WritePhyUshort(sc, 0x15, 0x0214); - MP_WritePhyUshort(sc, 0x19, 0x9206); - MP_WritePhyUshort(sc, 0x15, 0x0215); - MP_WritePhyUshort(sc, 0x19, 0x4000); - MP_WritePhyUshort(sc, 0x15, 0x0216); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x0217); - MP_WritePhyUshort(sc, 0x19, 0x588f); - MP_WritePhyUshort(sc, 0x15, 0x0218); - MP_WritePhyUshort(sc, 0x19, 0x5520); - MP_WritePhyUshort(sc, 0x15, 0x0219); - MP_WritePhyUshort(sc, 0x19, 0x3220); - MP_WritePhyUshort(sc, 0x15, 0x021a); - MP_WritePhyUshort(sc, 0x19, 0x4002); - MP_WritePhyUshort(sc, 0x15, 0x021b); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x021c); - MP_WritePhyUshort(sc, 0x19, 0x588d); - MP_WritePhyUshort(sc, 0x15, 0x021d); - MP_WritePhyUshort(sc, 0x19, 0x5540); - MP_WritePhyUshort(sc, 0x15, 0x021e); - MP_WritePhyUshort(sc, 0x19, 0x3220); - MP_WritePhyUshort(sc, 0x15, 0x021f); - MP_WritePhyUshort(sc, 0x19, 0x4000); - MP_WritePhyUshort(sc, 0x15, 0x0220); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x0221); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x0222); - MP_WritePhyUshort(sc, 0x19, 0x6c00); - MP_WritePhyUshort(sc, 0x15, 0x0223); - MP_WritePhyUshort(sc, 0x19, 0x3231); - MP_WritePhyUshort(sc, 0x15, 0x0224); - MP_WritePhyUshort(sc, 0x19, 0xab06); - MP_WritePhyUshort(sc, 0x15, 0x0225); - MP_WritePhyUshort(sc, 0x19, 0xbf08); - MP_WritePhyUshort(sc, 0x15, 0x0226); - MP_WritePhyUshort(sc, 0x19, 0x4076); - MP_WritePhyUshort(sc, 0x15, 0x0227); - MP_WritePhyUshort(sc, 0x19, 0x7d07); - MP_WritePhyUshort(sc, 0x15, 0x0228); - MP_WritePhyUshort(sc, 0x19, 0x4502); - MP_WritePhyUshort(sc, 0x15, 0x0229); - MP_WritePhyUshort(sc, 0x19, 0x3231); - MP_WritePhyUshort(sc, 0x15, 0x022a); - MP_WritePhyUshort(sc, 0x19, 0x7d80); - MP_WritePhyUshort(sc, 0x15, 0x022b); - MP_WritePhyUshort(sc, 0x19, 0x5180); - MP_WritePhyUshort(sc, 0x15, 0x022c); - MP_WritePhyUshort(sc, 0x19, 0x322f); - MP_WritePhyUshort(sc, 0x15, 0x022d); - MP_WritePhyUshort(sc, 0x19, 0x7d80); - MP_WritePhyUshort(sc, 0x15, 0x022e); - MP_WritePhyUshort(sc, 0x19, 0x5000); - MP_WritePhyUshort(sc, 0x15, 0x022f); - MP_WritePhyUshort(sc, 0x19, 0x7d07); - MP_WritePhyUshort(sc, 0x15, 0x0230); - MP_WritePhyUshort(sc, 0x19, 0x4402); - MP_WritePhyUshort(sc, 0x15, 0x0231); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x0232); - MP_WritePhyUshort(sc, 0x19, 0x6c02); - MP_WritePhyUshort(sc, 0x15, 0x0233); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x0234); - MP_WritePhyUshort(sc, 0x19, 0xb309); - MP_WritePhyUshort(sc, 0x15, 0x0235); - MP_WritePhyUshort(sc, 0x19, 0xb204); - MP_WritePhyUshort(sc, 0x15, 0x0236); - MP_WritePhyUshort(sc, 0x19, 0xb105); - MP_WritePhyUshort(sc, 0x15, 0x0237); - MP_WritePhyUshort(sc, 0x19, 0x6c00); - MP_WritePhyUshort(sc, 0x15, 0x0238); - MP_WritePhyUshort(sc, 0x19, 0x31c1); - MP_WritePhyUshort(sc, 0x15, 0x0239); - MP_WritePhyUshort(sc, 0x19, 0x6c00); - MP_WritePhyUshort(sc, 0x15, 0x023a); - MP_WritePhyUshort(sc, 0x19, 0x3261); - MP_WritePhyUshort(sc, 0x15, 0x023b); - MP_WritePhyUshort(sc, 0x19, 0x6c00); - MP_WritePhyUshort(sc, 0x15, 0x023c); - MP_WritePhyUshort(sc, 0x19, 0x3250); - MP_WritePhyUshort(sc, 0x15, 0x023d); - MP_WritePhyUshort(sc, 0x19, 0xb203); - MP_WritePhyUshort(sc, 0x15, 0x023e); - MP_WritePhyUshort(sc, 0x19, 0x6c00); - MP_WritePhyUshort(sc, 0x15, 0x023f); - MP_WritePhyUshort(sc, 0x19, 0x327a); - MP_WritePhyUshort(sc, 0x15, 0x0240); - MP_WritePhyUshort(sc, 0x19, 0x6c00); - MP_WritePhyUshort(sc, 0x15, 0x0241); - MP_WritePhyUshort(sc, 0x19, 0x3293); - MP_WritePhyUshort(sc, 0x15, 0x0242); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0243); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0244); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0245); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0246); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0247); - MP_WritePhyUshort(sc, 0x19, 0x32a3); - MP_WritePhyUshort(sc, 0x15, 0x0248); - MP_WritePhyUshort(sc, 0x19, 0x5520); - MP_WritePhyUshort(sc, 0x15, 0x0249); - MP_WritePhyUshort(sc, 0x19, 0x403d); - MP_WritePhyUshort(sc, 0x15, 0x024a); - MP_WritePhyUshort(sc, 0x19, 0x440c); - MP_WritePhyUshort(sc, 0x15, 0x024b); - MP_WritePhyUshort(sc, 0x19, 0x4812); - MP_WritePhyUshort(sc, 0x15, 0x024c); - MP_WritePhyUshort(sc, 0x19, 0x5001); - MP_WritePhyUshort(sc, 0x15, 0x024d); - MP_WritePhyUshort(sc, 0x19, 0x4802); - MP_WritePhyUshort(sc, 0x15, 0x024e); - MP_WritePhyUshort(sc, 0x19, 0x6880); - MP_WritePhyUshort(sc, 0x15, 0x024f); - MP_WritePhyUshort(sc, 0x19, 0x31f5); - MP_WritePhyUshort(sc, 0x15, 0x0250); - MP_WritePhyUshort(sc, 0x19, 0xb685); - MP_WritePhyUshort(sc, 0x15, 0x0251); - MP_WritePhyUshort(sc, 0x19, 0x801c); - MP_WritePhyUshort(sc, 0x15, 0x0252); - MP_WritePhyUshort(sc, 0x19, 0xbaf5); - MP_WritePhyUshort(sc, 0x15, 0x0253); - MP_WritePhyUshort(sc, 0x19, 0xc07c); - MP_WritePhyUshort(sc, 0x15, 0x0254); - MP_WritePhyUshort(sc, 0x19, 0x00fb); - MP_WritePhyUshort(sc, 0x15, 0x0255); - MP_WritePhyUshort(sc, 0x19, 0x325a); - MP_WritePhyUshort(sc, 0x15, 0x0256); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0257); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0258); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0259); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x025a); - MP_WritePhyUshort(sc, 0x19, 0x481a); - MP_WritePhyUshort(sc, 0x15, 0x025b); - MP_WritePhyUshort(sc, 0x19, 0x5001); - MP_WritePhyUshort(sc, 0x15, 0x025c); - MP_WritePhyUshort(sc, 0x19, 0x401b); - MP_WritePhyUshort(sc, 0x15, 0x025d); - MP_WritePhyUshort(sc, 0x19, 0x480a); - MP_WritePhyUshort(sc, 0x15, 0x025e); - MP_WritePhyUshort(sc, 0x19, 0x4418); - MP_WritePhyUshort(sc, 0x15, 0x025f); - MP_WritePhyUshort(sc, 0x19, 0x6900); - MP_WritePhyUshort(sc, 0x15, 0x0260); - MP_WritePhyUshort(sc, 0x19, 0x31f5); - MP_WritePhyUshort(sc, 0x15, 0x0261); - MP_WritePhyUshort(sc, 0x19, 0xb64b); - MP_WritePhyUshort(sc, 0x15, 0x0262); - MP_WritePhyUshort(sc, 0x19, 0xdb00); - MP_WritePhyUshort(sc, 0x15, 0x0263); - MP_WritePhyUshort(sc, 0x19, 0x0048); - MP_WritePhyUshort(sc, 0x15, 0x0264); - MP_WritePhyUshort(sc, 0x19, 0xdb7d); - MP_WritePhyUshort(sc, 0x15, 0x0265); - MP_WritePhyUshort(sc, 0x19, 0x0002); - MP_WritePhyUshort(sc, 0x15, 0x0266); - MP_WritePhyUshort(sc, 0x19, 0xa0fa); - MP_WritePhyUshort(sc, 0x15, 0x0267); - MP_WritePhyUshort(sc, 0x19, 0x4408); - MP_WritePhyUshort(sc, 0x15, 0x0268); - MP_WritePhyUshort(sc, 0x19, 0x3248); - MP_WritePhyUshort(sc, 0x15, 0x0269); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x026a); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x026b); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x026c); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x026d); - MP_WritePhyUshort(sc, 0x19, 0xb806); - MP_WritePhyUshort(sc, 0x15, 0x026e); - MP_WritePhyUshort(sc, 0x19, 0x588d); - MP_WritePhyUshort(sc, 0x15, 0x026f); - MP_WritePhyUshort(sc, 0x19, 0x5500); - MP_WritePhyUshort(sc, 0x15, 0x0270); - MP_WritePhyUshort(sc, 0x19, 0x7801); - MP_WritePhyUshort(sc, 0x15, 0x0271); - MP_WritePhyUshort(sc, 0x19, 0x4002); - MP_WritePhyUshort(sc, 0x15, 0x0272); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x0273); - MP_WritePhyUshort(sc, 0x19, 0x4814); - MP_WritePhyUshort(sc, 0x15, 0x0274); - MP_WritePhyUshort(sc, 0x19, 0x500b); - MP_WritePhyUshort(sc, 0x15, 0x0275); - MP_WritePhyUshort(sc, 0x19, 0x4804); - MP_WritePhyUshort(sc, 0x15, 0x0276); - MP_WritePhyUshort(sc, 0x19, 0x40c4); - MP_WritePhyUshort(sc, 0x15, 0x0277); - MP_WritePhyUshort(sc, 0x19, 0x4425); - MP_WritePhyUshort(sc, 0x15, 0x0278); - MP_WritePhyUshort(sc, 0x19, 0x6a00); - MP_WritePhyUshort(sc, 0x15, 0x0279); - MP_WritePhyUshort(sc, 0x19, 0x31f5); - MP_WritePhyUshort(sc, 0x15, 0x027a); - MP_WritePhyUshort(sc, 0x19, 0xb632); - MP_WritePhyUshort(sc, 0x15, 0x027b); - MP_WritePhyUshort(sc, 0x19, 0xdc03); - MP_WritePhyUshort(sc, 0x15, 0x027c); - MP_WritePhyUshort(sc, 0x19, 0x0027); - MP_WritePhyUshort(sc, 0x15, 0x027d); - MP_WritePhyUshort(sc, 0x19, 0x80fc); - MP_WritePhyUshort(sc, 0x15, 0x027e); - MP_WritePhyUshort(sc, 0x19, 0x3283); - MP_WritePhyUshort(sc, 0x15, 0x027f); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0280); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0281); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0282); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0283); - MP_WritePhyUshort(sc, 0x19, 0xb806); - MP_WritePhyUshort(sc, 0x15, 0x0284); - MP_WritePhyUshort(sc, 0x19, 0x588f); - MP_WritePhyUshort(sc, 0x15, 0x0285); - MP_WritePhyUshort(sc, 0x19, 0x5520); - MP_WritePhyUshort(sc, 0x15, 0x0286); - MP_WritePhyUshort(sc, 0x19, 0x7801); - MP_WritePhyUshort(sc, 0x15, 0x0287); - MP_WritePhyUshort(sc, 0x19, 0x4000); - MP_WritePhyUshort(sc, 0x15, 0x0288); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x0289); - MP_WritePhyUshort(sc, 0x19, 0x4818); - MP_WritePhyUshort(sc, 0x15, 0x028a); - MP_WritePhyUshort(sc, 0x19, 0x5051); - MP_WritePhyUshort(sc, 0x15, 0x028b); - MP_WritePhyUshort(sc, 0x19, 0x4808); - MP_WritePhyUshort(sc, 0x15, 0x028c); - MP_WritePhyUshort(sc, 0x19, 0x4050); - MP_WritePhyUshort(sc, 0x15, 0x028d); - MP_WritePhyUshort(sc, 0x19, 0x4462); - MP_WritePhyUshort(sc, 0x15, 0x028e); - MP_WritePhyUshort(sc, 0x19, 0x40c4); - MP_WritePhyUshort(sc, 0x15, 0x028f); - MP_WritePhyUshort(sc, 0x19, 0x4473); - MP_WritePhyUshort(sc, 0x15, 0x0290); - MP_WritePhyUshort(sc, 0x19, 0x5041); - MP_WritePhyUshort(sc, 0x15, 0x0291); - MP_WritePhyUshort(sc, 0x19, 0x6b00); - MP_WritePhyUshort(sc, 0x15, 0x0292); - MP_WritePhyUshort(sc, 0x19, 0x31f5); - MP_WritePhyUshort(sc, 0x15, 0x0293); - MP_WritePhyUshort(sc, 0x19, 0xb619); - MP_WritePhyUshort(sc, 0x15, 0x0294); - MP_WritePhyUshort(sc, 0x19, 0x80d9); - MP_WritePhyUshort(sc, 0x15, 0x0295); - MP_WritePhyUshort(sc, 0x19, 0xbd06); - MP_WritePhyUshort(sc, 0x15, 0x0296); - MP_WritePhyUshort(sc, 0x19, 0xbb0d); - MP_WritePhyUshort(sc, 0x15, 0x0297); - MP_WritePhyUshort(sc, 0x19, 0xaf14); - MP_WritePhyUshort(sc, 0x15, 0x0298); - MP_WritePhyUshort(sc, 0x19, 0x8efa); - MP_WritePhyUshort(sc, 0x15, 0x0299); - MP_WritePhyUshort(sc, 0x19, 0x5049); - MP_WritePhyUshort(sc, 0x15, 0x029a); - MP_WritePhyUshort(sc, 0x19, 0x3248); - MP_WritePhyUshort(sc, 0x15, 0x029b); - MP_WritePhyUshort(sc, 0x19, 0x4c10); - MP_WritePhyUshort(sc, 0x15, 0x029c); - MP_WritePhyUshort(sc, 0x19, 0x44b0); - MP_WritePhyUshort(sc, 0x15, 0x029d); - MP_WritePhyUshort(sc, 0x19, 0x4c00); - MP_WritePhyUshort(sc, 0x15, 0x029e); - MP_WritePhyUshort(sc, 0x19, 0x3292); - MP_WritePhyUshort(sc, 0x15, 0x029f); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02a0); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02a1); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02a2); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02a3); - MP_WritePhyUshort(sc, 0x19, 0x481f); - MP_WritePhyUshort(sc, 0x15, 0x02a4); - MP_WritePhyUshort(sc, 0x19, 0x5005); - MP_WritePhyUshort(sc, 0x15, 0x02a5); - MP_WritePhyUshort(sc, 0x19, 0x480f); - MP_WritePhyUshort(sc, 0x15, 0x02a6); - MP_WritePhyUshort(sc, 0x19, 0xac00); - MP_WritePhyUshort(sc, 0x15, 0x02a7); - MP_WritePhyUshort(sc, 0x19, 0x31a6); - MP_WritePhyUshort(sc, 0x15, 0x02a8); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02a9); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02aa); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02ab); - MP_WritePhyUshort(sc, 0x19, 0x31ba); - MP_WritePhyUshort(sc, 0x15, 0x02ac); - MP_WritePhyUshort(sc, 0x19, 0x31d5); - MP_WritePhyUshort(sc, 0x15, 0x02ad); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02ae); - MP_WritePhyUshort(sc, 0x19, 0x5cf0); - MP_WritePhyUshort(sc, 0x15, 0x02af); - MP_WritePhyUshort(sc, 0x19, 0x588c); - MP_WritePhyUshort(sc, 0x15, 0x02b0); - MP_WritePhyUshort(sc, 0x19, 0x542f); - MP_WritePhyUshort(sc, 0x15, 0x02b1); - MP_WritePhyUshort(sc, 0x19, 0x7ffb); - MP_WritePhyUshort(sc, 0x15, 0x02b2); - MP_WritePhyUshort(sc, 0x19, 0x6ff8); - MP_WritePhyUshort(sc, 0x15, 0x02b3); - MP_WritePhyUshort(sc, 0x19, 0x64a4); - MP_WritePhyUshort(sc, 0x15, 0x02b4); - MP_WritePhyUshort(sc, 0x19, 0x64a0); - MP_WritePhyUshort(sc, 0x15, 0x02b5); - MP_WritePhyUshort(sc, 0x19, 0x6800); - MP_WritePhyUshort(sc, 0x15, 0x02b6); - MP_WritePhyUshort(sc, 0x19, 0x4400); - MP_WritePhyUshort(sc, 0x15, 0x02b7); - MP_WritePhyUshort(sc, 0x19, 0x4020); - MP_WritePhyUshort(sc, 0x15, 0x02b8); - MP_WritePhyUshort(sc, 0x19, 0x4480); - MP_WritePhyUshort(sc, 0x15, 0x02b9); - MP_WritePhyUshort(sc, 0x19, 0x9e00); - MP_WritePhyUshort(sc, 0x15, 0x02ba); - MP_WritePhyUshort(sc, 0x19, 0x4891); - MP_WritePhyUshort(sc, 0x15, 0x02bb); - MP_WritePhyUshort(sc, 0x19, 0x4cc0); - MP_WritePhyUshort(sc, 0x15, 0x02bc); - MP_WritePhyUshort(sc, 0x19, 0x4801); - MP_WritePhyUshort(sc, 0x15, 0x02bd); - MP_WritePhyUshort(sc, 0x19, 0xa609); - MP_WritePhyUshort(sc, 0x15, 0x02be); - MP_WritePhyUshort(sc, 0x19, 0xd64f); - MP_WritePhyUshort(sc, 0x15, 0x02bf); - MP_WritePhyUshort(sc, 0x19, 0x004e); - MP_WritePhyUshort(sc, 0x15, 0x02c0); - MP_WritePhyUshort(sc, 0x19, 0x87fe); - MP_WritePhyUshort(sc, 0x15, 0x02c1); - MP_WritePhyUshort(sc, 0x19, 0x32c6); - MP_WritePhyUshort(sc, 0x15, 0x02c2); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02c3); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02c4); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02c5); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02c6); - MP_WritePhyUshort(sc, 0x19, 0x48b2); - MP_WritePhyUshort(sc, 0x15, 0x02c7); - MP_WritePhyUshort(sc, 0x19, 0x4020); - MP_WritePhyUshort(sc, 0x15, 0x02c8); - MP_WritePhyUshort(sc, 0x19, 0x4822); - MP_WritePhyUshort(sc, 0x15, 0x02c9); - MP_WritePhyUshort(sc, 0x19, 0x4488); - MP_WritePhyUshort(sc, 0x15, 0x02ca); - MP_WritePhyUshort(sc, 0x19, 0xd64f); - MP_WritePhyUshort(sc, 0x15, 0x02cb); - MP_WritePhyUshort(sc, 0x19, 0x0042); - MP_WritePhyUshort(sc, 0x15, 0x02cc); - MP_WritePhyUshort(sc, 0x19, 0x8203); - MP_WritePhyUshort(sc, 0x15, 0x02cd); - MP_WritePhyUshort(sc, 0x19, 0x4cc8); - MP_WritePhyUshort(sc, 0x15, 0x02ce); - MP_WritePhyUshort(sc, 0x19, 0x32d0); - MP_WritePhyUshort(sc, 0x15, 0x02cf); - MP_WritePhyUshort(sc, 0x19, 0x4cc0); - MP_WritePhyUshort(sc, 0x15, 0x02d0); - MP_WritePhyUshort(sc, 0x19, 0xc4d4); - MP_WritePhyUshort(sc, 0x15, 0x02d1); - MP_WritePhyUshort(sc, 0x19, 0x00f9); - MP_WritePhyUshort(sc, 0x15, 0x02d2); - MP_WritePhyUshort(sc, 0x19, 0xa51a); - MP_WritePhyUshort(sc, 0x15, 0x02d3); - MP_WritePhyUshort(sc, 0x19, 0x32d9); - MP_WritePhyUshort(sc, 0x15, 0x02d4); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02d5); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02d6); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02d7); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02d8); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02d9); - MP_WritePhyUshort(sc, 0x19, 0x48b3); - MP_WritePhyUshort(sc, 0x15, 0x02da); - MP_WritePhyUshort(sc, 0x19, 0x4020); - MP_WritePhyUshort(sc, 0x15, 0x02db); - MP_WritePhyUshort(sc, 0x19, 0x4823); - MP_WritePhyUshort(sc, 0x15, 0x02dc); - MP_WritePhyUshort(sc, 0x19, 0x4410); - MP_WritePhyUshort(sc, 0x15, 0x02dd); - MP_WritePhyUshort(sc, 0x19, 0xb630); - MP_WritePhyUshort(sc, 0x15, 0x02de); - MP_WritePhyUshort(sc, 0x19, 0x7dc8); - MP_WritePhyUshort(sc, 0x15, 0x02df); - MP_WritePhyUshort(sc, 0x19, 0x8203); - MP_WritePhyUshort(sc, 0x15, 0x02e0); - MP_WritePhyUshort(sc, 0x19, 0x4c48); - MP_WritePhyUshort(sc, 0x15, 0x02e1); - MP_WritePhyUshort(sc, 0x19, 0x32e3); - MP_WritePhyUshort(sc, 0x15, 0x02e2); - MP_WritePhyUshort(sc, 0x19, 0x4c40); - MP_WritePhyUshort(sc, 0x15, 0x02e3); - MP_WritePhyUshort(sc, 0x19, 0x9bfa); - MP_WritePhyUshort(sc, 0x15, 0x02e4); - MP_WritePhyUshort(sc, 0x19, 0x84ca); - MP_WritePhyUshort(sc, 0x15, 0x02e5); - MP_WritePhyUshort(sc, 0x19, 0x85f8); - MP_WritePhyUshort(sc, 0x15, 0x02e6); - MP_WritePhyUshort(sc, 0x19, 0x32ec); - MP_WritePhyUshort(sc, 0x15, 0x02e7); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02e8); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02e9); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02ea); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02eb); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x02ec); - MP_WritePhyUshort(sc, 0x19, 0x48d4); - MP_WritePhyUshort(sc, 0x15, 0x02ed); - MP_WritePhyUshort(sc, 0x19, 0x4020); - MP_WritePhyUshort(sc, 0x15, 0x02ee); - MP_WritePhyUshort(sc, 0x19, 0x4844); - MP_WritePhyUshort(sc, 0x15, 0x02ef); - MP_WritePhyUshort(sc, 0x19, 0x4420); - MP_WritePhyUshort(sc, 0x15, 0x02f0); - MP_WritePhyUshort(sc, 0x19, 0x6800); - MP_WritePhyUshort(sc, 0x15, 0x02f1); - MP_WritePhyUshort(sc, 0x19, 0x7dc0); - MP_WritePhyUshort(sc, 0x15, 0x02f2); - MP_WritePhyUshort(sc, 0x19, 0x4c40); - MP_WritePhyUshort(sc, 0x15, 0x02f3); - MP_WritePhyUshort(sc, 0x19, 0x7c0b); - MP_WritePhyUshort(sc, 0x15, 0x02f4); - MP_WritePhyUshort(sc, 0x19, 0x6c08); - MP_WritePhyUshort(sc, 0x15, 0x02f5); - MP_WritePhyUshort(sc, 0x19, 0x3311); - MP_WritePhyUshort(sc, 0x15, 0x02f6); - MP_WritePhyUshort(sc, 0x19, 0x9cfd); - MP_WritePhyUshort(sc, 0x15, 0x02f7); - MP_WritePhyUshort(sc, 0x19, 0xb616); - MP_WritePhyUshort(sc, 0x15, 0x02f8); - MP_WritePhyUshort(sc, 0x19, 0xc42b); - MP_WritePhyUshort(sc, 0x15, 0x02f9); - MP_WritePhyUshort(sc, 0x19, 0x00e0); - MP_WritePhyUshort(sc, 0x15, 0x02fa); - MP_WritePhyUshort(sc, 0x19, 0xc455); - MP_WritePhyUshort(sc, 0x15, 0x02fb); - MP_WritePhyUshort(sc, 0x19, 0x00b3); - MP_WritePhyUshort(sc, 0x15, 0x02fc); - MP_WritePhyUshort(sc, 0x19, 0xb20a); - MP_WritePhyUshort(sc, 0x15, 0x02fd); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x02fe); - MP_WritePhyUshort(sc, 0x19, 0x6c02); - MP_WritePhyUshort(sc, 0x15, 0x02ff); - MP_WritePhyUshort(sc, 0x19, 0x8204); - MP_WritePhyUshort(sc, 0x15, 0x0300); - MP_WritePhyUshort(sc, 0x19, 0x7c04); - MP_WritePhyUshort(sc, 0x15, 0x0301); - MP_WritePhyUshort(sc, 0x19, 0x7404); - MP_WritePhyUshort(sc, 0x15, 0x0302); - MP_WritePhyUshort(sc, 0x19, 0x32f3); - MP_WritePhyUshort(sc, 0x15, 0x0303); - MP_WritePhyUshort(sc, 0x19, 0x7c04); - MP_WritePhyUshort(sc, 0x15, 0x0304); - MP_WritePhyUshort(sc, 0x19, 0x7400); - MP_WritePhyUshort(sc, 0x15, 0x0305); - MP_WritePhyUshort(sc, 0x19, 0x32f3); - MP_WritePhyUshort(sc, 0x15, 0x0306); - MP_WritePhyUshort(sc, 0x19, 0xefed); - MP_WritePhyUshort(sc, 0x15, 0x0307); - MP_WritePhyUshort(sc, 0x19, 0x3342); - MP_WritePhyUshort(sc, 0x15, 0x0308); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0309); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x030a); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x030b); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x030c); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x030d); - MP_WritePhyUshort(sc, 0x19, 0x3006); - MP_WritePhyUshort(sc, 0x15, 0x030e); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x030f); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0310); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0311); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x0312); - MP_WritePhyUshort(sc, 0x19, 0xa207); - MP_WritePhyUshort(sc, 0x15, 0x0313); - MP_WritePhyUshort(sc, 0x19, 0x4c00); - MP_WritePhyUshort(sc, 0x15, 0x0314); - MP_WritePhyUshort(sc, 0x19, 0x3322); - MP_WritePhyUshort(sc, 0x15, 0x0315); - MP_WritePhyUshort(sc, 0x19, 0x4041); - MP_WritePhyUshort(sc, 0x15, 0x0316); - MP_WritePhyUshort(sc, 0x19, 0x7d07); - MP_WritePhyUshort(sc, 0x15, 0x0317); - MP_WritePhyUshort(sc, 0x19, 0x4502); - MP_WritePhyUshort(sc, 0x15, 0x0318); - MP_WritePhyUshort(sc, 0x19, 0x3322); - MP_WritePhyUshort(sc, 0x15, 0x0319); - MP_WritePhyUshort(sc, 0x19, 0x4c08); - MP_WritePhyUshort(sc, 0x15, 0x031a); - MP_WritePhyUshort(sc, 0x19, 0x3322); - MP_WritePhyUshort(sc, 0x15, 0x031b); - MP_WritePhyUshort(sc, 0x19, 0x7d80); - MP_WritePhyUshort(sc, 0x15, 0x031c); - MP_WritePhyUshort(sc, 0x19, 0x5180); - MP_WritePhyUshort(sc, 0x15, 0x031d); - MP_WritePhyUshort(sc, 0x19, 0x3320); - MP_WritePhyUshort(sc, 0x15, 0x031e); - MP_WritePhyUshort(sc, 0x19, 0x7d80); - MP_WritePhyUshort(sc, 0x15, 0x031f); - MP_WritePhyUshort(sc, 0x19, 0x5000); - MP_WritePhyUshort(sc, 0x15, 0x0320); - MP_WritePhyUshort(sc, 0x19, 0x7d07); - MP_WritePhyUshort(sc, 0x15, 0x0321); - MP_WritePhyUshort(sc, 0x19, 0x4402); - MP_WritePhyUshort(sc, 0x15, 0x0322); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x0323); - MP_WritePhyUshort(sc, 0x19, 0x6c02); - MP_WritePhyUshort(sc, 0x15, 0x0324); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x0325); - MP_WritePhyUshort(sc, 0x19, 0xb30c); - MP_WritePhyUshort(sc, 0x15, 0x0326); - MP_WritePhyUshort(sc, 0x19, 0xb206); - MP_WritePhyUshort(sc, 0x15, 0x0327); - MP_WritePhyUshort(sc, 0x19, 0xb103); - MP_WritePhyUshort(sc, 0x15, 0x0328); - MP_WritePhyUshort(sc, 0x19, 0x6c00); - MP_WritePhyUshort(sc, 0x15, 0x0329); - MP_WritePhyUshort(sc, 0x19, 0x32f6); - MP_WritePhyUshort(sc, 0x15, 0x032a); - MP_WritePhyUshort(sc, 0x19, 0x6c00); - MP_WritePhyUshort(sc, 0x15, 0x032b); - MP_WritePhyUshort(sc, 0x19, 0x3352); - MP_WritePhyUshort(sc, 0x15, 0x032c); - MP_WritePhyUshort(sc, 0x19, 0xb103); - MP_WritePhyUshort(sc, 0x15, 0x032d); - MP_WritePhyUshort(sc, 0x19, 0x6c00); - MP_WritePhyUshort(sc, 0x15, 0x032e); - MP_WritePhyUshort(sc, 0x19, 0x336a); - MP_WritePhyUshort(sc, 0x15, 0x032f); - MP_WritePhyUshort(sc, 0x19, 0x6c00); - MP_WritePhyUshort(sc, 0x15, 0x0330); - MP_WritePhyUshort(sc, 0x19, 0x3382); - MP_WritePhyUshort(sc, 0x15, 0x0331); - MP_WritePhyUshort(sc, 0x19, 0xb206); - MP_WritePhyUshort(sc, 0x15, 0x0332); - MP_WritePhyUshort(sc, 0x19, 0xb103); - MP_WritePhyUshort(sc, 0x15, 0x0333); - MP_WritePhyUshort(sc, 0x19, 0x6c00); - MP_WritePhyUshort(sc, 0x15, 0x0334); - MP_WritePhyUshort(sc, 0x19, 0x3395); - MP_WritePhyUshort(sc, 0x15, 0x0335); - MP_WritePhyUshort(sc, 0x19, 0x6c00); - MP_WritePhyUshort(sc, 0x15, 0x0336); - MP_WritePhyUshort(sc, 0x19, 0x33c6); - MP_WritePhyUshort(sc, 0x15, 0x0337); - MP_WritePhyUshort(sc, 0x19, 0xb103); - MP_WritePhyUshort(sc, 0x15, 0x0338); - MP_WritePhyUshort(sc, 0x19, 0x6c00); - MP_WritePhyUshort(sc, 0x15, 0x0339); - MP_WritePhyUshort(sc, 0x19, 0x33d7); - MP_WritePhyUshort(sc, 0x15, 0x033a); - MP_WritePhyUshort(sc, 0x19, 0x6c00); - MP_WritePhyUshort(sc, 0x15, 0x033b); - MP_WritePhyUshort(sc, 0x19, 0x33f2); - MP_WritePhyUshort(sc, 0x15, 0x033c); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x033d); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x033e); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x033f); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0340); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0341); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0342); - MP_WritePhyUshort(sc, 0x19, 0x49b5); - MP_WritePhyUshort(sc, 0x15, 0x0343); - MP_WritePhyUshort(sc, 0x19, 0x7d00); - MP_WritePhyUshort(sc, 0x15, 0x0344); - MP_WritePhyUshort(sc, 0x19, 0x4d00); - MP_WritePhyUshort(sc, 0x15, 0x0345); - MP_WritePhyUshort(sc, 0x19, 0x6880); - MP_WritePhyUshort(sc, 0x15, 0x0346); - MP_WritePhyUshort(sc, 0x19, 0x7c08); - MP_WritePhyUshort(sc, 0x15, 0x0347); - MP_WritePhyUshort(sc, 0x19, 0x6c08); - MP_WritePhyUshort(sc, 0x15, 0x0348); - MP_WritePhyUshort(sc, 0x19, 0x4925); - MP_WritePhyUshort(sc, 0x15, 0x0349); - MP_WritePhyUshort(sc, 0x19, 0x403b); - MP_WritePhyUshort(sc, 0x15, 0x034a); - MP_WritePhyUshort(sc, 0x19, 0xa602); - MP_WritePhyUshort(sc, 0x15, 0x034b); - MP_WritePhyUshort(sc, 0x19, 0x402f); - MP_WritePhyUshort(sc, 0x15, 0x034c); - MP_WritePhyUshort(sc, 0x19, 0x4484); - MP_WritePhyUshort(sc, 0x15, 0x034d); - MP_WritePhyUshort(sc, 0x19, 0x40c8); - MP_WritePhyUshort(sc, 0x15, 0x034e); - MP_WritePhyUshort(sc, 0x19, 0x44c4); - MP_WritePhyUshort(sc, 0x15, 0x034f); - MP_WritePhyUshort(sc, 0x19, 0xd64f); - MP_WritePhyUshort(sc, 0x15, 0x0350); - MP_WritePhyUshort(sc, 0x19, 0x00bd); - MP_WritePhyUshort(sc, 0x15, 0x0351); - MP_WritePhyUshort(sc, 0x19, 0x3311); - MP_WritePhyUshort(sc, 0x15, 0x0352); - MP_WritePhyUshort(sc, 0x19, 0xc8ed); - MP_WritePhyUshort(sc, 0x15, 0x0353); - MP_WritePhyUshort(sc, 0x19, 0x00fc); - MP_WritePhyUshort(sc, 0x15, 0x0354); - MP_WritePhyUshort(sc, 0x19, 0x8221); - MP_WritePhyUshort(sc, 0x15, 0x0355); - MP_WritePhyUshort(sc, 0x19, 0xd11d); - MP_WritePhyUshort(sc, 0x15, 0x0356); - MP_WritePhyUshort(sc, 0x19, 0x001f); - MP_WritePhyUshort(sc, 0x15, 0x0357); - MP_WritePhyUshort(sc, 0x19, 0xde18); - MP_WritePhyUshort(sc, 0x15, 0x0358); - MP_WritePhyUshort(sc, 0x19, 0x0008); - MP_WritePhyUshort(sc, 0x15, 0x0359); - MP_WritePhyUshort(sc, 0x19, 0x91f6); - MP_WritePhyUshort(sc, 0x15, 0x035a); - MP_WritePhyUshort(sc, 0x19, 0x3360); - MP_WritePhyUshort(sc, 0x15, 0x035b); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x035c); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x035d); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x035e); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x035f); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0360); - MP_WritePhyUshort(sc, 0x19, 0x4bb6); - MP_WritePhyUshort(sc, 0x15, 0x0361); - MP_WritePhyUshort(sc, 0x19, 0x4064); - MP_WritePhyUshort(sc, 0x15, 0x0362); - MP_WritePhyUshort(sc, 0x19, 0x4b26); - MP_WritePhyUshort(sc, 0x15, 0x0363); - MP_WritePhyUshort(sc, 0x19, 0x4410); - MP_WritePhyUshort(sc, 0x15, 0x0364); - MP_WritePhyUshort(sc, 0x19, 0x4006); - MP_WritePhyUshort(sc, 0x15, 0x0365); - MP_WritePhyUshort(sc, 0x19, 0x4490); - MP_WritePhyUshort(sc, 0x15, 0x0366); - MP_WritePhyUshort(sc, 0x19, 0x6900); - MP_WritePhyUshort(sc, 0x15, 0x0367); - MP_WritePhyUshort(sc, 0x19, 0xb6a6); - MP_WritePhyUshort(sc, 0x15, 0x0368); - MP_WritePhyUshort(sc, 0x19, 0x9e02); - MP_WritePhyUshort(sc, 0x15, 0x0369); - MP_WritePhyUshort(sc, 0x19, 0x3311); - MP_WritePhyUshort(sc, 0x15, 0x036a); - MP_WritePhyUshort(sc, 0x19, 0xd11d); - MP_WritePhyUshort(sc, 0x15, 0x036b); - MP_WritePhyUshort(sc, 0x19, 0x000a); - MP_WritePhyUshort(sc, 0x15, 0x036c); - MP_WritePhyUshort(sc, 0x19, 0xbb0f); - MP_WritePhyUshort(sc, 0x15, 0x036d); - MP_WritePhyUshort(sc, 0x19, 0x8102); - MP_WritePhyUshort(sc, 0x15, 0x036e); - MP_WritePhyUshort(sc, 0x19, 0x3371); - MP_WritePhyUshort(sc, 0x15, 0x036f); - MP_WritePhyUshort(sc, 0x19, 0xa21e); - MP_WritePhyUshort(sc, 0x15, 0x0370); - MP_WritePhyUshort(sc, 0x19, 0x33b6); - MP_WritePhyUshort(sc, 0x15, 0x0371); - MP_WritePhyUshort(sc, 0x19, 0x91f6); - MP_WritePhyUshort(sc, 0x15, 0x0372); - MP_WritePhyUshort(sc, 0x19, 0xc218); - MP_WritePhyUshort(sc, 0x15, 0x0373); - MP_WritePhyUshort(sc, 0x19, 0x00f4); - MP_WritePhyUshort(sc, 0x15, 0x0374); - MP_WritePhyUshort(sc, 0x19, 0x33b6); - MP_WritePhyUshort(sc, 0x15, 0x0375); - MP_WritePhyUshort(sc, 0x19, 0x32ec); - MP_WritePhyUshort(sc, 0x15, 0x0376); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0377); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0378); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x0379); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x037a); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x037b); - MP_WritePhyUshort(sc, 0x19, 0x4b97); - MP_WritePhyUshort(sc, 0x15, 0x037c); - MP_WritePhyUshort(sc, 0x19, 0x402b); - MP_WritePhyUshort(sc, 0x15, 0x037d); - MP_WritePhyUshort(sc, 0x19, 0x4b07); - MP_WritePhyUshort(sc, 0x15, 0x037e); - MP_WritePhyUshort(sc, 0x19, 0x4422); - MP_WritePhyUshort(sc, 0x15, 0x037f); - MP_WritePhyUshort(sc, 0x19, 0x6980); - MP_WritePhyUshort(sc, 0x15, 0x0380); - MP_WritePhyUshort(sc, 0x19, 0xb608); - MP_WritePhyUshort(sc, 0x15, 0x0381); - MP_WritePhyUshort(sc, 0x19, 0x3311); - MP_WritePhyUshort(sc, 0x15, 0x0382); - MP_WritePhyUshort(sc, 0x19, 0xbc05); - MP_WritePhyUshort(sc, 0x15, 0x0383); - MP_WritePhyUshort(sc, 0x19, 0xc21c); - MP_WritePhyUshort(sc, 0x15, 0x0384); - MP_WritePhyUshort(sc, 0x19, 0x0032); - MP_WritePhyUshort(sc, 0x15, 0x0385); - MP_WritePhyUshort(sc, 0x19, 0xa1fb); - MP_WritePhyUshort(sc, 0x15, 0x0386); - MP_WritePhyUshort(sc, 0x19, 0x338d); - MP_WritePhyUshort(sc, 0x15, 0x0387); - MP_WritePhyUshort(sc, 0x19, 0x32ae); - MP_WritePhyUshort(sc, 0x15, 0x0388); - MP_WritePhyUshort(sc, 0x19, 0x330d); - MP_WritePhyUshort(sc, 0x15, 0x0389); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x038a); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x038b); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x038c); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x038d); - MP_WritePhyUshort(sc, 0x19, 0x4b97); - MP_WritePhyUshort(sc, 0x15, 0x038e); - MP_WritePhyUshort(sc, 0x19, 0x6a08); - MP_WritePhyUshort(sc, 0x15, 0x038f); - MP_WritePhyUshort(sc, 0x19, 0x4b07); - MP_WritePhyUshort(sc, 0x15, 0x0390); - MP_WritePhyUshort(sc, 0x19, 0x40ac); - MP_WritePhyUshort(sc, 0x15, 0x0391); - MP_WritePhyUshort(sc, 0x19, 0x4445); - MP_WritePhyUshort(sc, 0x15, 0x0392); - MP_WritePhyUshort(sc, 0x19, 0x404e); - MP_WritePhyUshort(sc, 0x15, 0x0393); - MP_WritePhyUshort(sc, 0x19, 0x4461); - MP_WritePhyUshort(sc, 0x15, 0x0394); - MP_WritePhyUshort(sc, 0x19, 0x3311); - MP_WritePhyUshort(sc, 0x15, 0x0395); - MP_WritePhyUshort(sc, 0x19, 0x9c0a); - MP_WritePhyUshort(sc, 0x15, 0x0396); - MP_WritePhyUshort(sc, 0x19, 0x63da); - MP_WritePhyUshort(sc, 0x15, 0x0397); - MP_WritePhyUshort(sc, 0x19, 0x6f0c); - MP_WritePhyUshort(sc, 0x15, 0x0398); - MP_WritePhyUshort(sc, 0x19, 0x5440); - MP_WritePhyUshort(sc, 0x15, 0x0399); - MP_WritePhyUshort(sc, 0x19, 0x4b98); - MP_WritePhyUshort(sc, 0x15, 0x039a); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x039b); - MP_WritePhyUshort(sc, 0x19, 0x4c00); - MP_WritePhyUshort(sc, 0x15, 0x039c); - MP_WritePhyUshort(sc, 0x19, 0x4b08); - MP_WritePhyUshort(sc, 0x15, 0x039d); - MP_WritePhyUshort(sc, 0x19, 0x63d8); - MP_WritePhyUshort(sc, 0x15, 0x039e); - MP_WritePhyUshort(sc, 0x19, 0x33a5); - MP_WritePhyUshort(sc, 0x15, 0x039f); - MP_WritePhyUshort(sc, 0x19, 0xd64f); - MP_WritePhyUshort(sc, 0x15, 0x03a0); - MP_WritePhyUshort(sc, 0x19, 0x00e8); - MP_WritePhyUshort(sc, 0x15, 0x03a1); - MP_WritePhyUshort(sc, 0x19, 0x820e); - MP_WritePhyUshort(sc, 0x15, 0x03a2); - MP_WritePhyUshort(sc, 0x19, 0xa10d); - MP_WritePhyUshort(sc, 0x15, 0x03a3); - MP_WritePhyUshort(sc, 0x19, 0x9df1); - MP_WritePhyUshort(sc, 0x15, 0x03a4); - MP_WritePhyUshort(sc, 0x19, 0x33af); - MP_WritePhyUshort(sc, 0x15, 0x03a5); - MP_WritePhyUshort(sc, 0x19, 0xd64f); - MP_WritePhyUshort(sc, 0x15, 0x03a6); - MP_WritePhyUshort(sc, 0x19, 0x00f9); - MP_WritePhyUshort(sc, 0x15, 0x03a7); - MP_WritePhyUshort(sc, 0x19, 0xc017); - MP_WritePhyUshort(sc, 0x15, 0x03a8); - MP_WritePhyUshort(sc, 0x19, 0x0007); - MP_WritePhyUshort(sc, 0x15, 0x03a9); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x03aa); - MP_WritePhyUshort(sc, 0x19, 0x6c03); - MP_WritePhyUshort(sc, 0x15, 0x03ab); - MP_WritePhyUshort(sc, 0x19, 0xa104); - MP_WritePhyUshort(sc, 0x15, 0x03ac); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x03ad); - MP_WritePhyUshort(sc, 0x19, 0x6c00); - MP_WritePhyUshort(sc, 0x15, 0x03ae); - MP_WritePhyUshort(sc, 0x19, 0x9df7); - MP_WritePhyUshort(sc, 0x15, 0x03af); - MP_WritePhyUshort(sc, 0x19, 0x7c03); - MP_WritePhyUshort(sc, 0x15, 0x03b0); - MP_WritePhyUshort(sc, 0x19, 0x6c08); - MP_WritePhyUshort(sc, 0x15, 0x03b1); - MP_WritePhyUshort(sc, 0x19, 0x33b6); - MP_WritePhyUshort(sc, 0x15, 0x03b2); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03b3); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03b4); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03b5); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03b6); - MP_WritePhyUshort(sc, 0x19, 0x55af); - MP_WritePhyUshort(sc, 0x15, 0x03b7); - MP_WritePhyUshort(sc, 0x19, 0x7ff0); - MP_WritePhyUshort(sc, 0x15, 0x03b8); - MP_WritePhyUshort(sc, 0x19, 0x6ff0); - MP_WritePhyUshort(sc, 0x15, 0x03b9); - MP_WritePhyUshort(sc, 0x19, 0x4bb9); - MP_WritePhyUshort(sc, 0x15, 0x03ba); - MP_WritePhyUshort(sc, 0x19, 0x6a80); - MP_WritePhyUshort(sc, 0x15, 0x03bb); - MP_WritePhyUshort(sc, 0x19, 0x4b29); - MP_WritePhyUshort(sc, 0x15, 0x03bc); - MP_WritePhyUshort(sc, 0x19, 0x4041); - MP_WritePhyUshort(sc, 0x15, 0x03bd); - MP_WritePhyUshort(sc, 0x19, 0x440a); - MP_WritePhyUshort(sc, 0x15, 0x03be); - MP_WritePhyUshort(sc, 0x19, 0x4029); - MP_WritePhyUshort(sc, 0x15, 0x03bf); - MP_WritePhyUshort(sc, 0x19, 0x4418); - MP_WritePhyUshort(sc, 0x15, 0x03c0); - MP_WritePhyUshort(sc, 0x19, 0x4090); - MP_WritePhyUshort(sc, 0x15, 0x03c1); - MP_WritePhyUshort(sc, 0x19, 0x4438); - MP_WritePhyUshort(sc, 0x15, 0x03c2); - MP_WritePhyUshort(sc, 0x19, 0x40c4); - MP_WritePhyUshort(sc, 0x15, 0x03c3); - MP_WritePhyUshort(sc, 0x19, 0x447b); - MP_WritePhyUshort(sc, 0x15, 0x03c4); - MP_WritePhyUshort(sc, 0x19, 0xb6c4); - MP_WritePhyUshort(sc, 0x15, 0x03c5); - MP_WritePhyUshort(sc, 0x19, 0x3311); - MP_WritePhyUshort(sc, 0x15, 0x03c6); - MP_WritePhyUshort(sc, 0x19, 0x9bfe); - MP_WritePhyUshort(sc, 0x15, 0x03c7); - MP_WritePhyUshort(sc, 0x19, 0x33cc); - MP_WritePhyUshort(sc, 0x15, 0x03c8); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03c9); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03ca); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03cb); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03cc); - MP_WritePhyUshort(sc, 0x19, 0x542f); - MP_WritePhyUshort(sc, 0x15, 0x03cd); - MP_WritePhyUshort(sc, 0x19, 0x499a); - MP_WritePhyUshort(sc, 0x15, 0x03ce); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x03cf); - MP_WritePhyUshort(sc, 0x19, 0x4c40); - MP_WritePhyUshort(sc, 0x15, 0x03d0); - MP_WritePhyUshort(sc, 0x19, 0x490a); - MP_WritePhyUshort(sc, 0x15, 0x03d1); - MP_WritePhyUshort(sc, 0x19, 0x405e); - MP_WritePhyUshort(sc, 0x15, 0x03d2); - MP_WritePhyUshort(sc, 0x19, 0x44f8); - MP_WritePhyUshort(sc, 0x15, 0x03d3); - MP_WritePhyUshort(sc, 0x19, 0x6b00); - MP_WritePhyUshort(sc, 0x15, 0x03d4); - MP_WritePhyUshort(sc, 0x19, 0xd64f); - MP_WritePhyUshort(sc, 0x15, 0x03d5); - MP_WritePhyUshort(sc, 0x19, 0x0028); - MP_WritePhyUshort(sc, 0x15, 0x03d6); - MP_WritePhyUshort(sc, 0x19, 0x3311); - MP_WritePhyUshort(sc, 0x15, 0x03d7); - MP_WritePhyUshort(sc, 0x19, 0xbd27); - MP_WritePhyUshort(sc, 0x15, 0x03d8); - MP_WritePhyUshort(sc, 0x19, 0x9cfc); - MP_WritePhyUshort(sc, 0x15, 0x03d9); - MP_WritePhyUshort(sc, 0x19, 0xc639); - MP_WritePhyUshort(sc, 0x15, 0x03da); - MP_WritePhyUshort(sc, 0x19, 0x000f); - MP_WritePhyUshort(sc, 0x15, 0x03db); - MP_WritePhyUshort(sc, 0x19, 0x9e03); - MP_WritePhyUshort(sc, 0x15, 0x03dc); - MP_WritePhyUshort(sc, 0x19, 0x7c01); - MP_WritePhyUshort(sc, 0x15, 0x03dd); - MP_WritePhyUshort(sc, 0x19, 0x4c01); - MP_WritePhyUshort(sc, 0x15, 0x03de); - MP_WritePhyUshort(sc, 0x19, 0x9af6); - MP_WritePhyUshort(sc, 0x15, 0x03df); - MP_WritePhyUshort(sc, 0x19, 0x7c12); - MP_WritePhyUshort(sc, 0x15, 0x03e0); - MP_WritePhyUshort(sc, 0x19, 0x4c52); - MP_WritePhyUshort(sc, 0x15, 0x03e1); - MP_WritePhyUshort(sc, 0x19, 0x4470); - MP_WritePhyUshort(sc, 0x15, 0x03e2); - MP_WritePhyUshort(sc, 0x19, 0x7c12); - MP_WritePhyUshort(sc, 0x15, 0x03e3); - MP_WritePhyUshort(sc, 0x19, 0x4c40); - MP_WritePhyUshort(sc, 0x15, 0x03e4); - MP_WritePhyUshort(sc, 0x19, 0x33d4); - MP_WritePhyUshort(sc, 0x15, 0x03e5); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03e6); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03e7); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03e8); - MP_WritePhyUshort(sc, 0x19, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x03e9); - MP_WritePhyUshort(sc, 0x19, 0x49bb); - MP_WritePhyUshort(sc, 0x15, 0x03ea); - MP_WritePhyUshort(sc, 0x19, 0x4478); - MP_WritePhyUshort(sc, 0x15, 0x03eb); - MP_WritePhyUshort(sc, 0x19, 0x492b); - MP_WritePhyUshort(sc, 0x15, 0x03ec); - MP_WritePhyUshort(sc, 0x19, 0x6b80); - MP_WritePhyUshort(sc, 0x15, 0x03ed); - MP_WritePhyUshort(sc, 0x19, 0x7c01); - MP_WritePhyUshort(sc, 0x15, 0x03ee); - MP_WritePhyUshort(sc, 0x19, 0x4c00); - MP_WritePhyUshort(sc, 0x15, 0x03ef); - MP_WritePhyUshort(sc, 0x19, 0xd64f); - MP_WritePhyUshort(sc, 0x15, 0x03f0); - MP_WritePhyUshort(sc, 0x19, 0x000d); - MP_WritePhyUshort(sc, 0x15, 0x03f1); - MP_WritePhyUshort(sc, 0x19, 0x3311); - MP_WritePhyUshort(sc, 0x15, 0x03f2); - MP_WritePhyUshort(sc, 0x19, 0xbd0c); - MP_WritePhyUshort(sc, 0x15, 0x03f3); - MP_WritePhyUshort(sc, 0x19, 0xc428); - MP_WritePhyUshort(sc, 0x15, 0x03f4); - MP_WritePhyUshort(sc, 0x19, 0x0008); - MP_WritePhyUshort(sc, 0x15, 0x03f5); - MP_WritePhyUshort(sc, 0x19, 0x9afa); - MP_WritePhyUshort(sc, 0x15, 0x03f6); - MP_WritePhyUshort(sc, 0x19, 0x7c12); - MP_WritePhyUshort(sc, 0x15, 0x03f7); - MP_WritePhyUshort(sc, 0x19, 0x4c52); - MP_WritePhyUshort(sc, 0x15, 0x03f8); - MP_WritePhyUshort(sc, 0x19, 0x4470); - MP_WritePhyUshort(sc, 0x15, 0x03f9); - MP_WritePhyUshort(sc, 0x19, 0x7c12); - MP_WritePhyUshort(sc, 0x15, 0x03fa); - MP_WritePhyUshort(sc, 0x19, 0x4c40); - MP_WritePhyUshort(sc, 0x15, 0x03fb); - MP_WritePhyUshort(sc, 0x19, 0x33ef); - MP_WritePhyUshort(sc, 0x15, 0x03fc); - MP_WritePhyUshort(sc, 0x19, 0x3342); - MP_WritePhyUshort(sc, 0x15, 0x03fd); - MP_WritePhyUshort(sc, 0x19, 0x330d); - MP_WritePhyUshort(sc, 0x15, 0x03fe); - MP_WritePhyUshort(sc, 0x19, 0x32ae); - MP_WritePhyUshort(sc, 0x15, 0x0000); - MP_WritePhyUshort(sc, 0x16, 0x0306); - MP_WritePhyUshort(sc, 0x16, 0x0300); - MP_WritePhyUshort(sc, 0x1f, 0x0002); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x0080); - MP_WritePhyUshort(sc, 0x05, 0x8000); - MP_WritePhyUshort(sc, 0x06, 0x0280); - MP_WritePhyUshort(sc, 0x06, 0x48f7); - MP_WritePhyUshort(sc, 0x06, 0x00e0); - MP_WritePhyUshort(sc, 0x06, 0xfff7); - MP_WritePhyUshort(sc, 0x06, 0xa080); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0xf602); - MP_WritePhyUshort(sc, 0x06, 0x0112); - MP_WritePhyUshort(sc, 0x06, 0x0201); - MP_WritePhyUshort(sc, 0x06, 0x1f02); - MP_WritePhyUshort(sc, 0x06, 0x012c); - MP_WritePhyUshort(sc, 0x06, 0x0201); - MP_WritePhyUshort(sc, 0x06, 0x3c02); - MP_WritePhyUshort(sc, 0x06, 0x0156); - MP_WritePhyUshort(sc, 0x06, 0x0201); - MP_WritePhyUshort(sc, 0x06, 0x6d02); - MP_WritePhyUshort(sc, 0x06, 0x809d); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x88e1); - MP_WritePhyUshort(sc, 0x06, 0x8b89); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8a1e); - MP_WritePhyUshort(sc, 0x06, 0x01e1); - MP_WritePhyUshort(sc, 0x06, 0x8b8b); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8c1e); - MP_WritePhyUshort(sc, 0x06, 0x01e1); - MP_WritePhyUshort(sc, 0x06, 0x8b8d); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8e1e); - MP_WritePhyUshort(sc, 0x06, 0x01a0); - MP_WritePhyUshort(sc, 0x06, 0x00c7); - MP_WritePhyUshort(sc, 0x06, 0xaebb); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf82); - MP_WritePhyUshort(sc, 0x06, 0xc702); - MP_WritePhyUshort(sc, 0x06, 0x320a); - MP_WritePhyUshort(sc, 0x06, 0xd105); - MP_WritePhyUshort(sc, 0x06, 0xbf82); - MP_WritePhyUshort(sc, 0x06, 0xcd02); - MP_WritePhyUshort(sc, 0x06, 0x320a); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf82); - MP_WritePhyUshort(sc, 0x06, 0xca02); - MP_WritePhyUshort(sc, 0x06, 0x320a); - MP_WritePhyUshort(sc, 0x06, 0xd105); - MP_WritePhyUshort(sc, 0x06, 0xbf82); - MP_WritePhyUshort(sc, 0x06, 0xd002); - MP_WritePhyUshort(sc, 0x06, 0x320a); - MP_WritePhyUshort(sc, 0x06, 0xd481); - MP_WritePhyUshort(sc, 0x06, 0xc9e4); - MP_WritePhyUshort(sc, 0x06, 0x8b90); - MP_WritePhyUshort(sc, 0x06, 0xe58b); - MP_WritePhyUshort(sc, 0x06, 0x91d4); - MP_WritePhyUshort(sc, 0x06, 0x81b8); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x92e5); - MP_WritePhyUshort(sc, 0x06, 0x8b93); - MP_WritePhyUshort(sc, 0x06, 0xbf8b); - MP_WritePhyUshort(sc, 0x06, 0x88ec); - MP_WritePhyUshort(sc, 0x06, 0x0019); - MP_WritePhyUshort(sc, 0x06, 0xa98b); - MP_WritePhyUshort(sc, 0x06, 0x90f9); - MP_WritePhyUshort(sc, 0x06, 0xeeff); - MP_WritePhyUshort(sc, 0x06, 0xf600); - MP_WritePhyUshort(sc, 0x06, 0xeeff); - MP_WritePhyUshort(sc, 0x06, 0xf7fc); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf82); - MP_WritePhyUshort(sc, 0x06, 0xc102); - MP_WritePhyUshort(sc, 0x06, 0x320a); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xbf82); - MP_WritePhyUshort(sc, 0x06, 0xc402); - MP_WritePhyUshort(sc, 0x06, 0x320a); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x201a); - MP_WritePhyUshort(sc, 0x06, 0xf620); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x824b); - MP_WritePhyUshort(sc, 0x06, 0x0281); - MP_WritePhyUshort(sc, 0x06, 0x1902); - MP_WritePhyUshort(sc, 0x06, 0x2c9d); - MP_WritePhyUshort(sc, 0x06, 0x0203); - MP_WritePhyUshort(sc, 0x06, 0x9602); - MP_WritePhyUshort(sc, 0x06, 0x0473); - MP_WritePhyUshort(sc, 0x06, 0x022e); - MP_WritePhyUshort(sc, 0x06, 0x3902); - MP_WritePhyUshort(sc, 0x06, 0x044d); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x210b); - MP_WritePhyUshort(sc, 0x06, 0xf621); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x0416); - MP_WritePhyUshort(sc, 0x06, 0x021b); - MP_WritePhyUshort(sc, 0x06, 0xa4e0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad22); - MP_WritePhyUshort(sc, 0x06, 0x05f6); - MP_WritePhyUshort(sc, 0x06, 0x22e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x2305); - MP_WritePhyUshort(sc, 0x06, 0xf623); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8ee0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad24); - MP_WritePhyUshort(sc, 0x06, 0x05f6); - MP_WritePhyUshort(sc, 0x06, 0x24e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x2505); - MP_WritePhyUshort(sc, 0x06, 0xf625); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8ee0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad26); - MP_WritePhyUshort(sc, 0x06, 0x08f6); - MP_WritePhyUshort(sc, 0x06, 0x26e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0x0281); - MP_WritePhyUshort(sc, 0x06, 0xdae0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad27); - MP_WritePhyUshort(sc, 0x06, 0x05f6); - MP_WritePhyUshort(sc, 0x06, 0x27e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0x0203); - MP_WritePhyUshort(sc, 0x06, 0x5cfc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xfaef); - MP_WritePhyUshort(sc, 0x06, 0x69e0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xad21); - MP_WritePhyUshort(sc, 0x06, 0x57e0); - MP_WritePhyUshort(sc, 0x06, 0xe022); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x2358); - MP_WritePhyUshort(sc, 0x06, 0xc059); - MP_WritePhyUshort(sc, 0x06, 0x021e); - MP_WritePhyUshort(sc, 0x06, 0x01e1); - MP_WritePhyUshort(sc, 0x06, 0x8b3c); - MP_WritePhyUshort(sc, 0x06, 0x1f10); - MP_WritePhyUshort(sc, 0x06, 0x9e44); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x3cad); - MP_WritePhyUshort(sc, 0x06, 0x211d); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x84f7); - MP_WritePhyUshort(sc, 0x06, 0x29e5); - MP_WritePhyUshort(sc, 0x06, 0x8b84); - MP_WritePhyUshort(sc, 0x06, 0xac27); - MP_WritePhyUshort(sc, 0x06, 0x0dac); - MP_WritePhyUshort(sc, 0x06, 0x2605); - MP_WritePhyUshort(sc, 0x06, 0x0281); - MP_WritePhyUshort(sc, 0x06, 0x7fae); - MP_WritePhyUshort(sc, 0x06, 0x2b02); - MP_WritePhyUshort(sc, 0x06, 0x2c23); - MP_WritePhyUshort(sc, 0x06, 0xae26); - MP_WritePhyUshort(sc, 0x06, 0x022c); - MP_WritePhyUshort(sc, 0x06, 0x41ae); - MP_WritePhyUshort(sc, 0x06, 0x21e0); - MP_WritePhyUshort(sc, 0x06, 0x8b87); - MP_WritePhyUshort(sc, 0x06, 0xad22); - MP_WritePhyUshort(sc, 0x06, 0x18e0); - MP_WritePhyUshort(sc, 0x06, 0xfff7); - MP_WritePhyUshort(sc, 0x06, 0x58fc); - MP_WritePhyUshort(sc, 0x06, 0xe4ff); - MP_WritePhyUshort(sc, 0x06, 0xf7d1); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x2eee); - MP_WritePhyUshort(sc, 0x06, 0x0232); - MP_WritePhyUshort(sc, 0x06, 0x0ad1); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x82e8); - MP_WritePhyUshort(sc, 0x06, 0x0232); - MP_WritePhyUshort(sc, 0x06, 0x0a02); - MP_WritePhyUshort(sc, 0x06, 0x2bdf); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefc); - MP_WritePhyUshort(sc, 0x06, 0x04d0); - MP_WritePhyUshort(sc, 0x06, 0x0202); - MP_WritePhyUshort(sc, 0x06, 0x1e97); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x87ad); - MP_WritePhyUshort(sc, 0x06, 0x2228); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf82); - MP_WritePhyUshort(sc, 0x06, 0xd302); - MP_WritePhyUshort(sc, 0x06, 0x320a); - MP_WritePhyUshort(sc, 0x06, 0xd10c); - MP_WritePhyUshort(sc, 0x06, 0xbf82); - MP_WritePhyUshort(sc, 0x06, 0xd602); - MP_WritePhyUshort(sc, 0x06, 0x320a); - MP_WritePhyUshort(sc, 0x06, 0xd104); - MP_WritePhyUshort(sc, 0x06, 0xbf82); - MP_WritePhyUshort(sc, 0x06, 0xd902); - MP_WritePhyUshort(sc, 0x06, 0x320a); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xbf82); - MP_WritePhyUshort(sc, 0x06, 0xe802); - MP_WritePhyUshort(sc, 0x06, 0x320a); - MP_WritePhyUshort(sc, 0x06, 0xe0ff); - MP_WritePhyUshort(sc, 0x06, 0xf768); - MP_WritePhyUshort(sc, 0x06, 0x03e4); - MP_WritePhyUshort(sc, 0x06, 0xfff7); - MP_WritePhyUshort(sc, 0x06, 0xd004); - MP_WritePhyUshort(sc, 0x06, 0x0228); - MP_WritePhyUshort(sc, 0x06, 0x7a04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0xe234); - MP_WritePhyUshort(sc, 0x06, 0xe1e2); - MP_WritePhyUshort(sc, 0x06, 0x35f6); - MP_WritePhyUshort(sc, 0x06, 0x2be4); - MP_WritePhyUshort(sc, 0x06, 0xe234); - MP_WritePhyUshort(sc, 0x06, 0xe5e2); - MP_WritePhyUshort(sc, 0x06, 0x35fc); - MP_WritePhyUshort(sc, 0x06, 0x05f8); - MP_WritePhyUshort(sc, 0x06, 0xe0e2); - MP_WritePhyUshort(sc, 0x06, 0x34e1); - MP_WritePhyUshort(sc, 0x06, 0xe235); - MP_WritePhyUshort(sc, 0x06, 0xf72b); - MP_WritePhyUshort(sc, 0x06, 0xe4e2); - MP_WritePhyUshort(sc, 0x06, 0x34e5); - MP_WritePhyUshort(sc, 0x06, 0xe235); - MP_WritePhyUshort(sc, 0x06, 0xfc05); - MP_WritePhyUshort(sc, 0x06, 0xf8f9); - MP_WritePhyUshort(sc, 0x06, 0xfaef); - MP_WritePhyUshort(sc, 0x06, 0x69ac); - MP_WritePhyUshort(sc, 0x06, 0x1b4c); - MP_WritePhyUshort(sc, 0x06, 0xbf2e); - MP_WritePhyUshort(sc, 0x06, 0x3002); - MP_WritePhyUshort(sc, 0x06, 0x31dd); - MP_WritePhyUshort(sc, 0x06, 0xef01); - MP_WritePhyUshort(sc, 0x06, 0xe28a); - MP_WritePhyUshort(sc, 0x06, 0x76e4); - MP_WritePhyUshort(sc, 0x06, 0x8a76); - MP_WritePhyUshort(sc, 0x06, 0x1f12); - MP_WritePhyUshort(sc, 0x06, 0x9e3a); - MP_WritePhyUshort(sc, 0x06, 0xef12); - MP_WritePhyUshort(sc, 0x06, 0x5907); - MP_WritePhyUshort(sc, 0x06, 0x9f12); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b40); - MP_WritePhyUshort(sc, 0x06, 0xf721); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x40d0); - MP_WritePhyUshort(sc, 0x06, 0x0302); - MP_WritePhyUshort(sc, 0x06, 0x287a); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0x34fc); - MP_WritePhyUshort(sc, 0x06, 0xa000); - MP_WritePhyUshort(sc, 0x06, 0x1002); - MP_WritePhyUshort(sc, 0x06, 0x2dc3); - MP_WritePhyUshort(sc, 0x06, 0x022e); - MP_WritePhyUshort(sc, 0x06, 0x21e0); - MP_WritePhyUshort(sc, 0x06, 0x8b40); - MP_WritePhyUshort(sc, 0x06, 0xf621); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x40ae); - MP_WritePhyUshort(sc, 0x06, 0x0fbf); - MP_WritePhyUshort(sc, 0x06, 0x3fa5); - MP_WritePhyUshort(sc, 0x06, 0x0231); - MP_WritePhyUshort(sc, 0x06, 0x6cbf); - MP_WritePhyUshort(sc, 0x06, 0x3fa2); - MP_WritePhyUshort(sc, 0x06, 0x0231); - MP_WritePhyUshort(sc, 0x06, 0x6c02); - MP_WritePhyUshort(sc, 0x06, 0x2dc3); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefd); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0xe2f4); - MP_WritePhyUshort(sc, 0x06, 0xe1e2); - MP_WritePhyUshort(sc, 0x06, 0xf5e4); - MP_WritePhyUshort(sc, 0x06, 0x8a78); - MP_WritePhyUshort(sc, 0x06, 0xe58a); - MP_WritePhyUshort(sc, 0x06, 0x79ee); - MP_WritePhyUshort(sc, 0x06, 0xe2f4); - MP_WritePhyUshort(sc, 0x06, 0xd8ee); - MP_WritePhyUshort(sc, 0x06, 0xe2f5); - MP_WritePhyUshort(sc, 0x06, 0x20fc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xf9fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x87ad); - MP_WritePhyUshort(sc, 0x06, 0x2065); - MP_WritePhyUshort(sc, 0x06, 0xd200); - MP_WritePhyUshort(sc, 0x06, 0xbf2e); - MP_WritePhyUshort(sc, 0x06, 0xe802); - MP_WritePhyUshort(sc, 0x06, 0x31dd); - MP_WritePhyUshort(sc, 0x06, 0x1e21); - MP_WritePhyUshort(sc, 0x06, 0xbf82); - MP_WritePhyUshort(sc, 0x06, 0xdf02); - MP_WritePhyUshort(sc, 0x06, 0x31dd); - MP_WritePhyUshort(sc, 0x06, 0x0c11); - MP_WritePhyUshort(sc, 0x06, 0x1e21); - MP_WritePhyUshort(sc, 0x06, 0xbf82); - MP_WritePhyUshort(sc, 0x06, 0xe202); - MP_WritePhyUshort(sc, 0x06, 0x31dd); - MP_WritePhyUshort(sc, 0x06, 0x0c12); - MP_WritePhyUshort(sc, 0x06, 0x1e21); - MP_WritePhyUshort(sc, 0x06, 0xbf82); - MP_WritePhyUshort(sc, 0x06, 0xe502); - MP_WritePhyUshort(sc, 0x06, 0x31dd); - MP_WritePhyUshort(sc, 0x06, 0x0c13); - MP_WritePhyUshort(sc, 0x06, 0x1e21); - MP_WritePhyUshort(sc, 0x06, 0xbf1f); - MP_WritePhyUshort(sc, 0x06, 0x5302); - MP_WritePhyUshort(sc, 0x06, 0x31dd); - MP_WritePhyUshort(sc, 0x06, 0x0c14); - MP_WritePhyUshort(sc, 0x06, 0x1e21); - MP_WritePhyUshort(sc, 0x06, 0xbf82); - MP_WritePhyUshort(sc, 0x06, 0xeb02); - MP_WritePhyUshort(sc, 0x06, 0x31dd); - MP_WritePhyUshort(sc, 0x06, 0x0c16); - MP_WritePhyUshort(sc, 0x06, 0x1e21); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0xe01f); - MP_WritePhyUshort(sc, 0x06, 0x029e); - MP_WritePhyUshort(sc, 0x06, 0x22e6); - MP_WritePhyUshort(sc, 0x06, 0x83e0); - MP_WritePhyUshort(sc, 0x06, 0xad31); - MP_WritePhyUshort(sc, 0x06, 0x14ad); - MP_WritePhyUshort(sc, 0x06, 0x3011); - MP_WritePhyUshort(sc, 0x06, 0xef02); - MP_WritePhyUshort(sc, 0x06, 0x580c); - MP_WritePhyUshort(sc, 0x06, 0x9e07); - MP_WritePhyUshort(sc, 0x06, 0xad36); - MP_WritePhyUshort(sc, 0x06, 0x085a); - MP_WritePhyUshort(sc, 0x06, 0x309f); - MP_WritePhyUshort(sc, 0x06, 0x04d1); - MP_WritePhyUshort(sc, 0x06, 0x01ae); - MP_WritePhyUshort(sc, 0x06, 0x02d1); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x82dc); - MP_WritePhyUshort(sc, 0x06, 0x0232); - MP_WritePhyUshort(sc, 0x06, 0x0aef); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfdfc); - MP_WritePhyUshort(sc, 0x06, 0x0400); - MP_WritePhyUshort(sc, 0x06, 0xe140); - MP_WritePhyUshort(sc, 0x06, 0x77e1); - MP_WritePhyUshort(sc, 0x06, 0x4010); - MP_WritePhyUshort(sc, 0x06, 0xe150); - MP_WritePhyUshort(sc, 0x06, 0x32e1); - MP_WritePhyUshort(sc, 0x06, 0x5030); - MP_WritePhyUshort(sc, 0x06, 0xe144); - MP_WritePhyUshort(sc, 0x06, 0x74e1); - MP_WritePhyUshort(sc, 0x06, 0x44bb); - MP_WritePhyUshort(sc, 0x06, 0xe2d2); - MP_WritePhyUshort(sc, 0x06, 0x40e0); - MP_WritePhyUshort(sc, 0x06, 0x2cfc); - MP_WritePhyUshort(sc, 0x06, 0xe2cc); - MP_WritePhyUshort(sc, 0x06, 0xcce2); - MP_WritePhyUshort(sc, 0x06, 0x00cc); - MP_WritePhyUshort(sc, 0x06, 0xe000); - MP_WritePhyUshort(sc, 0x06, 0x99e0); - MP_WritePhyUshort(sc, 0x06, 0x3688); - MP_WritePhyUshort(sc, 0x06, 0xe036); - MP_WritePhyUshort(sc, 0x06, 0x99e1); - MP_WritePhyUshort(sc, 0x06, 0x40dd); - MP_WritePhyUshort(sc, 0x06, 0xe022); - MP_WritePhyUshort(sc, 0x05, 0xe142); - PhyRegValue = MP_ReadPhyUshort(sc, 0x06); - PhyRegValue |= BIT_0; - MP_WritePhyUshort(sc, 0x06, PhyRegValue); - MP_WritePhyUshort(sc, 0x05, 0xe140); - PhyRegValue = MP_ReadPhyUshort(sc, 0x06); - PhyRegValue |= BIT_0; - MP_WritePhyUshort(sc, 0x06, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x00); - if (PhyRegValue & BIT_7) - break; - } - - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x0B, 0x6C14); - MP_WritePhyUshort(sc, 0x14, 0x7F3D); - MP_WritePhyUshort(sc, 0x1C, 0xFAFE); - MP_WritePhyUshort(sc, 0x08, 0x07C5); - MP_WritePhyUshort(sc, 0x10, 0xF090); - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x14, 0x641A); - MP_WritePhyUshort(sc, 0x1A, 0x0606); - MP_WritePhyUshort(sc, 0x12, 0xF480); - MP_WritePhyUshort(sc, 0x13, 0x0747); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x0D, 0x0207); - MP_WritePhyUshort(sc, 0x02, 0x5FD0); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x09, 0xA20F); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0003); - PhyRegValue = MP_ReadPhyUshort(sc, 0x19); - PhyRegValue &= ~BIT_0; - MP_WritePhyUshort(sc, 0x19, PhyRegValue); - PhyRegValue = MP_ReadPhyUshort(sc, 0x10); - PhyRegValue &= ~BIT_10; - MP_WritePhyUshort(sc, 0x10, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0004); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); - PhyRegValue &= ~BIT_0; - PhyRegValue |= BIT_2; - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0002); - MP_WritePhyUshort(sc, 0x1f, 0x0000); -} - -static void re_set_phy_mcu_8168evl_2(struct re_softc* sc) -{ - u_int16_t PhyRegValue; - int i; - - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x1800); - PhyRegValue = MP_ReadPhyUshort(sc, 0x15); - PhyRegValue &= ~(BIT_12); - MP_WritePhyUshort(sc, 0x15, PhyRegValue); - MP_WritePhyUshort(sc, 0x00, 0x4800); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x002f); - for (i = 0; i < 1000; i++) { - if (MP_ReadPhyUshort(sc, 0x1c) & BIT_7) - break; - DELAY(100); - } - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x1800); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - for (i = 0; i < 200; i++) { - if ((MP_ReadPhyUshort(sc, 0x17) & BIT_0) == 0) - break; - DELAY(100); - } - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x0080); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - MP_WritePhyUshort(sc, 0x16, 0x0306); - MP_WritePhyUshort(sc, 0x16, 0x0307); - MP_WritePhyUshort(sc, 0x15, 0x00AF); - MP_WritePhyUshort(sc, 0x19, 0x4060); - MP_WritePhyUshort(sc, 0x15, 0x00B0); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x00B1); - MP_WritePhyUshort(sc, 0x19, 0x7e00); - MP_WritePhyUshort(sc, 0x15, 0x00B2); - MP_WritePhyUshort(sc, 0x19, 0x72B0); - MP_WritePhyUshort(sc, 0x15, 0x00B3); - MP_WritePhyUshort(sc, 0x19, 0x7F00); - MP_WritePhyUshort(sc, 0x15, 0x00B4); - MP_WritePhyUshort(sc, 0x19, 0x73B0); - MP_WritePhyUshort(sc, 0x15, 0x0101); - MP_WritePhyUshort(sc, 0x19, 0x0005); - MP_WritePhyUshort(sc, 0x15, 0x0103); - MP_WritePhyUshort(sc, 0x19, 0x0003); - MP_WritePhyUshort(sc, 0x15, 0x0105); - MP_WritePhyUshort(sc, 0x19, 0x30FD); - MP_WritePhyUshort(sc, 0x15, 0x0106); - MP_WritePhyUshort(sc, 0x19, 0x9DF7); - MP_WritePhyUshort(sc, 0x15, 0x0107); - MP_WritePhyUshort(sc, 0x19, 0x30C6); - MP_WritePhyUshort(sc, 0x15, 0x0098); - MP_WritePhyUshort(sc, 0x19, 0x7c0b); - MP_WritePhyUshort(sc, 0x15, 0x0099); - MP_WritePhyUshort(sc, 0x19, 0x6c0b); - MP_WritePhyUshort(sc, 0x15, 0x00eb); - MP_WritePhyUshort(sc, 0x19, 0x6c0b); - MP_WritePhyUshort(sc, 0x15, 0x00f8); - MP_WritePhyUshort(sc, 0x19, 0x6f0b); - MP_WritePhyUshort(sc, 0x15, 0x00fe); - MP_WritePhyUshort(sc, 0x19, 0x6f0f); - MP_WritePhyUshort(sc, 0x15, 0x00db); - MP_WritePhyUshort(sc, 0x19, 0x6f09); - MP_WritePhyUshort(sc, 0x15, 0x00dc); - MP_WritePhyUshort(sc, 0x19, 0xaefd); - MP_WritePhyUshort(sc, 0x15, 0x00dd); - MP_WritePhyUshort(sc, 0x19, 0x6f0b); - MP_WritePhyUshort(sc, 0x15, 0x00de); - MP_WritePhyUshort(sc, 0x19, 0xc60b); - MP_WritePhyUshort(sc, 0x15, 0x00df); - MP_WritePhyUshort(sc, 0x19, 0x00fa); - MP_WritePhyUshort(sc, 0x15, 0x00e0); - MP_WritePhyUshort(sc, 0x19, 0x30e1); - MP_WritePhyUshort(sc, 0x15, 0x020c); - MP_WritePhyUshort(sc, 0x19, 0x3224); - MP_WritePhyUshort(sc, 0x15, 0x020e); - MP_WritePhyUshort(sc, 0x19, 0x9813); - MP_WritePhyUshort(sc, 0x15, 0x020f); - MP_WritePhyUshort(sc, 0x19, 0x7801); - MP_WritePhyUshort(sc, 0x15, 0x0210); - MP_WritePhyUshort(sc, 0x19, 0x930f); - MP_WritePhyUshort(sc, 0x15, 0x0211); - MP_WritePhyUshort(sc, 0x19, 0x9206); - MP_WritePhyUshort(sc, 0x15, 0x0212); - MP_WritePhyUshort(sc, 0x19, 0x4002); - MP_WritePhyUshort(sc, 0x15, 0x0213); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x0214); - MP_WritePhyUshort(sc, 0x19, 0x588f); - MP_WritePhyUshort(sc, 0x15, 0x0215); - MP_WritePhyUshort(sc, 0x19, 0x5520); - MP_WritePhyUshort(sc, 0x15, 0x0216); - MP_WritePhyUshort(sc, 0x19, 0x3224); - MP_WritePhyUshort(sc, 0x15, 0x0217); - MP_WritePhyUshort(sc, 0x19, 0x4002); - MP_WritePhyUshort(sc, 0x15, 0x0218); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x0219); - MP_WritePhyUshort(sc, 0x19, 0x588d); - MP_WritePhyUshort(sc, 0x15, 0x021a); - MP_WritePhyUshort(sc, 0x19, 0x5540); - MP_WritePhyUshort(sc, 0x15, 0x021b); - MP_WritePhyUshort(sc, 0x19, 0x9e03); - MP_WritePhyUshort(sc, 0x15, 0x021c); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x021d); - MP_WritePhyUshort(sc, 0x19, 0x6840); - MP_WritePhyUshort(sc, 0x15, 0x021e); - MP_WritePhyUshort(sc, 0x19, 0x3224); - MP_WritePhyUshort(sc, 0x15, 0x021f); - MP_WritePhyUshort(sc, 0x19, 0x4002); - MP_WritePhyUshort(sc, 0x15, 0x0220); - MP_WritePhyUshort(sc, 0x19, 0x3224); - MP_WritePhyUshort(sc, 0x15, 0x0221); - MP_WritePhyUshort(sc, 0x19, 0x9e03); - MP_WritePhyUshort(sc, 0x15, 0x0222); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x0223); - MP_WritePhyUshort(sc, 0x19, 0x6840); - MP_WritePhyUshort(sc, 0x15, 0x0224); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x0225); - MP_WritePhyUshort(sc, 0x19, 0x3231); - MP_WritePhyUshort(sc, 0x15, 0x0000); - MP_WritePhyUshort(sc, 0x16, 0x0306); - MP_WritePhyUshort(sc, 0x16, 0x0300); - MP_WritePhyUshort(sc, 0x1f, 0x0002); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x17, 0x2160); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0040); - MP_WritePhyUshort(sc, 0x18, 0x0004); - MP_WritePhyUshort(sc, 0x18, 0x09d4); - MP_WritePhyUshort(sc, 0x19, 0x4000); - MP_WritePhyUshort(sc, 0x18, 0x09e4); - MP_WritePhyUshort(sc, 0x19, 0x0800); - MP_WritePhyUshort(sc, 0x18, 0x09f4); - MP_WritePhyUshort(sc, 0x19, 0xff00); - MP_WritePhyUshort(sc, 0x18, 0x0a04); - MP_WritePhyUshort(sc, 0x19, 0x4000); - MP_WritePhyUshort(sc, 0x18, 0x0a14); - MP_WritePhyUshort(sc, 0x19, 0x0c00); - MP_WritePhyUshort(sc, 0x18, 0x0a24); - MP_WritePhyUshort(sc, 0x19, 0xff00); - MP_WritePhyUshort(sc, 0x18, 0x0a74); - MP_WritePhyUshort(sc, 0x19, 0xf600); - MP_WritePhyUshort(sc, 0x18, 0x1a24); - MP_WritePhyUshort(sc, 0x19, 0x7d00); - MP_WritePhyUshort(sc, 0x18, 0x1a64); - MP_WritePhyUshort(sc, 0x19, 0x0500); - MP_WritePhyUshort(sc, 0x18, 0x1a74); - MP_WritePhyUshort(sc, 0x19, 0x9500); - MP_WritePhyUshort(sc, 0x18, 0x1a84); - MP_WritePhyUshort(sc, 0x19, 0x8000); - MP_WritePhyUshort(sc, 0x18, 0x1a94); - MP_WritePhyUshort(sc, 0x19, 0x7d00); - MP_WritePhyUshort(sc, 0x18, 0x1aa4); - MP_WritePhyUshort(sc, 0x19, 0x9600); - MP_WritePhyUshort(sc, 0x18, 0x1ac4); - MP_WritePhyUshort(sc, 0x19, 0x4000); - MP_WritePhyUshort(sc, 0x18, 0x1ad4); - MP_WritePhyUshort(sc, 0x19, 0x0800); - MP_WritePhyUshort(sc, 0x18, 0x1af4); - MP_WritePhyUshort(sc, 0x19, 0xc400); - MP_WritePhyUshort(sc, 0x18, 0x1b04); - MP_WritePhyUshort(sc, 0x19, 0x4000); - MP_WritePhyUshort(sc, 0x18, 0x1b14); - MP_WritePhyUshort(sc, 0x19, 0x0800); - MP_WritePhyUshort(sc, 0x18, 0x1b24); - MP_WritePhyUshort(sc, 0x19, 0xfd00); - MP_WritePhyUshort(sc, 0x18, 0x1b34); - MP_WritePhyUshort(sc, 0x19, 0x4000); - MP_WritePhyUshort(sc, 0x18, 0x1b44); - MP_WritePhyUshort(sc, 0x19, 0x0400); - MP_WritePhyUshort(sc, 0x18, 0x1b94); - MP_WritePhyUshort(sc, 0x19, 0xf100); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x17, 0x2100); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0040); - MP_WritePhyUshort(sc, 0x18, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x0080); - MP_WritePhyUshort(sc, 0x05, 0x8000); - MP_WritePhyUshort(sc, 0x06, 0x0280); - MP_WritePhyUshort(sc, 0x06, 0x48f7); - MP_WritePhyUshort(sc, 0x06, 0x00e0); - MP_WritePhyUshort(sc, 0x06, 0xfff7); - MP_WritePhyUshort(sc, 0x06, 0xa080); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0xf602); - MP_WritePhyUshort(sc, 0x06, 0x0115); - MP_WritePhyUshort(sc, 0x06, 0x0201); - MP_WritePhyUshort(sc, 0x06, 0x2202); - MP_WritePhyUshort(sc, 0x06, 0x80a0); - MP_WritePhyUshort(sc, 0x06, 0x0201); - MP_WritePhyUshort(sc, 0x06, 0x3f02); - MP_WritePhyUshort(sc, 0x06, 0x0159); - MP_WritePhyUshort(sc, 0x06, 0x0280); - MP_WritePhyUshort(sc, 0x06, 0xbd02); - MP_WritePhyUshort(sc, 0x06, 0x80da); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x88e1); - MP_WritePhyUshort(sc, 0x06, 0x8b89); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8a1e); - MP_WritePhyUshort(sc, 0x06, 0x01e1); - MP_WritePhyUshort(sc, 0x06, 0x8b8b); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8c1e); - MP_WritePhyUshort(sc, 0x06, 0x01e1); - MP_WritePhyUshort(sc, 0x06, 0x8b8d); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8e1e); - MP_WritePhyUshort(sc, 0x06, 0x01a0); - MP_WritePhyUshort(sc, 0x06, 0x00c7); - MP_WritePhyUshort(sc, 0x06, 0xaebb); - MP_WritePhyUshort(sc, 0x06, 0xd481); - MP_WritePhyUshort(sc, 0x06, 0xd2e4); - MP_WritePhyUshort(sc, 0x06, 0x8b92); - MP_WritePhyUshort(sc, 0x06, 0xe58b); - MP_WritePhyUshort(sc, 0x06, 0x93d1); - MP_WritePhyUshort(sc, 0x06, 0x03bf); - MP_WritePhyUshort(sc, 0x06, 0x859e); - MP_WritePhyUshort(sc, 0x06, 0x0237); - MP_WritePhyUshort(sc, 0x06, 0x23d1); - MP_WritePhyUshort(sc, 0x06, 0x02bf); - MP_WritePhyUshort(sc, 0x06, 0x85a1); - MP_WritePhyUshort(sc, 0x06, 0x0237); - MP_WritePhyUshort(sc, 0x06, 0x23ee); - MP_WritePhyUshort(sc, 0x06, 0x8608); - MP_WritePhyUshort(sc, 0x06, 0x03ee); - MP_WritePhyUshort(sc, 0x06, 0x860a); - MP_WritePhyUshort(sc, 0x06, 0x60ee); - MP_WritePhyUshort(sc, 0x06, 0x8610); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x8611); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x8abe); - MP_WritePhyUshort(sc, 0x06, 0x07ee); - MP_WritePhyUshort(sc, 0x06, 0x8abf); - MP_WritePhyUshort(sc, 0x06, 0x73ee); - MP_WritePhyUshort(sc, 0x06, 0x8a95); - MP_WritePhyUshort(sc, 0x06, 0x02bf); - MP_WritePhyUshort(sc, 0x06, 0x8b88); - MP_WritePhyUshort(sc, 0x06, 0xec00); - MP_WritePhyUshort(sc, 0x06, 0x19a9); - MP_WritePhyUshort(sc, 0x06, 0x8b90); - MP_WritePhyUshort(sc, 0x06, 0xf9ee); - MP_WritePhyUshort(sc, 0x06, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0xfff7); - MP_WritePhyUshort(sc, 0x06, 0xfed1); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x8595); - MP_WritePhyUshort(sc, 0x06, 0x0237); - MP_WritePhyUshort(sc, 0x06, 0x23d1); - MP_WritePhyUshort(sc, 0x06, 0x01bf); - MP_WritePhyUshort(sc, 0x06, 0x8598); - MP_WritePhyUshort(sc, 0x06, 0x0237); - MP_WritePhyUshort(sc, 0x06, 0x2304); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b8a); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x14ee); - MP_WritePhyUshort(sc, 0x06, 0x8b8a); - MP_WritePhyUshort(sc, 0x06, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x1f9a); - MP_WritePhyUshort(sc, 0x06, 0xe0e4); - MP_WritePhyUshort(sc, 0x06, 0x26e1); - MP_WritePhyUshort(sc, 0x06, 0xe427); - MP_WritePhyUshort(sc, 0x06, 0xeee4); - MP_WritePhyUshort(sc, 0x06, 0x2623); - MP_WritePhyUshort(sc, 0x06, 0xe5e4); - MP_WritePhyUshort(sc, 0x06, 0x27fc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8dad); - MP_WritePhyUshort(sc, 0x06, 0x2014); - MP_WritePhyUshort(sc, 0x06, 0xee8b); - MP_WritePhyUshort(sc, 0x06, 0x8d00); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0x5a78); - MP_WritePhyUshort(sc, 0x06, 0x039e); - MP_WritePhyUshort(sc, 0x06, 0x0902); - MP_WritePhyUshort(sc, 0x06, 0x05db); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0x7b02); - MP_WritePhyUshort(sc, 0x06, 0x3231); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x1df6); - MP_WritePhyUshort(sc, 0x06, 0x20e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0x0281); - MP_WritePhyUshort(sc, 0x06, 0x5c02); - MP_WritePhyUshort(sc, 0x06, 0x2bcb); - MP_WritePhyUshort(sc, 0x06, 0x022d); - MP_WritePhyUshort(sc, 0x06, 0x2902); - MP_WritePhyUshort(sc, 0x06, 0x03b4); - MP_WritePhyUshort(sc, 0x06, 0x0285); - MP_WritePhyUshort(sc, 0x06, 0x6402); - MP_WritePhyUshort(sc, 0x06, 0x2eca); - MP_WritePhyUshort(sc, 0x06, 0x0284); - MP_WritePhyUshort(sc, 0x06, 0xcd02); - MP_WritePhyUshort(sc, 0x06, 0x046f); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x210b); - MP_WritePhyUshort(sc, 0x06, 0xf621); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x8520); - MP_WritePhyUshort(sc, 0x06, 0x021b); - MP_WritePhyUshort(sc, 0x06, 0xe8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad22); - MP_WritePhyUshort(sc, 0x06, 0x05f6); - MP_WritePhyUshort(sc, 0x06, 0x22e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x2308); - MP_WritePhyUshort(sc, 0x06, 0xf623); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x311c); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x2405); - MP_WritePhyUshort(sc, 0x06, 0xf624); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8ee0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad25); - MP_WritePhyUshort(sc, 0x06, 0x05f6); - MP_WritePhyUshort(sc, 0x06, 0x25e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x2608); - MP_WritePhyUshort(sc, 0x06, 0xf626); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x2df5); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x2705); - MP_WritePhyUshort(sc, 0x06, 0xf627); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x037a); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8f9); - MP_WritePhyUshort(sc, 0x06, 0xfaef); - MP_WritePhyUshort(sc, 0x06, 0x69e0); - MP_WritePhyUshort(sc, 0x06, 0x8b87); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x65d2); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x2fe9); - MP_WritePhyUshort(sc, 0x06, 0x0236); - MP_WritePhyUshort(sc, 0x06, 0xf61e); - MP_WritePhyUshort(sc, 0x06, 0x21bf); - MP_WritePhyUshort(sc, 0x06, 0x2ff5); - MP_WritePhyUshort(sc, 0x06, 0x0236); - MP_WritePhyUshort(sc, 0x06, 0xf60c); - MP_WritePhyUshort(sc, 0x06, 0x111e); - MP_WritePhyUshort(sc, 0x06, 0x21bf); - MP_WritePhyUshort(sc, 0x06, 0x2ff8); - MP_WritePhyUshort(sc, 0x06, 0x0236); - MP_WritePhyUshort(sc, 0x06, 0xf60c); - MP_WritePhyUshort(sc, 0x06, 0x121e); - MP_WritePhyUshort(sc, 0x06, 0x21bf); - MP_WritePhyUshort(sc, 0x06, 0x2ffb); - MP_WritePhyUshort(sc, 0x06, 0x0236); - MP_WritePhyUshort(sc, 0x06, 0xf60c); - MP_WritePhyUshort(sc, 0x06, 0x131e); - MP_WritePhyUshort(sc, 0x06, 0x21bf); - MP_WritePhyUshort(sc, 0x06, 0x1f97); - MP_WritePhyUshort(sc, 0x06, 0x0236); - MP_WritePhyUshort(sc, 0x06, 0xf60c); - MP_WritePhyUshort(sc, 0x06, 0x141e); - MP_WritePhyUshort(sc, 0x06, 0x21bf); - MP_WritePhyUshort(sc, 0x06, 0x859b); - MP_WritePhyUshort(sc, 0x06, 0x0236); - MP_WritePhyUshort(sc, 0x06, 0xf60c); - MP_WritePhyUshort(sc, 0x06, 0x161e); - MP_WritePhyUshort(sc, 0x06, 0x21e0); - MP_WritePhyUshort(sc, 0x06, 0x8a8c); - MP_WritePhyUshort(sc, 0x06, 0x1f02); - MP_WritePhyUshort(sc, 0x06, 0x9e22); - MP_WritePhyUshort(sc, 0x06, 0xe68a); - MP_WritePhyUshort(sc, 0x06, 0x8cad); - MP_WritePhyUshort(sc, 0x06, 0x3114); - MP_WritePhyUshort(sc, 0x06, 0xad30); - MP_WritePhyUshort(sc, 0x06, 0x11ef); - MP_WritePhyUshort(sc, 0x06, 0x0258); - MP_WritePhyUshort(sc, 0x06, 0x0c9e); - MP_WritePhyUshort(sc, 0x06, 0x07ad); - MP_WritePhyUshort(sc, 0x06, 0x3608); - MP_WritePhyUshort(sc, 0x06, 0x5a30); - MP_WritePhyUshort(sc, 0x06, 0x9f04); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xae02); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf2f); - MP_WritePhyUshort(sc, 0x06, 0xf202); - MP_WritePhyUshort(sc, 0x06, 0x3723); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefd); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8f9); - MP_WritePhyUshort(sc, 0x06, 0xface); - MP_WritePhyUshort(sc, 0x06, 0xfaef); - MP_WritePhyUshort(sc, 0x06, 0x69fa); - MP_WritePhyUshort(sc, 0x06, 0xd401); - MP_WritePhyUshort(sc, 0x06, 0x55b4); - MP_WritePhyUshort(sc, 0x06, 0xfebf); - MP_WritePhyUshort(sc, 0x06, 0x85a7); - MP_WritePhyUshort(sc, 0x06, 0x0236); - MP_WritePhyUshort(sc, 0x06, 0xf6ac); - MP_WritePhyUshort(sc, 0x06, 0x280b); - MP_WritePhyUshort(sc, 0x06, 0xbf85); - MP_WritePhyUshort(sc, 0x06, 0xa402); - MP_WritePhyUshort(sc, 0x06, 0x36f6); - MP_WritePhyUshort(sc, 0x06, 0xac28); - MP_WritePhyUshort(sc, 0x06, 0x49ae); - MP_WritePhyUshort(sc, 0x06, 0x64bf); - MP_WritePhyUshort(sc, 0x06, 0x85a4); - MP_WritePhyUshort(sc, 0x06, 0x0236); - MP_WritePhyUshort(sc, 0x06, 0xf6ac); - MP_WritePhyUshort(sc, 0x06, 0x285b); - MP_WritePhyUshort(sc, 0x06, 0xd000); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0x60ac); - MP_WritePhyUshort(sc, 0x06, 0x2105); - MP_WritePhyUshort(sc, 0x06, 0xac22); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x4ebf); - MP_WritePhyUshort(sc, 0x06, 0xe0c4); - MP_WritePhyUshort(sc, 0x06, 0xbe86); - MP_WritePhyUshort(sc, 0x06, 0x14d2); - MP_WritePhyUshort(sc, 0x06, 0x04d8); - MP_WritePhyUshort(sc, 0x06, 0x19d9); - MP_WritePhyUshort(sc, 0x06, 0x1907); - MP_WritePhyUshort(sc, 0x06, 0xdc19); - MP_WritePhyUshort(sc, 0x06, 0xdd19); - MP_WritePhyUshort(sc, 0x06, 0x0789); - MP_WritePhyUshort(sc, 0x06, 0x89ef); - MP_WritePhyUshort(sc, 0x06, 0x645e); - MP_WritePhyUshort(sc, 0x06, 0x07ff); - MP_WritePhyUshort(sc, 0x06, 0x0d65); - MP_WritePhyUshort(sc, 0x06, 0x5cf8); - MP_WritePhyUshort(sc, 0x06, 0x001e); - MP_WritePhyUshort(sc, 0x06, 0x46dc); - MP_WritePhyUshort(sc, 0x06, 0x19dd); - MP_WritePhyUshort(sc, 0x06, 0x19b2); - MP_WritePhyUshort(sc, 0x06, 0xe2d4); - MP_WritePhyUshort(sc, 0x06, 0x0001); - MP_WritePhyUshort(sc, 0x06, 0xbf85); - MP_WritePhyUshort(sc, 0x06, 0xa402); - MP_WritePhyUshort(sc, 0x06, 0x3723); - MP_WritePhyUshort(sc, 0x06, 0xae1d); - MP_WritePhyUshort(sc, 0x06, 0xbee0); - MP_WritePhyUshort(sc, 0x06, 0xc4bf); - MP_WritePhyUshort(sc, 0x06, 0x8614); - MP_WritePhyUshort(sc, 0x06, 0xd204); - MP_WritePhyUshort(sc, 0x06, 0xd819); - MP_WritePhyUshort(sc, 0x06, 0xd919); - MP_WritePhyUshort(sc, 0x06, 0x07dc); - MP_WritePhyUshort(sc, 0x06, 0x19dd); - MP_WritePhyUshort(sc, 0x06, 0x1907); - MP_WritePhyUshort(sc, 0x06, 0xb2f4); - MP_WritePhyUshort(sc, 0x06, 0xd400); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x85a4); - MP_WritePhyUshort(sc, 0x06, 0x0237); - MP_WritePhyUshort(sc, 0x06, 0x23fe); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfec6); - MP_WritePhyUshort(sc, 0x06, 0xfefd); - MP_WritePhyUshort(sc, 0x06, 0xfc05); - MP_WritePhyUshort(sc, 0x06, 0xf9e2); - MP_WritePhyUshort(sc, 0x06, 0xe0ea); - MP_WritePhyUshort(sc, 0x06, 0xe3e0); - MP_WritePhyUshort(sc, 0x06, 0xeb5a); - MP_WritePhyUshort(sc, 0x06, 0x070c); - MP_WritePhyUshort(sc, 0x06, 0x031e); - MP_WritePhyUshort(sc, 0x06, 0x20e6); - MP_WritePhyUshort(sc, 0x06, 0xe0ea); - MP_WritePhyUshort(sc, 0x06, 0xe7e0); - MP_WritePhyUshort(sc, 0x06, 0xebe0); - MP_WritePhyUshort(sc, 0x06, 0xe0fc); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0xfdfd); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xf9e0); - MP_WritePhyUshort(sc, 0x06, 0x8b81); - MP_WritePhyUshort(sc, 0x06, 0xac26); - MP_WritePhyUshort(sc, 0x06, 0x1ae0); - MP_WritePhyUshort(sc, 0x06, 0x8b81); - MP_WritePhyUshort(sc, 0x06, 0xac21); - MP_WritePhyUshort(sc, 0x06, 0x14e0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xac20); - MP_WritePhyUshort(sc, 0x06, 0x0ee0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xac23); - MP_WritePhyUshort(sc, 0x06, 0x08e0); - MP_WritePhyUshort(sc, 0x06, 0x8b87); - MP_WritePhyUshort(sc, 0x06, 0xac24); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x3802); - MP_WritePhyUshort(sc, 0x06, 0x1ab5); - MP_WritePhyUshort(sc, 0x06, 0xeee4); - MP_WritePhyUshort(sc, 0x06, 0x1c04); - MP_WritePhyUshort(sc, 0x06, 0xeee4); - MP_WritePhyUshort(sc, 0x06, 0x1d04); - MP_WritePhyUshort(sc, 0x06, 0xe2e0); - MP_WritePhyUshort(sc, 0x06, 0x7ce3); - MP_WritePhyUshort(sc, 0x06, 0xe07d); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x38e1); - MP_WritePhyUshort(sc, 0x06, 0xe039); - MP_WritePhyUshort(sc, 0x06, 0xad2e); - MP_WritePhyUshort(sc, 0x06, 0x1bad); - MP_WritePhyUshort(sc, 0x06, 0x390d); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xbf21); - MP_WritePhyUshort(sc, 0x06, 0xd502); - MP_WritePhyUshort(sc, 0x06, 0x3723); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0xd8ae); - MP_WritePhyUshort(sc, 0x06, 0x0bac); - MP_WritePhyUshort(sc, 0x06, 0x3802); - MP_WritePhyUshort(sc, 0x06, 0xae06); - MP_WritePhyUshort(sc, 0x06, 0x0283); - MP_WritePhyUshort(sc, 0x06, 0x1802); - MP_WritePhyUshort(sc, 0x06, 0x8360); - MP_WritePhyUshort(sc, 0x06, 0x021a); - MP_WritePhyUshort(sc, 0x06, 0xc6fd); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e1); - MP_WritePhyUshort(sc, 0x06, 0x8af4); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x2605); - MP_WritePhyUshort(sc, 0x06, 0x0222); - MP_WritePhyUshort(sc, 0x06, 0xa4f7); - MP_WritePhyUshort(sc, 0x06, 0x28e0); - MP_WritePhyUshort(sc, 0x06, 0x8b81); - MP_WritePhyUshort(sc, 0x06, 0xad21); - MP_WritePhyUshort(sc, 0x06, 0x0502); - MP_WritePhyUshort(sc, 0x06, 0x23a9); - MP_WritePhyUshort(sc, 0x06, 0xf729); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x85ad); - MP_WritePhyUshort(sc, 0x06, 0x2005); - MP_WritePhyUshort(sc, 0x06, 0x0214); - MP_WritePhyUshort(sc, 0x06, 0xabf7); - MP_WritePhyUshort(sc, 0x06, 0x2ae0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xad23); - MP_WritePhyUshort(sc, 0x06, 0x0502); - MP_WritePhyUshort(sc, 0x06, 0x12e7); - MP_WritePhyUshort(sc, 0x06, 0xf72b); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x87ad); - MP_WritePhyUshort(sc, 0x06, 0x2405); - MP_WritePhyUshort(sc, 0x06, 0x0283); - MP_WritePhyUshort(sc, 0x06, 0xbcf7); - MP_WritePhyUshort(sc, 0x06, 0x2ce5); - MP_WritePhyUshort(sc, 0x06, 0x8af4); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b81); - MP_WritePhyUshort(sc, 0x06, 0xad26); - MP_WritePhyUshort(sc, 0x06, 0x0302); - MP_WritePhyUshort(sc, 0x06, 0x21e5); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x2109); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xf4ac); - MP_WritePhyUshort(sc, 0x06, 0x2003); - MP_WritePhyUshort(sc, 0x06, 0x0223); - MP_WritePhyUshort(sc, 0x06, 0x98e0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x09e0); - MP_WritePhyUshort(sc, 0x06, 0x8af4); - MP_WritePhyUshort(sc, 0x06, 0xac21); - MP_WritePhyUshort(sc, 0x06, 0x0302); - MP_WritePhyUshort(sc, 0x06, 0x13fb); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x85ad); - MP_WritePhyUshort(sc, 0x06, 0x2309); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xf4ac); - MP_WritePhyUshort(sc, 0x06, 0x2203); - MP_WritePhyUshort(sc, 0x06, 0x0212); - MP_WritePhyUshort(sc, 0x06, 0xfae0); - MP_WritePhyUshort(sc, 0x06, 0x8b87); - MP_WritePhyUshort(sc, 0x06, 0xad24); - MP_WritePhyUshort(sc, 0x06, 0x09e0); - MP_WritePhyUshort(sc, 0x06, 0x8af4); - MP_WritePhyUshort(sc, 0x06, 0xac23); - MP_WritePhyUshort(sc, 0x06, 0x0302); - MP_WritePhyUshort(sc, 0x06, 0x83c1); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e1); - MP_WritePhyUshort(sc, 0x06, 0x8af4); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x2608); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0xd2ad); - MP_WritePhyUshort(sc, 0x06, 0x2502); - MP_WritePhyUshort(sc, 0x06, 0xf628); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x210a); - MP_WritePhyUshort(sc, 0x06, 0xe084); - MP_WritePhyUshort(sc, 0x06, 0x0af6); - MP_WritePhyUshort(sc, 0x06, 0x27a0); - MP_WritePhyUshort(sc, 0x06, 0x0502); - MP_WritePhyUshort(sc, 0x06, 0xf629); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x85ad); - MP_WritePhyUshort(sc, 0x06, 0x2008); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xe8ad); - MP_WritePhyUshort(sc, 0x06, 0x2102); - MP_WritePhyUshort(sc, 0x06, 0xf62a); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x85ad); - MP_WritePhyUshort(sc, 0x06, 0x2308); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x20a0); - MP_WritePhyUshort(sc, 0x06, 0x0302); - MP_WritePhyUshort(sc, 0x06, 0xf62b); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x87ad); - MP_WritePhyUshort(sc, 0x06, 0x2408); - MP_WritePhyUshort(sc, 0x06, 0xe086); - MP_WritePhyUshort(sc, 0x06, 0x02a0); - MP_WritePhyUshort(sc, 0x06, 0x0302); - MP_WritePhyUshort(sc, 0x06, 0xf62c); - MP_WritePhyUshort(sc, 0x06, 0xe58a); - MP_WritePhyUshort(sc, 0x06, 0xf4a1); - MP_WritePhyUshort(sc, 0x06, 0x0008); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf21); - MP_WritePhyUshort(sc, 0x06, 0xd502); - MP_WritePhyUshort(sc, 0x06, 0x3723); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xee86); - MP_WritePhyUshort(sc, 0x06, 0x0200); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x87ad); - MP_WritePhyUshort(sc, 0x06, 0x241e); - MP_WritePhyUshort(sc, 0x06, 0xe086); - MP_WritePhyUshort(sc, 0x06, 0x02a0); - MP_WritePhyUshort(sc, 0x06, 0x0005); - MP_WritePhyUshort(sc, 0x06, 0x0283); - MP_WritePhyUshort(sc, 0x06, 0xe8ae); - MP_WritePhyUshort(sc, 0x06, 0xf5a0); - MP_WritePhyUshort(sc, 0x06, 0x0105); - MP_WritePhyUshort(sc, 0x06, 0x0283); - MP_WritePhyUshort(sc, 0x06, 0xf8ae); - MP_WritePhyUshort(sc, 0x06, 0x0ba0); - MP_WritePhyUshort(sc, 0x06, 0x0205); - MP_WritePhyUshort(sc, 0x06, 0x0284); - MP_WritePhyUshort(sc, 0x06, 0x14ae); - MP_WritePhyUshort(sc, 0x06, 0x03a0); - MP_WritePhyUshort(sc, 0x06, 0x0300); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0x0284); - MP_WritePhyUshort(sc, 0x06, 0x2bee); - MP_WritePhyUshort(sc, 0x06, 0x8602); - MP_WritePhyUshort(sc, 0x06, 0x01ef); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8ee); - MP_WritePhyUshort(sc, 0x06, 0x8609); - MP_WritePhyUshort(sc, 0x06, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x8461); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xae10); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8608); - MP_WritePhyUshort(sc, 0x06, 0xe186); - MP_WritePhyUshort(sc, 0x06, 0x091f); - MP_WritePhyUshort(sc, 0x06, 0x019e); - MP_WritePhyUshort(sc, 0x06, 0x0611); - MP_WritePhyUshort(sc, 0x06, 0xe586); - MP_WritePhyUshort(sc, 0x06, 0x09ae); - MP_WritePhyUshort(sc, 0x06, 0x04ee); - MP_WritePhyUshort(sc, 0x06, 0x8602); - MP_WritePhyUshort(sc, 0x06, 0x01fc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xf9fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xfbbf); - MP_WritePhyUshort(sc, 0x06, 0x8604); - MP_WritePhyUshort(sc, 0x06, 0xef79); - MP_WritePhyUshort(sc, 0x06, 0xd200); - MP_WritePhyUshort(sc, 0x06, 0xd400); - MP_WritePhyUshort(sc, 0x06, 0x221e); - MP_WritePhyUshort(sc, 0x06, 0x02bf); - MP_WritePhyUshort(sc, 0x06, 0x2fec); - MP_WritePhyUshort(sc, 0x06, 0x0237); - MP_WritePhyUshort(sc, 0x06, 0x23bf); - MP_WritePhyUshort(sc, 0x06, 0x13f2); - MP_WritePhyUshort(sc, 0x06, 0x0236); - MP_WritePhyUshort(sc, 0x06, 0xf60d); - MP_WritePhyUshort(sc, 0x06, 0x4559); - MP_WritePhyUshort(sc, 0x06, 0x1fef); - MP_WritePhyUshort(sc, 0x06, 0x97dd); - MP_WritePhyUshort(sc, 0x06, 0xd308); - MP_WritePhyUshort(sc, 0x06, 0x1a93); - MP_WritePhyUshort(sc, 0x06, 0xdd12); - MP_WritePhyUshort(sc, 0x06, 0x17a2); - MP_WritePhyUshort(sc, 0x06, 0x04de); - MP_WritePhyUshort(sc, 0x06, 0xffef); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfdfc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xf9fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xfbee); - MP_WritePhyUshort(sc, 0x06, 0x8602); - MP_WritePhyUshort(sc, 0x06, 0x03d5); - MP_WritePhyUshort(sc, 0x06, 0x0080); - MP_WritePhyUshort(sc, 0x06, 0xbf86); - MP_WritePhyUshort(sc, 0x06, 0x04ef); - MP_WritePhyUshort(sc, 0x06, 0x79ef); - MP_WritePhyUshort(sc, 0x06, 0x45bf); - MP_WritePhyUshort(sc, 0x06, 0x2fec); - MP_WritePhyUshort(sc, 0x06, 0x0237); - MP_WritePhyUshort(sc, 0x06, 0x23bf); - MP_WritePhyUshort(sc, 0x06, 0x13f2); - MP_WritePhyUshort(sc, 0x06, 0x0236); - MP_WritePhyUshort(sc, 0x06, 0xf6ad); - MP_WritePhyUshort(sc, 0x06, 0x2702); - MP_WritePhyUshort(sc, 0x06, 0x78ff); - MP_WritePhyUshort(sc, 0x06, 0xe186); - MP_WritePhyUshort(sc, 0x06, 0x0a1b); - MP_WritePhyUshort(sc, 0x06, 0x01aa); - MP_WritePhyUshort(sc, 0x06, 0x2eef); - MP_WritePhyUshort(sc, 0x06, 0x97d9); - MP_WritePhyUshort(sc, 0x06, 0x7900); - MP_WritePhyUshort(sc, 0x06, 0x9e2b); - MP_WritePhyUshort(sc, 0x06, 0x81dd); - MP_WritePhyUshort(sc, 0x06, 0xbf85); - MP_WritePhyUshort(sc, 0x06, 0xad02); - MP_WritePhyUshort(sc, 0x06, 0x3723); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xef02); - MP_WritePhyUshort(sc, 0x06, 0x100c); - MP_WritePhyUshort(sc, 0x06, 0x11b0); - MP_WritePhyUshort(sc, 0x06, 0xfc0d); - MP_WritePhyUshort(sc, 0x06, 0x11bf); - MP_WritePhyUshort(sc, 0x06, 0x85aa); - MP_WritePhyUshort(sc, 0x06, 0x0237); - MP_WritePhyUshort(sc, 0x06, 0x23d1); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x85aa); - MP_WritePhyUshort(sc, 0x06, 0x0237); - MP_WritePhyUshort(sc, 0x06, 0x23ee); - MP_WritePhyUshort(sc, 0x06, 0x8602); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x0413); - MP_WritePhyUshort(sc, 0x06, 0xa38b); - MP_WritePhyUshort(sc, 0x06, 0xb4d3); - MP_WritePhyUshort(sc, 0x06, 0x8012); - MP_WritePhyUshort(sc, 0x06, 0x17a2); - MP_WritePhyUshort(sc, 0x06, 0x04ad); - MP_WritePhyUshort(sc, 0x06, 0xffef); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfdfc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xf9e0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xad25); - MP_WritePhyUshort(sc, 0x06, 0x48e0); - MP_WritePhyUshort(sc, 0x06, 0x8a96); - MP_WritePhyUshort(sc, 0x06, 0xe18a); - MP_WritePhyUshort(sc, 0x06, 0x977c); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x9e35); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0x9600); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0x9700); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xbee1); - MP_WritePhyUshort(sc, 0x06, 0x8abf); - MP_WritePhyUshort(sc, 0x06, 0xe286); - MP_WritePhyUshort(sc, 0x06, 0x10e3); - MP_WritePhyUshort(sc, 0x06, 0x8611); - MP_WritePhyUshort(sc, 0x06, 0x0236); - MP_WritePhyUshort(sc, 0x06, 0x1aad); - MP_WritePhyUshort(sc, 0x06, 0x2012); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0x9603); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0x97b7); - MP_WritePhyUshort(sc, 0x06, 0xee86); - MP_WritePhyUshort(sc, 0x06, 0x1000); - MP_WritePhyUshort(sc, 0x06, 0xee86); - MP_WritePhyUshort(sc, 0x06, 0x1100); - MP_WritePhyUshort(sc, 0x06, 0xae11); - MP_WritePhyUshort(sc, 0x06, 0x15e6); - MP_WritePhyUshort(sc, 0x06, 0x8610); - MP_WritePhyUshort(sc, 0x06, 0xe786); - MP_WritePhyUshort(sc, 0x06, 0x11ae); - MP_WritePhyUshort(sc, 0x06, 0x08ee); - MP_WritePhyUshort(sc, 0x06, 0x8610); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x8611); - MP_WritePhyUshort(sc, 0x06, 0x00fd); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x00e1); - MP_WritePhyUshort(sc, 0x06, 0xe001); - MP_WritePhyUshort(sc, 0x06, 0xad27); - MP_WritePhyUshort(sc, 0x06, 0x32e0); - MP_WritePhyUshort(sc, 0x06, 0x8b40); - MP_WritePhyUshort(sc, 0x06, 0xf720); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x40bf); - MP_WritePhyUshort(sc, 0x06, 0x31f5); - MP_WritePhyUshort(sc, 0x06, 0x0236); - MP_WritePhyUshort(sc, 0x06, 0xf6ad); - MP_WritePhyUshort(sc, 0x06, 0x2821); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x20e1); - MP_WritePhyUshort(sc, 0x06, 0xe021); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x18e0); - MP_WritePhyUshort(sc, 0x06, 0x8b40); - MP_WritePhyUshort(sc, 0x06, 0xf620); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x40ee); - MP_WritePhyUshort(sc, 0x06, 0x8b3b); - MP_WritePhyUshort(sc, 0x06, 0xffe0); - MP_WritePhyUshort(sc, 0x06, 0x8a8a); - MP_WritePhyUshort(sc, 0x06, 0xe18a); - MP_WritePhyUshort(sc, 0x06, 0x8be4); - MP_WritePhyUshort(sc, 0x06, 0xe000); - MP_WritePhyUshort(sc, 0x06, 0xe5e0); - MP_WritePhyUshort(sc, 0x06, 0x01ef); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x80ad); - MP_WritePhyUshort(sc, 0x06, 0x2722); - MP_WritePhyUshort(sc, 0x06, 0xbf44); - MP_WritePhyUshort(sc, 0x06, 0xfc02); - MP_WritePhyUshort(sc, 0x06, 0x36f6); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x441f); - MP_WritePhyUshort(sc, 0x06, 0x019e); - MP_WritePhyUshort(sc, 0x06, 0x15e5); - MP_WritePhyUshort(sc, 0x06, 0x8b44); - MP_WritePhyUshort(sc, 0x06, 0xad29); - MP_WritePhyUshort(sc, 0x06, 0x07ac); - MP_WritePhyUshort(sc, 0x06, 0x2804); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xae02); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf85); - MP_WritePhyUshort(sc, 0x06, 0xb002); - MP_WritePhyUshort(sc, 0x06, 0x3723); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfefc); - MP_WritePhyUshort(sc, 0x06, 0x0400); - MP_WritePhyUshort(sc, 0x06, 0xe140); - MP_WritePhyUshort(sc, 0x06, 0x77e1); - MP_WritePhyUshort(sc, 0x06, 0x40dd); - MP_WritePhyUshort(sc, 0x06, 0xe022); - MP_WritePhyUshort(sc, 0x06, 0x32e1); - MP_WritePhyUshort(sc, 0x06, 0x5074); - MP_WritePhyUshort(sc, 0x06, 0xe144); - MP_WritePhyUshort(sc, 0x06, 0xffe0); - MP_WritePhyUshort(sc, 0x06, 0xdaff); - MP_WritePhyUshort(sc, 0x06, 0xe0c0); - MP_WritePhyUshort(sc, 0x06, 0x52e0); - MP_WritePhyUshort(sc, 0x06, 0xeed9); - MP_WritePhyUshort(sc, 0x06, 0xe04c); - MP_WritePhyUshort(sc, 0x06, 0xbbe0); - MP_WritePhyUshort(sc, 0x06, 0x2a00); - MP_WritePhyUshort(sc, 0x05, 0xe142); - PhyRegValue = MP_ReadPhyUshort(sc, 0x06); - PhyRegValue |= BIT_0; - MP_WritePhyUshort(sc, 0x06, PhyRegValue); - MP_WritePhyUshort(sc, 0x05, 0xe140); - PhyRegValue = MP_ReadPhyUshort(sc, 0x06); - PhyRegValue |= BIT_0; - MP_WritePhyUshort(sc, 0x06, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x00); - if (PhyRegValue & BIT_7) - break; - } - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x09, 0xA20F); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0003); - PhyRegValue = MP_ReadPhyUshort(sc, 0x19); - PhyRegValue &= ~BIT_0; - MP_WritePhyUshort(sc, 0x19, PhyRegValue); - PhyRegValue = MP_ReadPhyUshort(sc, 0x10); - PhyRegValue &= ~BIT_10; - MP_WritePhyUshort(sc, 0x10, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0042); - MP_WritePhyUshort(sc, 0x18, 0x2300); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); - if (sc->RequiredSecLanDonglePatch) - PhyRegValue &= ~(BIT_2); - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x9200); -} - -static void re_set_phy_mcu_8168f_1(struct re_softc* sc) -{ - u_int16_t PhyRegValue; - int i; - - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x1800); - PhyRegValue = MP_ReadPhyUshort(sc, 0x15); - PhyRegValue &= ~(BIT_12); - MP_WritePhyUshort(sc, 0x15, PhyRegValue); - MP_WritePhyUshort(sc, 0x00, 0x4800); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x002f); - for (i = 0; i < 1000; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x1c); - if (PhyRegValue & BIT_7) - break; - } - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x1800); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x18); - if (!(PhyRegValue & BIT_0)) - break; - } - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x0080); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - MP_WritePhyUshort(sc, 0x16, 0x0306); - MP_WritePhyUshort(sc, 0x16, 0x0307); - MP_WritePhyUshort(sc, 0x15, 0x0194); - MP_WritePhyUshort(sc, 0x19, 0x407D); - MP_WritePhyUshort(sc, 0x15, 0x0098); - MP_WritePhyUshort(sc, 0x19, 0x7c0b); - MP_WritePhyUshort(sc, 0x15, 0x0099); - MP_WritePhyUshort(sc, 0x19, 0x6c0b); - MP_WritePhyUshort(sc, 0x15, 0x00eb); - MP_WritePhyUshort(sc, 0x19, 0x6c0b); - MP_WritePhyUshort(sc, 0x15, 0x00f8); - MP_WritePhyUshort(sc, 0x19, 0x6f0b); - MP_WritePhyUshort(sc, 0x15, 0x00fe); - MP_WritePhyUshort(sc, 0x19, 0x6f0f); - MP_WritePhyUshort(sc, 0x15, 0x00db); - MP_WritePhyUshort(sc, 0x19, 0x6f09); - MP_WritePhyUshort(sc, 0x15, 0x00dc); - MP_WritePhyUshort(sc, 0x19, 0xaefd); - MP_WritePhyUshort(sc, 0x15, 0x00dd); - MP_WritePhyUshort(sc, 0x19, 0x6f0b); - MP_WritePhyUshort(sc, 0x15, 0x00de); - MP_WritePhyUshort(sc, 0x19, 0xc60b); - MP_WritePhyUshort(sc, 0x15, 0x00df); - MP_WritePhyUshort(sc, 0x19, 0x00fa); - MP_WritePhyUshort(sc, 0x15, 0x00e0); - MP_WritePhyUshort(sc, 0x19, 0x30e1); - MP_WritePhyUshort(sc, 0x15, 0x020c); - MP_WritePhyUshort(sc, 0x19, 0x3224); - MP_WritePhyUshort(sc, 0x15, 0x020e); - MP_WritePhyUshort(sc, 0x19, 0x9813); - MP_WritePhyUshort(sc, 0x15, 0x020f); - MP_WritePhyUshort(sc, 0x19, 0x7801); - MP_WritePhyUshort(sc, 0x15, 0x0210); - MP_WritePhyUshort(sc, 0x19, 0x930f); - MP_WritePhyUshort(sc, 0x15, 0x0211); - MP_WritePhyUshort(sc, 0x19, 0x9206); - MP_WritePhyUshort(sc, 0x15, 0x0212); - MP_WritePhyUshort(sc, 0x19, 0x4002); - MP_WritePhyUshort(sc, 0x15, 0x0213); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x0214); - MP_WritePhyUshort(sc, 0x19, 0x588f); - MP_WritePhyUshort(sc, 0x15, 0x0215); - MP_WritePhyUshort(sc, 0x19, 0x5520); - MP_WritePhyUshort(sc, 0x15, 0x0216); - MP_WritePhyUshort(sc, 0x19, 0x3224); - MP_WritePhyUshort(sc, 0x15, 0x0217); - MP_WritePhyUshort(sc, 0x19, 0x4002); - MP_WritePhyUshort(sc, 0x15, 0x0218); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x0219); - MP_WritePhyUshort(sc, 0x19, 0x588d); - MP_WritePhyUshort(sc, 0x15, 0x021a); - MP_WritePhyUshort(sc, 0x19, 0x5540); - MP_WritePhyUshort(sc, 0x15, 0x021b); - MP_WritePhyUshort(sc, 0x19, 0x9e03); - MP_WritePhyUshort(sc, 0x15, 0x021c); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x021d); - MP_WritePhyUshort(sc, 0x19, 0x6840); - MP_WritePhyUshort(sc, 0x15, 0x021e); - MP_WritePhyUshort(sc, 0x19, 0x3224); - MP_WritePhyUshort(sc, 0x15, 0x021f); - MP_WritePhyUshort(sc, 0x19, 0x4002); - MP_WritePhyUshort(sc, 0x15, 0x0220); - MP_WritePhyUshort(sc, 0x19, 0x3224); - MP_WritePhyUshort(sc, 0x15, 0x0221); - MP_WritePhyUshort(sc, 0x19, 0x9e03); - MP_WritePhyUshort(sc, 0x15, 0x0222); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x0223); - MP_WritePhyUshort(sc, 0x19, 0x6840); - MP_WritePhyUshort(sc, 0x15, 0x0224); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x0225); - MP_WritePhyUshort(sc, 0x19, 0x3231); - MP_WritePhyUshort(sc, 0x15, 0x0000); - MP_WritePhyUshort(sc, 0x16, 0x0306); - MP_WritePhyUshort(sc, 0x16, 0x0300); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x0080); - MP_WritePhyUshort(sc, 0x05, 0x8000); - MP_WritePhyUshort(sc, 0x06, 0x0280); - MP_WritePhyUshort(sc, 0x06, 0x48f7); - MP_WritePhyUshort(sc, 0x06, 0x00e0); - MP_WritePhyUshort(sc, 0x06, 0xfff7); - MP_WritePhyUshort(sc, 0x06, 0xa080); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0xf602); - MP_WritePhyUshort(sc, 0x06, 0x0118); - MP_WritePhyUshort(sc, 0x06, 0x0201); - MP_WritePhyUshort(sc, 0x06, 0x2502); - MP_WritePhyUshort(sc, 0x06, 0x8090); - MP_WritePhyUshort(sc, 0x06, 0x0201); - MP_WritePhyUshort(sc, 0x06, 0x4202); - MP_WritePhyUshort(sc, 0x06, 0x015c); - MP_WritePhyUshort(sc, 0x06, 0x0280); - MP_WritePhyUshort(sc, 0x06, 0xad02); - MP_WritePhyUshort(sc, 0x06, 0x80ca); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x88e1); - MP_WritePhyUshort(sc, 0x06, 0x8b89); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8a1e); - MP_WritePhyUshort(sc, 0x06, 0x01e1); - MP_WritePhyUshort(sc, 0x06, 0x8b8b); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8c1e); - MP_WritePhyUshort(sc, 0x06, 0x01e1); - MP_WritePhyUshort(sc, 0x06, 0x8b8d); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8e1e); - MP_WritePhyUshort(sc, 0x06, 0x01a0); - MP_WritePhyUshort(sc, 0x06, 0x00c7); - MP_WritePhyUshort(sc, 0x06, 0xaebb); - MP_WritePhyUshort(sc, 0x06, 0xd484); - MP_WritePhyUshort(sc, 0x06, 0x3ce4); - MP_WritePhyUshort(sc, 0x06, 0x8b92); - MP_WritePhyUshort(sc, 0x06, 0xe58b); - MP_WritePhyUshort(sc, 0x06, 0x93ee); - MP_WritePhyUshort(sc, 0x06, 0x8ac8); - MP_WritePhyUshort(sc, 0x06, 0x03ee); - MP_WritePhyUshort(sc, 0x06, 0x8aca); - MP_WritePhyUshort(sc, 0x06, 0x60ee); - MP_WritePhyUshort(sc, 0x06, 0x8ac0); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x8ac1); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x8abe); - MP_WritePhyUshort(sc, 0x06, 0x07ee); - MP_WritePhyUshort(sc, 0x06, 0x8abf); - MP_WritePhyUshort(sc, 0x06, 0x73ee); - MP_WritePhyUshort(sc, 0x06, 0x8a95); - MP_WritePhyUshort(sc, 0x06, 0x02bf); - MP_WritePhyUshort(sc, 0x06, 0x8b88); - MP_WritePhyUshort(sc, 0x06, 0xec00); - MP_WritePhyUshort(sc, 0x06, 0x19a9); - MP_WritePhyUshort(sc, 0x06, 0x8b90); - MP_WritePhyUshort(sc, 0x06, 0xf9ee); - MP_WritePhyUshort(sc, 0x06, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0xfff7); - MP_WritePhyUshort(sc, 0x06, 0xfed1); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x85a4); - MP_WritePhyUshort(sc, 0x06, 0x0238); - MP_WritePhyUshort(sc, 0x06, 0x7dd1); - MP_WritePhyUshort(sc, 0x06, 0x01bf); - MP_WritePhyUshort(sc, 0x06, 0x85a7); - MP_WritePhyUshort(sc, 0x06, 0x0238); - MP_WritePhyUshort(sc, 0x06, 0x7d04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b8a); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x14ee); - MP_WritePhyUshort(sc, 0x06, 0x8b8a); - MP_WritePhyUshort(sc, 0x06, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x204b); - MP_WritePhyUshort(sc, 0x06, 0xe0e4); - MP_WritePhyUshort(sc, 0x06, 0x26e1); - MP_WritePhyUshort(sc, 0x06, 0xe427); - MP_WritePhyUshort(sc, 0x06, 0xeee4); - MP_WritePhyUshort(sc, 0x06, 0x2623); - MP_WritePhyUshort(sc, 0x06, 0xe5e4); - MP_WritePhyUshort(sc, 0x06, 0x27fc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8dad); - MP_WritePhyUshort(sc, 0x06, 0x2014); - MP_WritePhyUshort(sc, 0x06, 0xee8b); - MP_WritePhyUshort(sc, 0x06, 0x8d00); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0x5a78); - MP_WritePhyUshort(sc, 0x06, 0x039e); - MP_WritePhyUshort(sc, 0x06, 0x0902); - MP_WritePhyUshort(sc, 0x06, 0x05e8); - MP_WritePhyUshort(sc, 0x06, 0x0281); - MP_WritePhyUshort(sc, 0x06, 0x4f02); - MP_WritePhyUshort(sc, 0x06, 0x326c); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x1df6); - MP_WritePhyUshort(sc, 0x06, 0x20e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0x022f); - MP_WritePhyUshort(sc, 0x06, 0x0902); - MP_WritePhyUshort(sc, 0x06, 0x2ab0); - MP_WritePhyUshort(sc, 0x06, 0x0285); - MP_WritePhyUshort(sc, 0x06, 0x1602); - MP_WritePhyUshort(sc, 0x06, 0x03ba); - MP_WritePhyUshort(sc, 0x06, 0x0284); - MP_WritePhyUshort(sc, 0x06, 0xe502); - MP_WritePhyUshort(sc, 0x06, 0x2df1); - MP_WritePhyUshort(sc, 0x06, 0x0283); - MP_WritePhyUshort(sc, 0x06, 0x8302); - MP_WritePhyUshort(sc, 0x06, 0x0475); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x210b); - MP_WritePhyUshort(sc, 0x06, 0xf621); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x83f8); - MP_WritePhyUshort(sc, 0x06, 0x021c); - MP_WritePhyUshort(sc, 0x06, 0x99e0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad22); - MP_WritePhyUshort(sc, 0x06, 0x08f6); - MP_WritePhyUshort(sc, 0x06, 0x22e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0x0235); - MP_WritePhyUshort(sc, 0x06, 0x63e0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad23); - MP_WritePhyUshort(sc, 0x06, 0x08f6); - MP_WritePhyUshort(sc, 0x06, 0x23e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0x0231); - MP_WritePhyUshort(sc, 0x06, 0x57e0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad24); - MP_WritePhyUshort(sc, 0x06, 0x05f6); - MP_WritePhyUshort(sc, 0x06, 0x24e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x2505); - MP_WritePhyUshort(sc, 0x06, 0xf625); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8ee0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad26); - MP_WritePhyUshort(sc, 0x06, 0x08f6); - MP_WritePhyUshort(sc, 0x06, 0x26e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0x022d); - MP_WritePhyUshort(sc, 0x06, 0x1ce0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad27); - MP_WritePhyUshort(sc, 0x06, 0x05f6); - MP_WritePhyUshort(sc, 0x06, 0x27e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0x0203); - MP_WritePhyUshort(sc, 0x06, 0x80fc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xf9e0); - MP_WritePhyUshort(sc, 0x06, 0x8b81); - MP_WritePhyUshort(sc, 0x06, 0xac26); - MP_WritePhyUshort(sc, 0x06, 0x1ae0); - MP_WritePhyUshort(sc, 0x06, 0x8b81); - MP_WritePhyUshort(sc, 0x06, 0xac21); - MP_WritePhyUshort(sc, 0x06, 0x14e0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xac20); - MP_WritePhyUshort(sc, 0x06, 0x0ee0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xac23); - MP_WritePhyUshort(sc, 0x06, 0x08e0); - MP_WritePhyUshort(sc, 0x06, 0x8b87); - MP_WritePhyUshort(sc, 0x06, 0xac24); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x3802); - MP_WritePhyUshort(sc, 0x06, 0x1ac2); - MP_WritePhyUshort(sc, 0x06, 0xeee4); - MP_WritePhyUshort(sc, 0x06, 0x1c04); - MP_WritePhyUshort(sc, 0x06, 0xeee4); - MP_WritePhyUshort(sc, 0x06, 0x1d04); - MP_WritePhyUshort(sc, 0x06, 0xe2e0); - MP_WritePhyUshort(sc, 0x06, 0x7ce3); - MP_WritePhyUshort(sc, 0x06, 0xe07d); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x38e1); - MP_WritePhyUshort(sc, 0x06, 0xe039); - MP_WritePhyUshort(sc, 0x06, 0xad2e); - MP_WritePhyUshort(sc, 0x06, 0x1bad); - MP_WritePhyUshort(sc, 0x06, 0x390d); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xbf22); - MP_WritePhyUshort(sc, 0x06, 0x7a02); - MP_WritePhyUshort(sc, 0x06, 0x387d); - MP_WritePhyUshort(sc, 0x06, 0x0281); - MP_WritePhyUshort(sc, 0x06, 0xacae); - MP_WritePhyUshort(sc, 0x06, 0x0bac); - MP_WritePhyUshort(sc, 0x06, 0x3802); - MP_WritePhyUshort(sc, 0x06, 0xae06); - MP_WritePhyUshort(sc, 0x06, 0x0281); - MP_WritePhyUshort(sc, 0x06, 0xe902); - MP_WritePhyUshort(sc, 0x06, 0x822e); - MP_WritePhyUshort(sc, 0x06, 0x021a); - MP_WritePhyUshort(sc, 0x06, 0xd3fd); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e1); - MP_WritePhyUshort(sc, 0x06, 0x8af4); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x2602); - MP_WritePhyUshort(sc, 0x06, 0xf728); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x2105); - MP_WritePhyUshort(sc, 0x06, 0x0222); - MP_WritePhyUshort(sc, 0x06, 0x8ef7); - MP_WritePhyUshort(sc, 0x06, 0x29e0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x0502); - MP_WritePhyUshort(sc, 0x06, 0x14b8); - MP_WritePhyUshort(sc, 0x06, 0xf72a); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x85ad); - MP_WritePhyUshort(sc, 0x06, 0x2305); - MP_WritePhyUshort(sc, 0x06, 0x0212); - MP_WritePhyUshort(sc, 0x06, 0xf4f7); - MP_WritePhyUshort(sc, 0x06, 0x2be0); - MP_WritePhyUshort(sc, 0x06, 0x8b87); - MP_WritePhyUshort(sc, 0x06, 0xad24); - MP_WritePhyUshort(sc, 0x06, 0x0502); - MP_WritePhyUshort(sc, 0x06, 0x8284); - MP_WritePhyUshort(sc, 0x06, 0xf72c); - MP_WritePhyUshort(sc, 0x06, 0xe58a); - MP_WritePhyUshort(sc, 0x06, 0xf4fc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x2600); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x2109); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xf4ac); - MP_WritePhyUshort(sc, 0x06, 0x2003); - MP_WritePhyUshort(sc, 0x06, 0x0222); - MP_WritePhyUshort(sc, 0x06, 0x7de0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x09e0); - MP_WritePhyUshort(sc, 0x06, 0x8af4); - MP_WritePhyUshort(sc, 0x06, 0xac21); - MP_WritePhyUshort(sc, 0x06, 0x0302); - MP_WritePhyUshort(sc, 0x06, 0x1408); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x85ad); - MP_WritePhyUshort(sc, 0x06, 0x2309); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xf4ac); - MP_WritePhyUshort(sc, 0x06, 0x2203); - MP_WritePhyUshort(sc, 0x06, 0x0213); - MP_WritePhyUshort(sc, 0x06, 0x07e0); - MP_WritePhyUshort(sc, 0x06, 0x8b87); - MP_WritePhyUshort(sc, 0x06, 0xad24); - MP_WritePhyUshort(sc, 0x06, 0x09e0); - MP_WritePhyUshort(sc, 0x06, 0x8af4); - MP_WritePhyUshort(sc, 0x06, 0xac23); - MP_WritePhyUshort(sc, 0x06, 0x0302); - MP_WritePhyUshort(sc, 0x06, 0x8289); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e1); - MP_WritePhyUshort(sc, 0x06, 0x8af4); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x2602); - MP_WritePhyUshort(sc, 0x06, 0xf628); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ad); - MP_WritePhyUshort(sc, 0x06, 0x210a); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0xecf6); - MP_WritePhyUshort(sc, 0x06, 0x27a0); - MP_WritePhyUshort(sc, 0x06, 0x0502); - MP_WritePhyUshort(sc, 0x06, 0xf629); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x85ad); - MP_WritePhyUshort(sc, 0x06, 0x2008); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xe8ad); - MP_WritePhyUshort(sc, 0x06, 0x2102); - MP_WritePhyUshort(sc, 0x06, 0xf62a); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x85ad); - MP_WritePhyUshort(sc, 0x06, 0x2308); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x20a0); - MP_WritePhyUshort(sc, 0x06, 0x0302); - MP_WritePhyUshort(sc, 0x06, 0xf62b); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x87ad); - MP_WritePhyUshort(sc, 0x06, 0x2408); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xc2a0); - MP_WritePhyUshort(sc, 0x06, 0x0302); - MP_WritePhyUshort(sc, 0x06, 0xf62c); - MP_WritePhyUshort(sc, 0x06, 0xe58a); - MP_WritePhyUshort(sc, 0x06, 0xf4a1); - MP_WritePhyUshort(sc, 0x06, 0x0008); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf22); - MP_WritePhyUshort(sc, 0x06, 0x7a02); - MP_WritePhyUshort(sc, 0x06, 0x387d); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0xc200); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x87ad); - MP_WritePhyUshort(sc, 0x06, 0x241e); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xc2a0); - MP_WritePhyUshort(sc, 0x06, 0x0005); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0xb0ae); - MP_WritePhyUshort(sc, 0x06, 0xf5a0); - MP_WritePhyUshort(sc, 0x06, 0x0105); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0xc0ae); - MP_WritePhyUshort(sc, 0x06, 0x0ba0); - MP_WritePhyUshort(sc, 0x06, 0x0205); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0xcaae); - MP_WritePhyUshort(sc, 0x06, 0x03a0); - MP_WritePhyUshort(sc, 0x06, 0x0300); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0xe1ee); - MP_WritePhyUshort(sc, 0x06, 0x8ac2); - MP_WritePhyUshort(sc, 0x06, 0x01ef); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8ee); - MP_WritePhyUshort(sc, 0x06, 0x8ac9); - MP_WritePhyUshort(sc, 0x06, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x8317); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8ac8); - MP_WritePhyUshort(sc, 0x06, 0xe18a); - MP_WritePhyUshort(sc, 0x06, 0xc91f); - MP_WritePhyUshort(sc, 0x06, 0x019e); - MP_WritePhyUshort(sc, 0x06, 0x0611); - MP_WritePhyUshort(sc, 0x06, 0xe58a); - MP_WritePhyUshort(sc, 0x06, 0xc9ae); - MP_WritePhyUshort(sc, 0x06, 0x04ee); - MP_WritePhyUshort(sc, 0x06, 0x8ac2); - MP_WritePhyUshort(sc, 0x06, 0x01fc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xf9fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xfbbf); - MP_WritePhyUshort(sc, 0x06, 0x8ac4); - MP_WritePhyUshort(sc, 0x06, 0xef79); - MP_WritePhyUshort(sc, 0x06, 0xd200); - MP_WritePhyUshort(sc, 0x06, 0xd400); - MP_WritePhyUshort(sc, 0x06, 0x221e); - MP_WritePhyUshort(sc, 0x06, 0x02bf); - MP_WritePhyUshort(sc, 0x06, 0x3024); - MP_WritePhyUshort(sc, 0x06, 0x0238); - MP_WritePhyUshort(sc, 0x06, 0x7dbf); - MP_WritePhyUshort(sc, 0x06, 0x13ff); - MP_WritePhyUshort(sc, 0x06, 0x0238); - MP_WritePhyUshort(sc, 0x06, 0x500d); - MP_WritePhyUshort(sc, 0x06, 0x4559); - MP_WritePhyUshort(sc, 0x06, 0x1fef); - MP_WritePhyUshort(sc, 0x06, 0x97dd); - MP_WritePhyUshort(sc, 0x06, 0xd308); - MP_WritePhyUshort(sc, 0x06, 0x1a93); - MP_WritePhyUshort(sc, 0x06, 0xdd12); - MP_WritePhyUshort(sc, 0x06, 0x17a2); - MP_WritePhyUshort(sc, 0x06, 0x04de); - MP_WritePhyUshort(sc, 0x06, 0xffef); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfdfc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xf9fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xfbee); - MP_WritePhyUshort(sc, 0x06, 0x8ac2); - MP_WritePhyUshort(sc, 0x06, 0x03d5); - MP_WritePhyUshort(sc, 0x06, 0x0080); - MP_WritePhyUshort(sc, 0x06, 0xbf8a); - MP_WritePhyUshort(sc, 0x06, 0xc4ef); - MP_WritePhyUshort(sc, 0x06, 0x79ef); - MP_WritePhyUshort(sc, 0x06, 0x45bf); - MP_WritePhyUshort(sc, 0x06, 0x3024); - MP_WritePhyUshort(sc, 0x06, 0x0238); - MP_WritePhyUshort(sc, 0x06, 0x7dbf); - MP_WritePhyUshort(sc, 0x06, 0x13ff); - MP_WritePhyUshort(sc, 0x06, 0x0238); - MP_WritePhyUshort(sc, 0x06, 0x50ad); - MP_WritePhyUshort(sc, 0x06, 0x2702); - MP_WritePhyUshort(sc, 0x06, 0x78ff); - MP_WritePhyUshort(sc, 0x06, 0xe18a); - MP_WritePhyUshort(sc, 0x06, 0xca1b); - MP_WritePhyUshort(sc, 0x06, 0x01aa); - MP_WritePhyUshort(sc, 0x06, 0x2eef); - MP_WritePhyUshort(sc, 0x06, 0x97d9); - MP_WritePhyUshort(sc, 0x06, 0x7900); - MP_WritePhyUshort(sc, 0x06, 0x9e2b); - MP_WritePhyUshort(sc, 0x06, 0x81dd); - MP_WritePhyUshort(sc, 0x06, 0xbf85); - MP_WritePhyUshort(sc, 0x06, 0xad02); - MP_WritePhyUshort(sc, 0x06, 0x387d); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xef02); - MP_WritePhyUshort(sc, 0x06, 0x100c); - MP_WritePhyUshort(sc, 0x06, 0x11b0); - MP_WritePhyUshort(sc, 0x06, 0xfc0d); - MP_WritePhyUshort(sc, 0x06, 0x11bf); - MP_WritePhyUshort(sc, 0x06, 0x85aa); - MP_WritePhyUshort(sc, 0x06, 0x0238); - MP_WritePhyUshort(sc, 0x06, 0x7dd1); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x85aa); - MP_WritePhyUshort(sc, 0x06, 0x0238); - MP_WritePhyUshort(sc, 0x06, 0x7dee); - MP_WritePhyUshort(sc, 0x06, 0x8ac2); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x0413); - MP_WritePhyUshort(sc, 0x06, 0xa38b); - MP_WritePhyUshort(sc, 0x06, 0xb4d3); - MP_WritePhyUshort(sc, 0x06, 0x8012); - MP_WritePhyUshort(sc, 0x06, 0x17a2); - MP_WritePhyUshort(sc, 0x06, 0x04ad); - MP_WritePhyUshort(sc, 0x06, 0xffef); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfdfc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xf9e0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xad25); - MP_WritePhyUshort(sc, 0x06, 0x48e0); - MP_WritePhyUshort(sc, 0x06, 0x8a96); - MP_WritePhyUshort(sc, 0x06, 0xe18a); - MP_WritePhyUshort(sc, 0x06, 0x977c); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x9e35); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0x9600); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0x9700); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0xbee1); - MP_WritePhyUshort(sc, 0x06, 0x8abf); - MP_WritePhyUshort(sc, 0x06, 0xe28a); - MP_WritePhyUshort(sc, 0x06, 0xc0e3); - MP_WritePhyUshort(sc, 0x06, 0x8ac1); - MP_WritePhyUshort(sc, 0x06, 0x0237); - MP_WritePhyUshort(sc, 0x06, 0x74ad); - MP_WritePhyUshort(sc, 0x06, 0x2012); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0x9603); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0x97b7); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0xc000); - MP_WritePhyUshort(sc, 0x06, 0xee8a); - MP_WritePhyUshort(sc, 0x06, 0xc100); - MP_WritePhyUshort(sc, 0x06, 0xae11); - MP_WritePhyUshort(sc, 0x06, 0x15e6); - MP_WritePhyUshort(sc, 0x06, 0x8ac0); - MP_WritePhyUshort(sc, 0x06, 0xe78a); - MP_WritePhyUshort(sc, 0x06, 0xc1ae); - MP_WritePhyUshort(sc, 0x06, 0x08ee); - MP_WritePhyUshort(sc, 0x06, 0x8ac0); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x8ac1); - MP_WritePhyUshort(sc, 0x06, 0x00fd); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xae20); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x06, 0xf8fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x00e1); - MP_WritePhyUshort(sc, 0x06, 0xe001); - MP_WritePhyUshort(sc, 0x06, 0xad27); - MP_WritePhyUshort(sc, 0x06, 0x32e0); - MP_WritePhyUshort(sc, 0x06, 0x8b40); - MP_WritePhyUshort(sc, 0x06, 0xf720); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x40bf); - MP_WritePhyUshort(sc, 0x06, 0x3230); - MP_WritePhyUshort(sc, 0x06, 0x0238); - MP_WritePhyUshort(sc, 0x06, 0x50ad); - MP_WritePhyUshort(sc, 0x06, 0x2821); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x20e1); - MP_WritePhyUshort(sc, 0x06, 0xe021); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x18e0); - MP_WritePhyUshort(sc, 0x06, 0x8b40); - MP_WritePhyUshort(sc, 0x06, 0xf620); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x40ee); - MP_WritePhyUshort(sc, 0x06, 0x8b3b); - MP_WritePhyUshort(sc, 0x06, 0xffe0); - MP_WritePhyUshort(sc, 0x06, 0x8a8a); - MP_WritePhyUshort(sc, 0x06, 0xe18a); - MP_WritePhyUshort(sc, 0x06, 0x8be4); - MP_WritePhyUshort(sc, 0x06, 0xe000); - MP_WritePhyUshort(sc, 0x06, 0xe5e0); - MP_WritePhyUshort(sc, 0x06, 0x01ef); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8f9); - MP_WritePhyUshort(sc, 0x06, 0xface); - MP_WritePhyUshort(sc, 0x06, 0xfaef); - MP_WritePhyUshort(sc, 0x06, 0x69fa); - MP_WritePhyUshort(sc, 0x06, 0xd401); - MP_WritePhyUshort(sc, 0x06, 0x55b4); - MP_WritePhyUshort(sc, 0x06, 0xfebf); - MP_WritePhyUshort(sc, 0x06, 0x1c1e); - MP_WritePhyUshort(sc, 0x06, 0x0238); - MP_WritePhyUshort(sc, 0x06, 0x50ac); - MP_WritePhyUshort(sc, 0x06, 0x280b); - MP_WritePhyUshort(sc, 0x06, 0xbf1c); - MP_WritePhyUshort(sc, 0x06, 0x1b02); - MP_WritePhyUshort(sc, 0x06, 0x3850); - MP_WritePhyUshort(sc, 0x06, 0xac28); - MP_WritePhyUshort(sc, 0x06, 0x49ae); - MP_WritePhyUshort(sc, 0x06, 0x64bf); - MP_WritePhyUshort(sc, 0x06, 0x1c1b); - MP_WritePhyUshort(sc, 0x06, 0x0238); - MP_WritePhyUshort(sc, 0x06, 0x50ac); - MP_WritePhyUshort(sc, 0x06, 0x285b); - MP_WritePhyUshort(sc, 0x06, 0xd000); - MP_WritePhyUshort(sc, 0x06, 0x0284); - MP_WritePhyUshort(sc, 0x06, 0xcaac); - MP_WritePhyUshort(sc, 0x06, 0x2105); - MP_WritePhyUshort(sc, 0x06, 0xac22); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x4ebf); - MP_WritePhyUshort(sc, 0x06, 0xe0c4); - MP_WritePhyUshort(sc, 0x06, 0xbe85); - MP_WritePhyUshort(sc, 0x06, 0xf6d2); - MP_WritePhyUshort(sc, 0x06, 0x04d8); - MP_WritePhyUshort(sc, 0x06, 0x19d9); - MP_WritePhyUshort(sc, 0x06, 0x1907); - MP_WritePhyUshort(sc, 0x06, 0xdc19); - MP_WritePhyUshort(sc, 0x06, 0xdd19); - MP_WritePhyUshort(sc, 0x06, 0x0789); - MP_WritePhyUshort(sc, 0x06, 0x89ef); - MP_WritePhyUshort(sc, 0x06, 0x645e); - MP_WritePhyUshort(sc, 0x06, 0x07ff); - MP_WritePhyUshort(sc, 0x06, 0x0d65); - MP_WritePhyUshort(sc, 0x06, 0x5cf8); - MP_WritePhyUshort(sc, 0x06, 0x001e); - MP_WritePhyUshort(sc, 0x06, 0x46dc); - MP_WritePhyUshort(sc, 0x06, 0x19dd); - MP_WritePhyUshort(sc, 0x06, 0x19b2); - MP_WritePhyUshort(sc, 0x06, 0xe2d4); - MP_WritePhyUshort(sc, 0x06, 0x0001); - MP_WritePhyUshort(sc, 0x06, 0xbf1c); - MP_WritePhyUshort(sc, 0x06, 0x1b02); - MP_WritePhyUshort(sc, 0x06, 0x387d); - MP_WritePhyUshort(sc, 0x06, 0xae1d); - MP_WritePhyUshort(sc, 0x06, 0xbee0); - MP_WritePhyUshort(sc, 0x06, 0xc4bf); - MP_WritePhyUshort(sc, 0x06, 0x85f6); - MP_WritePhyUshort(sc, 0x06, 0xd204); - MP_WritePhyUshort(sc, 0x06, 0xd819); - MP_WritePhyUshort(sc, 0x06, 0xd919); - MP_WritePhyUshort(sc, 0x06, 0x07dc); - MP_WritePhyUshort(sc, 0x06, 0x19dd); - MP_WritePhyUshort(sc, 0x06, 0x1907); - MP_WritePhyUshort(sc, 0x06, 0xb2f4); - MP_WritePhyUshort(sc, 0x06, 0xd400); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x1c1b); - MP_WritePhyUshort(sc, 0x06, 0x0238); - MP_WritePhyUshort(sc, 0x06, 0x7dfe); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfec6); - MP_WritePhyUshort(sc, 0x06, 0xfefd); - MP_WritePhyUshort(sc, 0x06, 0xfc05); - MP_WritePhyUshort(sc, 0x06, 0xf9e2); - MP_WritePhyUshort(sc, 0x06, 0xe0ea); - MP_WritePhyUshort(sc, 0x06, 0xe3e0); - MP_WritePhyUshort(sc, 0x06, 0xeb5a); - MP_WritePhyUshort(sc, 0x06, 0x070c); - MP_WritePhyUshort(sc, 0x06, 0x031e); - MP_WritePhyUshort(sc, 0x06, 0x20e6); - MP_WritePhyUshort(sc, 0x06, 0xe0ea); - MP_WritePhyUshort(sc, 0x06, 0xe7e0); - MP_WritePhyUshort(sc, 0x06, 0xebe0); - MP_WritePhyUshort(sc, 0x06, 0xe0fc); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0xfdfd); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xfaef); - MP_WritePhyUshort(sc, 0x06, 0x69e0); - MP_WritePhyUshort(sc, 0x06, 0x8b80); - MP_WritePhyUshort(sc, 0x06, 0xad27); - MP_WritePhyUshort(sc, 0x06, 0x22bf); - MP_WritePhyUshort(sc, 0x06, 0x4616); - MP_WritePhyUshort(sc, 0x06, 0x0238); - MP_WritePhyUshort(sc, 0x06, 0x50e0); - MP_WritePhyUshort(sc, 0x06, 0x8b44); - MP_WritePhyUshort(sc, 0x06, 0x1f01); - MP_WritePhyUshort(sc, 0x06, 0x9e15); - MP_WritePhyUshort(sc, 0x06, 0xe58b); - MP_WritePhyUshort(sc, 0x06, 0x44ad); - MP_WritePhyUshort(sc, 0x06, 0x2907); - MP_WritePhyUshort(sc, 0x06, 0xac28); - MP_WritePhyUshort(sc, 0x06, 0x04d1); - MP_WritePhyUshort(sc, 0x06, 0x01ae); - MP_WritePhyUshort(sc, 0x06, 0x02d1); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x85b0); - MP_WritePhyUshort(sc, 0x06, 0x0238); - MP_WritePhyUshort(sc, 0x06, 0x7def); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xad26); - MP_WritePhyUshort(sc, 0x06, 0x30e0); - MP_WritePhyUshort(sc, 0x06, 0xe036); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x37e1); - MP_WritePhyUshort(sc, 0x06, 0x8b3f); - MP_WritePhyUshort(sc, 0x06, 0x1f10); - MP_WritePhyUshort(sc, 0x06, 0x9e23); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x3fac); - MP_WritePhyUshort(sc, 0x06, 0x200b); - MP_WritePhyUshort(sc, 0x06, 0xac21); - MP_WritePhyUshort(sc, 0x06, 0x0dac); - MP_WritePhyUshort(sc, 0x06, 0x250f); - MP_WritePhyUshort(sc, 0x06, 0xac27); - MP_WritePhyUshort(sc, 0x06, 0x11ae); - MP_WritePhyUshort(sc, 0x06, 0x1202); - MP_WritePhyUshort(sc, 0x06, 0x2c47); - MP_WritePhyUshort(sc, 0x06, 0xae0d); - MP_WritePhyUshort(sc, 0x06, 0x0285); - MP_WritePhyUshort(sc, 0x06, 0x4fae); - MP_WritePhyUshort(sc, 0x06, 0x0802); - MP_WritePhyUshort(sc, 0x06, 0x2c69); - MP_WritePhyUshort(sc, 0x06, 0xae03); - MP_WritePhyUshort(sc, 0x06, 0x022c); - MP_WritePhyUshort(sc, 0x06, 0x7cfc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xfaef); - MP_WritePhyUshort(sc, 0x06, 0x6902); - MP_WritePhyUshort(sc, 0x06, 0x856c); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x14e1); - MP_WritePhyUshort(sc, 0x06, 0xe015); - MP_WritePhyUshort(sc, 0x06, 0xad26); - MP_WritePhyUshort(sc, 0x06, 0x08d1); - MP_WritePhyUshort(sc, 0x06, 0x1ebf); - MP_WritePhyUshort(sc, 0x06, 0x2cd9); - MP_WritePhyUshort(sc, 0x06, 0x0238); - MP_WritePhyUshort(sc, 0x06, 0x7def); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xad27); - MP_WritePhyUshort(sc, 0x06, 0x2fd0); - MP_WritePhyUshort(sc, 0x06, 0x0b02); - MP_WritePhyUshort(sc, 0x06, 0x3682); - MP_WritePhyUshort(sc, 0x06, 0x5882); - MP_WritePhyUshort(sc, 0x06, 0x7882); - MP_WritePhyUshort(sc, 0x06, 0x9f24); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x32e1); - MP_WritePhyUshort(sc, 0x06, 0x8b33); - MP_WritePhyUshort(sc, 0x06, 0x1f10); - MP_WritePhyUshort(sc, 0x06, 0x9e1a); - MP_WritePhyUshort(sc, 0x06, 0x10e4); - MP_WritePhyUshort(sc, 0x06, 0x8b32); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x28e1); - MP_WritePhyUshort(sc, 0x06, 0xe029); - MP_WritePhyUshort(sc, 0x06, 0xf72c); - MP_WritePhyUshort(sc, 0x06, 0xe4e0); - MP_WritePhyUshort(sc, 0x06, 0x28e5); - MP_WritePhyUshort(sc, 0x06, 0xe029); - MP_WritePhyUshort(sc, 0x06, 0xf62c); - MP_WritePhyUshort(sc, 0x06, 0xe4e0); - MP_WritePhyUshort(sc, 0x06, 0x28e5); - MP_WritePhyUshort(sc, 0x06, 0xe029); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0x00e1); - MP_WritePhyUshort(sc, 0x06, 0x4077); - MP_WritePhyUshort(sc, 0x06, 0xe140); - MP_WritePhyUshort(sc, 0x06, 0x52e0); - MP_WritePhyUshort(sc, 0x06, 0xeed9); - MP_WritePhyUshort(sc, 0x06, 0xe04c); - MP_WritePhyUshort(sc, 0x06, 0xbbe0); - MP_WritePhyUshort(sc, 0x06, 0x2a00); - MP_WritePhyUshort(sc, 0x05, 0xe142); - PhyRegValue = MP_ReadPhyUshort(sc, 0x06); - PhyRegValue |= BIT_0; - MP_WritePhyUshort(sc, 0x06, PhyRegValue); - MP_WritePhyUshort(sc, 0x05, 0xe140); - PhyRegValue = MP_ReadPhyUshort(sc, 0x06); - PhyRegValue |= BIT_0; - MP_WritePhyUshort(sc, 0x06, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x00); - if (PhyRegValue & BIT_7) - break; - } - - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); - PhyRegValue |= BIT_1; - if (sc->RequiredSecLanDonglePatch) - PhyRegValue &= ~(BIT_2); - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0003); - MP_WritePhyUshort(sc, 0x09, 0xA20F); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0003); - MP_WritePhyUshort(sc, 0x01, 0x328A); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0003); - PhyRegValue = MP_ReadPhyUshort(sc, 0x19); - PhyRegValue &= ~BIT_0; - MP_WritePhyUshort(sc, 0x19, PhyRegValue); - PhyRegValue = MP_ReadPhyUshort(sc, 0x10); - PhyRegValue &= ~BIT_10; - MP_WritePhyUshort(sc, 0x10, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x9200); -} - -static void re_set_phy_mcu_8168f_2(struct re_softc* sc) -{ - u_int16_t PhyRegValue; - int i; - - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x1800); - PhyRegValue = MP_ReadPhyUshort(sc, 0x15); - PhyRegValue &= ~(BIT_12); - MP_WritePhyUshort(sc, 0x15, PhyRegValue); - MP_WritePhyUshort(sc, 0x00, 0x4800); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x002f); - for (i = 0; i < 1000; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x1c); - if (PhyRegValue & BIT_7) - break; - } - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x1800); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x18); - if (!(PhyRegValue & BIT_0)) - break; - } - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x0080); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - MP_WritePhyUshort(sc, 0x16, 0x0306); - MP_WritePhyUshort(sc, 0x16, 0x0307); - MP_WritePhyUshort(sc, 0x15, 0x0098); - MP_WritePhyUshort(sc, 0x19, 0x7c0b); - MP_WritePhyUshort(sc, 0x15, 0x0099); - MP_WritePhyUshort(sc, 0x19, 0x6c0b); - MP_WritePhyUshort(sc, 0x15, 0x00eb); - MP_WritePhyUshort(sc, 0x19, 0x6c0b); - MP_WritePhyUshort(sc, 0x15, 0x00f8); - MP_WritePhyUshort(sc, 0x19, 0x6f0b); - MP_WritePhyUshort(sc, 0x15, 0x00fe); - MP_WritePhyUshort(sc, 0x19, 0x6f0f); - MP_WritePhyUshort(sc, 0x15, 0x00db); - MP_WritePhyUshort(sc, 0x19, 0x6f09); - MP_WritePhyUshort(sc, 0x15, 0x00dc); - MP_WritePhyUshort(sc, 0x19, 0xaefd); - MP_WritePhyUshort(sc, 0x15, 0x00dd); - MP_WritePhyUshort(sc, 0x19, 0x6f0b); - MP_WritePhyUshort(sc, 0x15, 0x00de); - MP_WritePhyUshort(sc, 0x19, 0xc60b); - MP_WritePhyUshort(sc, 0x15, 0x00df); - MP_WritePhyUshort(sc, 0x19, 0x00fa); - MP_WritePhyUshort(sc, 0x15, 0x00e0); - MP_WritePhyUshort(sc, 0x19, 0x30e1); - MP_WritePhyUshort(sc, 0x15, 0x020c); - MP_WritePhyUshort(sc, 0x19, 0x3224); - MP_WritePhyUshort(sc, 0x15, 0x020e); - MP_WritePhyUshort(sc, 0x19, 0x9813); - MP_WritePhyUshort(sc, 0x15, 0x020f); - MP_WritePhyUshort(sc, 0x19, 0x7801); - MP_WritePhyUshort(sc, 0x15, 0x0210); - MP_WritePhyUshort(sc, 0x19, 0x930f); - MP_WritePhyUshort(sc, 0x15, 0x0211); - MP_WritePhyUshort(sc, 0x19, 0x9206); - MP_WritePhyUshort(sc, 0x15, 0x0212); - MP_WritePhyUshort(sc, 0x19, 0x4002); - MP_WritePhyUshort(sc, 0x15, 0x0213); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x0214); - MP_WritePhyUshort(sc, 0x19, 0x588f); - MP_WritePhyUshort(sc, 0x15, 0x0215); - MP_WritePhyUshort(sc, 0x19, 0x5520); - MP_WritePhyUshort(sc, 0x15, 0x0216); - MP_WritePhyUshort(sc, 0x19, 0x3224); - MP_WritePhyUshort(sc, 0x15, 0x0217); - MP_WritePhyUshort(sc, 0x19, 0x4002); - MP_WritePhyUshort(sc, 0x15, 0x0218); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x0219); - MP_WritePhyUshort(sc, 0x19, 0x588d); - MP_WritePhyUshort(sc, 0x15, 0x021a); - MP_WritePhyUshort(sc, 0x19, 0x5540); - MP_WritePhyUshort(sc, 0x15, 0x021b); - MP_WritePhyUshort(sc, 0x19, 0x9e03); - MP_WritePhyUshort(sc, 0x15, 0x021c); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x021d); - MP_WritePhyUshort(sc, 0x19, 0x6840); - MP_WritePhyUshort(sc, 0x15, 0x021e); - MP_WritePhyUshort(sc, 0x19, 0x3224); - MP_WritePhyUshort(sc, 0x15, 0x021f); - MP_WritePhyUshort(sc, 0x19, 0x4002); - MP_WritePhyUshort(sc, 0x15, 0x0220); - MP_WritePhyUshort(sc, 0x19, 0x3224); - MP_WritePhyUshort(sc, 0x15, 0x0221); - MP_WritePhyUshort(sc, 0x19, 0x9e03); - MP_WritePhyUshort(sc, 0x15, 0x0222); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x0223); - MP_WritePhyUshort(sc, 0x19, 0x6840); - MP_WritePhyUshort(sc, 0x15, 0x0224); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x0225); - MP_WritePhyUshort(sc, 0x19, 0x3231); - MP_WritePhyUshort(sc, 0x15, 0x0000); - MP_WritePhyUshort(sc, 0x16, 0x0306); - MP_WritePhyUshort(sc, 0x16, 0x0300); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x0080); - MP_WritePhyUshort(sc, 0x05, 0x8000); - MP_WritePhyUshort(sc, 0x06, 0x0280); - MP_WritePhyUshort(sc, 0x06, 0x48f7); - MP_WritePhyUshort(sc, 0x06, 0x00e0); - MP_WritePhyUshort(sc, 0x06, 0xfff7); - MP_WritePhyUshort(sc, 0x06, 0xa080); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0xf602); - MP_WritePhyUshort(sc, 0x06, 0x011b); - MP_WritePhyUshort(sc, 0x06, 0x0201); - MP_WritePhyUshort(sc, 0x06, 0x2802); - MP_WritePhyUshort(sc, 0x06, 0x0135); - MP_WritePhyUshort(sc, 0x06, 0x0201); - MP_WritePhyUshort(sc, 0x06, 0x4502); - MP_WritePhyUshort(sc, 0x06, 0x015f); - MP_WritePhyUshort(sc, 0x06, 0x0280); - MP_WritePhyUshort(sc, 0x06, 0x6b02); - MP_WritePhyUshort(sc, 0x06, 0x80e5); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x88e1); - MP_WritePhyUshort(sc, 0x06, 0x8b89); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8a1e); - MP_WritePhyUshort(sc, 0x06, 0x01e1); - MP_WritePhyUshort(sc, 0x06, 0x8b8b); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8c1e); - MP_WritePhyUshort(sc, 0x06, 0x01e1); - MP_WritePhyUshort(sc, 0x06, 0x8b8d); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8e1e); - MP_WritePhyUshort(sc, 0x06, 0x01a0); - MP_WritePhyUshort(sc, 0x06, 0x00c7); - MP_WritePhyUshort(sc, 0x06, 0xaebb); - MP_WritePhyUshort(sc, 0x06, 0xbf8b); - MP_WritePhyUshort(sc, 0x06, 0x88ec); - MP_WritePhyUshort(sc, 0x06, 0x0019); - MP_WritePhyUshort(sc, 0x06, 0xa98b); - MP_WritePhyUshort(sc, 0x06, 0x90f9); - MP_WritePhyUshort(sc, 0x06, 0xeeff); - MP_WritePhyUshort(sc, 0x06, 0xf600); - MP_WritePhyUshort(sc, 0x06, 0xeeff); - MP_WritePhyUshort(sc, 0x06, 0xf7fe); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf81); - MP_WritePhyUshort(sc, 0x06, 0x9802); - MP_WritePhyUshort(sc, 0x06, 0x39f3); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xbf81); - MP_WritePhyUshort(sc, 0x06, 0x9b02); - MP_WritePhyUshort(sc, 0x06, 0x39f3); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8dad); - MP_WritePhyUshort(sc, 0x06, 0x2014); - MP_WritePhyUshort(sc, 0x06, 0xee8b); - MP_WritePhyUshort(sc, 0x06, 0x8d00); - MP_WritePhyUshort(sc, 0x06, 0xe08a); - MP_WritePhyUshort(sc, 0x06, 0x5a78); - MP_WritePhyUshort(sc, 0x06, 0x039e); - MP_WritePhyUshort(sc, 0x06, 0x0902); - MP_WritePhyUshort(sc, 0x06, 0x05fc); - MP_WritePhyUshort(sc, 0x06, 0x0280); - MP_WritePhyUshort(sc, 0x06, 0x8802); - MP_WritePhyUshort(sc, 0x06, 0x32dd); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8f9); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ac); - MP_WritePhyUshort(sc, 0x06, 0x261a); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x81ac); - MP_WritePhyUshort(sc, 0x06, 0x2114); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x85ac); - MP_WritePhyUshort(sc, 0x06, 0x200e); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x85ac); - MP_WritePhyUshort(sc, 0x06, 0x2308); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x87ac); - MP_WritePhyUshort(sc, 0x06, 0x2402); - MP_WritePhyUshort(sc, 0x06, 0xae38); - MP_WritePhyUshort(sc, 0x06, 0x021a); - MP_WritePhyUshort(sc, 0x06, 0xd6ee); - MP_WritePhyUshort(sc, 0x06, 0xe41c); - MP_WritePhyUshort(sc, 0x06, 0x04ee); - MP_WritePhyUshort(sc, 0x06, 0xe41d); - MP_WritePhyUshort(sc, 0x06, 0x04e2); - MP_WritePhyUshort(sc, 0x06, 0xe07c); - MP_WritePhyUshort(sc, 0x06, 0xe3e0); - MP_WritePhyUshort(sc, 0x06, 0x7de0); - MP_WritePhyUshort(sc, 0x06, 0xe038); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x39ad); - MP_WritePhyUshort(sc, 0x06, 0x2e1b); - MP_WritePhyUshort(sc, 0x06, 0xad39); - MP_WritePhyUshort(sc, 0x06, 0x0dd1); - MP_WritePhyUshort(sc, 0x06, 0x01bf); - MP_WritePhyUshort(sc, 0x06, 0x22c8); - MP_WritePhyUshort(sc, 0x06, 0x0239); - MP_WritePhyUshort(sc, 0x06, 0xf302); - MP_WritePhyUshort(sc, 0x06, 0x21f0); - MP_WritePhyUshort(sc, 0x06, 0xae0b); - MP_WritePhyUshort(sc, 0x06, 0xac38); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x0602); - MP_WritePhyUshort(sc, 0x06, 0x222d); - MP_WritePhyUshort(sc, 0x06, 0x0222); - MP_WritePhyUshort(sc, 0x06, 0x7202); - MP_WritePhyUshort(sc, 0x06, 0x1ae7); - MP_WritePhyUshort(sc, 0x06, 0xfdfc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x201a); - MP_WritePhyUshort(sc, 0x06, 0xf620); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x2afe); - MP_WritePhyUshort(sc, 0x06, 0x022c); - MP_WritePhyUshort(sc, 0x06, 0x5c02); - MP_WritePhyUshort(sc, 0x06, 0x03c5); - MP_WritePhyUshort(sc, 0x06, 0x0281); - MP_WritePhyUshort(sc, 0x06, 0x6702); - MP_WritePhyUshort(sc, 0x06, 0x2e4f); - MP_WritePhyUshort(sc, 0x06, 0x0204); - MP_WritePhyUshort(sc, 0x06, 0x8902); - MP_WritePhyUshort(sc, 0x06, 0x2f7a); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x210b); - MP_WritePhyUshort(sc, 0x06, 0xf621); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x0445); - MP_WritePhyUshort(sc, 0x06, 0x021c); - MP_WritePhyUshort(sc, 0x06, 0xb8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad22); - MP_WritePhyUshort(sc, 0x06, 0x08f6); - MP_WritePhyUshort(sc, 0x06, 0x22e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0x0235); - MP_WritePhyUshort(sc, 0x06, 0xd4e0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad23); - MP_WritePhyUshort(sc, 0x06, 0x08f6); - MP_WritePhyUshort(sc, 0x06, 0x23e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0x0231); - MP_WritePhyUshort(sc, 0x06, 0xc8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad24); - MP_WritePhyUshort(sc, 0x06, 0x05f6); - MP_WritePhyUshort(sc, 0x06, 0x24e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x2505); - MP_WritePhyUshort(sc, 0x06, 0xf625); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8ee0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad26); - MP_WritePhyUshort(sc, 0x06, 0x08f6); - MP_WritePhyUshort(sc, 0x06, 0x26e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0x022d); - MP_WritePhyUshort(sc, 0x06, 0x6ae0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad27); - MP_WritePhyUshort(sc, 0x06, 0x05f6); - MP_WritePhyUshort(sc, 0x06, 0x27e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0x0203); - MP_WritePhyUshort(sc, 0x06, 0x8bfc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xfaef); - MP_WritePhyUshort(sc, 0x06, 0x69e0); - MP_WritePhyUshort(sc, 0x06, 0x8b80); - MP_WritePhyUshort(sc, 0x06, 0xad27); - MP_WritePhyUshort(sc, 0x06, 0x22bf); - MP_WritePhyUshort(sc, 0x06, 0x479a); - MP_WritePhyUshort(sc, 0x06, 0x0239); - MP_WritePhyUshort(sc, 0x06, 0xc6e0); - MP_WritePhyUshort(sc, 0x06, 0x8b44); - MP_WritePhyUshort(sc, 0x06, 0x1f01); - MP_WritePhyUshort(sc, 0x06, 0x9e15); - MP_WritePhyUshort(sc, 0x06, 0xe58b); - MP_WritePhyUshort(sc, 0x06, 0x44ad); - MP_WritePhyUshort(sc, 0x06, 0x2907); - MP_WritePhyUshort(sc, 0x06, 0xac28); - MP_WritePhyUshort(sc, 0x06, 0x04d1); - MP_WritePhyUshort(sc, 0x06, 0x01ae); - MP_WritePhyUshort(sc, 0x06, 0x02d1); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x819e); - MP_WritePhyUshort(sc, 0x06, 0x0239); - MP_WritePhyUshort(sc, 0x06, 0xf3ef); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0x00e1); - MP_WritePhyUshort(sc, 0x06, 0x4077); - MP_WritePhyUshort(sc, 0x06, 0xe140); - MP_WritePhyUshort(sc, 0x06, 0xbbe0); - MP_WritePhyUshort(sc, 0x06, 0x2a00); - MP_WritePhyUshort(sc, 0x05, 0xe142); - PhyRegValue = MP_ReadPhyUshort(sc, 0x06); - PhyRegValue |= BIT_0; - MP_WritePhyUshort(sc, 0x06, PhyRegValue); - MP_WritePhyUshort(sc, 0x05, 0xe140); - PhyRegValue = MP_ReadPhyUshort(sc, 0x06); - PhyRegValue |= BIT_0; - MP_WritePhyUshort(sc, 0x06, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x00); - if (PhyRegValue & BIT_7) - break; - } - - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); - PhyRegValue |= BIT_1; - if (sc->RequiredSecLanDonglePatch) - PhyRegValue &= ~(BIT_2); - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0003); - PhyRegValue = MP_ReadPhyUshort(sc, 0x19); - PhyRegValue &= ~BIT_0; - MP_WritePhyUshort(sc, 0x19, PhyRegValue); - PhyRegValue = MP_ReadPhyUshort(sc, 0x10); - PhyRegValue &= ~BIT_10; - MP_WritePhyUshort(sc, 0x10, PhyRegValue); - - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x9200); -} - -static void re_set_phy_mcu_8411_1(struct re_softc* sc) -{ - u_int16_t PhyRegValue; - int i; - - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x1800); - PhyRegValue = MP_ReadPhyUshort(sc, 0x15); - PhyRegValue &= ~(BIT_12); - MP_WritePhyUshort(sc, 0x15, PhyRegValue); - MP_WritePhyUshort(sc, 0x00, 0x4800); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x002f); - for (i = 0; i < 1000; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x1c); - if (PhyRegValue & BIT_7) - break; - } - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x1800); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x18); - if (!(PhyRegValue & BIT_0)) - break; - } - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x0080); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - MP_WritePhyUshort(sc, 0x16, 0x0306); - MP_WritePhyUshort(sc, 0x16, 0x0307); - MP_WritePhyUshort(sc, 0x15, 0x0098); - MP_WritePhyUshort(sc, 0x19, 0x7c0b); - MP_WritePhyUshort(sc, 0x15, 0x0099); - MP_WritePhyUshort(sc, 0x19, 0x6c0b); - MP_WritePhyUshort(sc, 0x15, 0x00eb); - MP_WritePhyUshort(sc, 0x19, 0x6c0b); - MP_WritePhyUshort(sc, 0x15, 0x00f8); - MP_WritePhyUshort(sc, 0x19, 0x6f0b); - MP_WritePhyUshort(sc, 0x15, 0x00fe); - MP_WritePhyUshort(sc, 0x19, 0x6f0f); - MP_WritePhyUshort(sc, 0x15, 0x00db); - MP_WritePhyUshort(sc, 0x19, 0x6f09); - MP_WritePhyUshort(sc, 0x15, 0x00dc); - MP_WritePhyUshort(sc, 0x19, 0xaefd); - MP_WritePhyUshort(sc, 0x15, 0x00dd); - MP_WritePhyUshort(sc, 0x19, 0x6f0b); - MP_WritePhyUshort(sc, 0x15, 0x00de); - MP_WritePhyUshort(sc, 0x19, 0xc60b); - MP_WritePhyUshort(sc, 0x15, 0x00df); - MP_WritePhyUshort(sc, 0x19, 0x00fa); - MP_WritePhyUshort(sc, 0x15, 0x00e0); - MP_WritePhyUshort(sc, 0x19, 0x30e1); - MP_WritePhyUshort(sc, 0x15, 0x020c); - MP_WritePhyUshort(sc, 0x19, 0x3224); - MP_WritePhyUshort(sc, 0x15, 0x020e); - MP_WritePhyUshort(sc, 0x19, 0x9813); - MP_WritePhyUshort(sc, 0x15, 0x020f); - MP_WritePhyUshort(sc, 0x19, 0x7801); - MP_WritePhyUshort(sc, 0x15, 0x0210); - MP_WritePhyUshort(sc, 0x19, 0x930f); - MP_WritePhyUshort(sc, 0x15, 0x0211); - MP_WritePhyUshort(sc, 0x19, 0x9206); - MP_WritePhyUshort(sc, 0x15, 0x0212); - MP_WritePhyUshort(sc, 0x19, 0x4002); - MP_WritePhyUshort(sc, 0x15, 0x0213); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x0214); - MP_WritePhyUshort(sc, 0x19, 0x588f); - MP_WritePhyUshort(sc, 0x15, 0x0215); - MP_WritePhyUshort(sc, 0x19, 0x5520); - MP_WritePhyUshort(sc, 0x15, 0x0216); - MP_WritePhyUshort(sc, 0x19, 0x3224); - MP_WritePhyUshort(sc, 0x15, 0x0217); - MP_WritePhyUshort(sc, 0x19, 0x4002); - MP_WritePhyUshort(sc, 0x15, 0x0218); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x0219); - MP_WritePhyUshort(sc, 0x19, 0x588d); - MP_WritePhyUshort(sc, 0x15, 0x021a); - MP_WritePhyUshort(sc, 0x19, 0x5540); - MP_WritePhyUshort(sc, 0x15, 0x021b); - MP_WritePhyUshort(sc, 0x19, 0x9e03); - MP_WritePhyUshort(sc, 0x15, 0x021c); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x021d); - MP_WritePhyUshort(sc, 0x19, 0x6840); - MP_WritePhyUshort(sc, 0x15, 0x021e); - MP_WritePhyUshort(sc, 0x19, 0x3224); - MP_WritePhyUshort(sc, 0x15, 0x021f); - MP_WritePhyUshort(sc, 0x19, 0x4002); - MP_WritePhyUshort(sc, 0x15, 0x0220); - MP_WritePhyUshort(sc, 0x19, 0x3224); - MP_WritePhyUshort(sc, 0x15, 0x0221); - MP_WritePhyUshort(sc, 0x19, 0x9e03); - MP_WritePhyUshort(sc, 0x15, 0x0222); - MP_WritePhyUshort(sc, 0x19, 0x7c40); - MP_WritePhyUshort(sc, 0x15, 0x0223); - MP_WritePhyUshort(sc, 0x19, 0x6840); - MP_WritePhyUshort(sc, 0x15, 0x0224); - MP_WritePhyUshort(sc, 0x19, 0x7800); - MP_WritePhyUshort(sc, 0x15, 0x0225); - MP_WritePhyUshort(sc, 0x19, 0x3231); - MP_WritePhyUshort(sc, 0x15, 0x0000); - MP_WritePhyUshort(sc, 0x16, 0x0306); - MP_WritePhyUshort(sc, 0x16, 0x0300); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x0080); - MP_WritePhyUshort(sc, 0x05, 0x8000); - MP_WritePhyUshort(sc, 0x06, 0x0280); - MP_WritePhyUshort(sc, 0x06, 0x48f7); - MP_WritePhyUshort(sc, 0x06, 0x00e0); - MP_WritePhyUshort(sc, 0x06, 0xfff7); - MP_WritePhyUshort(sc, 0x06, 0xa080); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0xf602); - MP_WritePhyUshort(sc, 0x06, 0x011e); - MP_WritePhyUshort(sc, 0x06, 0x0201); - MP_WritePhyUshort(sc, 0x06, 0x2b02); - MP_WritePhyUshort(sc, 0x06, 0x8077); - MP_WritePhyUshort(sc, 0x06, 0x0201); - MP_WritePhyUshort(sc, 0x06, 0x4802); - MP_WritePhyUshort(sc, 0x06, 0x0162); - MP_WritePhyUshort(sc, 0x06, 0x0280); - MP_WritePhyUshort(sc, 0x06, 0x9402); - MP_WritePhyUshort(sc, 0x06, 0x810e); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x88e1); - MP_WritePhyUshort(sc, 0x06, 0x8b89); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8a1e); - MP_WritePhyUshort(sc, 0x06, 0x01e1); - MP_WritePhyUshort(sc, 0x06, 0x8b8b); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8c1e); - MP_WritePhyUshort(sc, 0x06, 0x01e1); - MP_WritePhyUshort(sc, 0x06, 0x8b8d); - MP_WritePhyUshort(sc, 0x06, 0x1e01); - MP_WritePhyUshort(sc, 0x06, 0xe18b); - MP_WritePhyUshort(sc, 0x06, 0x8e1e); - MP_WritePhyUshort(sc, 0x06, 0x01a0); - MP_WritePhyUshort(sc, 0x06, 0x00c7); - MP_WritePhyUshort(sc, 0x06, 0xaebb); - MP_WritePhyUshort(sc, 0x06, 0xd481); - MP_WritePhyUshort(sc, 0x06, 0xd4e4); - MP_WritePhyUshort(sc, 0x06, 0x8b92); - MP_WritePhyUshort(sc, 0x06, 0xe58b); - MP_WritePhyUshort(sc, 0x06, 0x9302); - MP_WritePhyUshort(sc, 0x06, 0x2e5a); - MP_WritePhyUshort(sc, 0x06, 0xbf8b); - MP_WritePhyUshort(sc, 0x06, 0x88ec); - MP_WritePhyUshort(sc, 0x06, 0x0019); - MP_WritePhyUshort(sc, 0x06, 0xa98b); - MP_WritePhyUshort(sc, 0x06, 0x90f9); - MP_WritePhyUshort(sc, 0x06, 0xeeff); - MP_WritePhyUshort(sc, 0x06, 0xf600); - MP_WritePhyUshort(sc, 0x06, 0xeeff); - MP_WritePhyUshort(sc, 0x06, 0xf7fc); - MP_WritePhyUshort(sc, 0x06, 0xd100); - MP_WritePhyUshort(sc, 0x06, 0xbf83); - MP_WritePhyUshort(sc, 0x06, 0x3c02); - MP_WritePhyUshort(sc, 0x06, 0x3a21); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xbf83); - MP_WritePhyUshort(sc, 0x06, 0x3f02); - MP_WritePhyUshort(sc, 0x06, 0x3a21); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8aad); - MP_WritePhyUshort(sc, 0x06, 0x2014); - MP_WritePhyUshort(sc, 0x06, 0xee8b); - MP_WritePhyUshort(sc, 0x06, 0x8a00); - MP_WritePhyUshort(sc, 0x06, 0x0220); - MP_WritePhyUshort(sc, 0x06, 0x8be0); - MP_WritePhyUshort(sc, 0x06, 0xe426); - MP_WritePhyUshort(sc, 0x06, 0xe1e4); - MP_WritePhyUshort(sc, 0x06, 0x27ee); - MP_WritePhyUshort(sc, 0x06, 0xe426); - MP_WritePhyUshort(sc, 0x06, 0x23e5); - MP_WritePhyUshort(sc, 0x06, 0xe427); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b8d); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x14ee); - MP_WritePhyUshort(sc, 0x06, 0x8b8d); - MP_WritePhyUshort(sc, 0x06, 0x00e0); - MP_WritePhyUshort(sc, 0x06, 0x8a5a); - MP_WritePhyUshort(sc, 0x06, 0x7803); - MP_WritePhyUshort(sc, 0x06, 0x9e09); - MP_WritePhyUshort(sc, 0x06, 0x0206); - MP_WritePhyUshort(sc, 0x06, 0x2802); - MP_WritePhyUshort(sc, 0x06, 0x80b1); - MP_WritePhyUshort(sc, 0x06, 0x0232); - MP_WritePhyUshort(sc, 0x06, 0xfdfc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xf9e0); - MP_WritePhyUshort(sc, 0x06, 0x8b81); - MP_WritePhyUshort(sc, 0x06, 0xac26); - MP_WritePhyUshort(sc, 0x06, 0x1ae0); - MP_WritePhyUshort(sc, 0x06, 0x8b81); - MP_WritePhyUshort(sc, 0x06, 0xac21); - MP_WritePhyUshort(sc, 0x06, 0x14e0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xac20); - MP_WritePhyUshort(sc, 0x06, 0x0ee0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xac23); - MP_WritePhyUshort(sc, 0x06, 0x08e0); - MP_WritePhyUshort(sc, 0x06, 0x8b87); - MP_WritePhyUshort(sc, 0x06, 0xac24); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x3802); - MP_WritePhyUshort(sc, 0x06, 0x1b02); - MP_WritePhyUshort(sc, 0x06, 0xeee4); - MP_WritePhyUshort(sc, 0x06, 0x1c04); - MP_WritePhyUshort(sc, 0x06, 0xeee4); - MP_WritePhyUshort(sc, 0x06, 0x1d04); - MP_WritePhyUshort(sc, 0x06, 0xe2e0); - MP_WritePhyUshort(sc, 0x06, 0x7ce3); - MP_WritePhyUshort(sc, 0x06, 0xe07d); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x38e1); - MP_WritePhyUshort(sc, 0x06, 0xe039); - MP_WritePhyUshort(sc, 0x06, 0xad2e); - MP_WritePhyUshort(sc, 0x06, 0x1bad); - MP_WritePhyUshort(sc, 0x06, 0x390d); - MP_WritePhyUshort(sc, 0x06, 0xd101); - MP_WritePhyUshort(sc, 0x06, 0xbf22); - MP_WritePhyUshort(sc, 0x06, 0xe802); - MP_WritePhyUshort(sc, 0x06, 0x3a21); - MP_WritePhyUshort(sc, 0x06, 0x0222); - MP_WritePhyUshort(sc, 0x06, 0x10ae); - MP_WritePhyUshort(sc, 0x06, 0x0bac); - MP_WritePhyUshort(sc, 0x06, 0x3802); - MP_WritePhyUshort(sc, 0x06, 0xae06); - MP_WritePhyUshort(sc, 0x06, 0x0222); - MP_WritePhyUshort(sc, 0x06, 0x4d02); - MP_WritePhyUshort(sc, 0x06, 0x2292); - MP_WritePhyUshort(sc, 0x06, 0x021b); - MP_WritePhyUshort(sc, 0x06, 0x13fd); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x1af6); - MP_WritePhyUshort(sc, 0x06, 0x20e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0x022b); - MP_WritePhyUshort(sc, 0x06, 0x1e02); - MP_WritePhyUshort(sc, 0x06, 0x82ae); - MP_WritePhyUshort(sc, 0x06, 0x0203); - MP_WritePhyUshort(sc, 0x06, 0xc002); - MP_WritePhyUshort(sc, 0x06, 0x827d); - MP_WritePhyUshort(sc, 0x06, 0x022e); - MP_WritePhyUshort(sc, 0x06, 0x6f02); - MP_WritePhyUshort(sc, 0x06, 0x047b); - MP_WritePhyUshort(sc, 0x06, 0x022f); - MP_WritePhyUshort(sc, 0x06, 0x9ae0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad21); - MP_WritePhyUshort(sc, 0x06, 0x0bf6); - MP_WritePhyUshort(sc, 0x06, 0x21e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0x0281); - MP_WritePhyUshort(sc, 0x06, 0x9002); - MP_WritePhyUshort(sc, 0x06, 0x1cd9); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x2208); - MP_WritePhyUshort(sc, 0x06, 0xf622); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x35f4); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x2308); - MP_WritePhyUshort(sc, 0x06, 0xf623); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x31e8); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x2405); - MP_WritePhyUshort(sc, 0x06, 0xf624); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8ee0); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xad25); - MP_WritePhyUshort(sc, 0x06, 0x05f6); - MP_WritePhyUshort(sc, 0x06, 0x25e4); - MP_WritePhyUshort(sc, 0x06, 0x8b8e); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x2608); - MP_WritePhyUshort(sc, 0x06, 0xf626); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x2d8a); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x8ead); - MP_WritePhyUshort(sc, 0x06, 0x2705); - MP_WritePhyUshort(sc, 0x06, 0xf627); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x8e02); - MP_WritePhyUshort(sc, 0x06, 0x0386); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8fa); - MP_WritePhyUshort(sc, 0x06, 0xef69); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x00e1); - MP_WritePhyUshort(sc, 0x06, 0xe001); - MP_WritePhyUshort(sc, 0x06, 0xad27); - MP_WritePhyUshort(sc, 0x06, 0x32e0); - MP_WritePhyUshort(sc, 0x06, 0x8b40); - MP_WritePhyUshort(sc, 0x06, 0xf720); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x40bf); - MP_WritePhyUshort(sc, 0x06, 0x32c1); - MP_WritePhyUshort(sc, 0x06, 0x0239); - MP_WritePhyUshort(sc, 0x06, 0xf4ad); - MP_WritePhyUshort(sc, 0x06, 0x2821); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x20e1); - MP_WritePhyUshort(sc, 0x06, 0xe021); - MP_WritePhyUshort(sc, 0x06, 0xad20); - MP_WritePhyUshort(sc, 0x06, 0x18e0); - MP_WritePhyUshort(sc, 0x06, 0x8b40); - MP_WritePhyUshort(sc, 0x06, 0xf620); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x40ee); - MP_WritePhyUshort(sc, 0x06, 0x8b3b); - MP_WritePhyUshort(sc, 0x06, 0xffe0); - MP_WritePhyUshort(sc, 0x06, 0x8a8a); - MP_WritePhyUshort(sc, 0x06, 0xe18a); - MP_WritePhyUshort(sc, 0x06, 0x8be4); - MP_WritePhyUshort(sc, 0x06, 0xe000); - MP_WritePhyUshort(sc, 0x06, 0xe5e0); - MP_WritePhyUshort(sc, 0x06, 0x01ef); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8f9); - MP_WritePhyUshort(sc, 0x06, 0xface); - MP_WritePhyUshort(sc, 0x06, 0xfaef); - MP_WritePhyUshort(sc, 0x06, 0x69fa); - MP_WritePhyUshort(sc, 0x06, 0xd401); - MP_WritePhyUshort(sc, 0x06, 0x55b4); - MP_WritePhyUshort(sc, 0x06, 0xfebf); - MP_WritePhyUshort(sc, 0x06, 0x1c5e); - MP_WritePhyUshort(sc, 0x06, 0x0239); - MP_WritePhyUshort(sc, 0x06, 0xf4ac); - MP_WritePhyUshort(sc, 0x06, 0x280b); - MP_WritePhyUshort(sc, 0x06, 0xbf1c); - MP_WritePhyUshort(sc, 0x06, 0x5b02); - MP_WritePhyUshort(sc, 0x06, 0x39f4); - MP_WritePhyUshort(sc, 0x06, 0xac28); - MP_WritePhyUshort(sc, 0x06, 0x49ae); - MP_WritePhyUshort(sc, 0x06, 0x64bf); - MP_WritePhyUshort(sc, 0x06, 0x1c5b); - MP_WritePhyUshort(sc, 0x06, 0x0239); - MP_WritePhyUshort(sc, 0x06, 0xf4ac); - MP_WritePhyUshort(sc, 0x06, 0x285b); - MP_WritePhyUshort(sc, 0x06, 0xd000); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0x62ac); - MP_WritePhyUshort(sc, 0x06, 0x2105); - MP_WritePhyUshort(sc, 0x06, 0xac22); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x4ebf); - MP_WritePhyUshort(sc, 0x06, 0xe0c4); - MP_WritePhyUshort(sc, 0x06, 0xbe85); - MP_WritePhyUshort(sc, 0x06, 0xecd2); - MP_WritePhyUshort(sc, 0x06, 0x04d8); - MP_WritePhyUshort(sc, 0x06, 0x19d9); - MP_WritePhyUshort(sc, 0x06, 0x1907); - MP_WritePhyUshort(sc, 0x06, 0xdc19); - MP_WritePhyUshort(sc, 0x06, 0xdd19); - MP_WritePhyUshort(sc, 0x06, 0x0789); - MP_WritePhyUshort(sc, 0x06, 0x89ef); - MP_WritePhyUshort(sc, 0x06, 0x645e); - MP_WritePhyUshort(sc, 0x06, 0x07ff); - MP_WritePhyUshort(sc, 0x06, 0x0d65); - MP_WritePhyUshort(sc, 0x06, 0x5cf8); - MP_WritePhyUshort(sc, 0x06, 0x001e); - MP_WritePhyUshort(sc, 0x06, 0x46dc); - MP_WritePhyUshort(sc, 0x06, 0x19dd); - MP_WritePhyUshort(sc, 0x06, 0x19b2); - MP_WritePhyUshort(sc, 0x06, 0xe2d4); - MP_WritePhyUshort(sc, 0x06, 0x0001); - MP_WritePhyUshort(sc, 0x06, 0xbf1c); - MP_WritePhyUshort(sc, 0x06, 0x5b02); - MP_WritePhyUshort(sc, 0x06, 0x3a21); - MP_WritePhyUshort(sc, 0x06, 0xae1d); - MP_WritePhyUshort(sc, 0x06, 0xbee0); - MP_WritePhyUshort(sc, 0x06, 0xc4bf); - MP_WritePhyUshort(sc, 0x06, 0x85ec); - MP_WritePhyUshort(sc, 0x06, 0xd204); - MP_WritePhyUshort(sc, 0x06, 0xd819); - MP_WritePhyUshort(sc, 0x06, 0xd919); - MP_WritePhyUshort(sc, 0x06, 0x07dc); - MP_WritePhyUshort(sc, 0x06, 0x19dd); - MP_WritePhyUshort(sc, 0x06, 0x1907); - MP_WritePhyUshort(sc, 0x06, 0xb2f4); - MP_WritePhyUshort(sc, 0x06, 0xd400); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x1c5b); - MP_WritePhyUshort(sc, 0x06, 0x023a); - MP_WritePhyUshort(sc, 0x06, 0x21fe); - MP_WritePhyUshort(sc, 0x06, 0xef96); - MP_WritePhyUshort(sc, 0x06, 0xfec6); - MP_WritePhyUshort(sc, 0x06, 0xfefd); - MP_WritePhyUshort(sc, 0x06, 0xfc05); - MP_WritePhyUshort(sc, 0x06, 0xf9e2); - MP_WritePhyUshort(sc, 0x06, 0xe0ea); - MP_WritePhyUshort(sc, 0x06, 0xe3e0); - MP_WritePhyUshort(sc, 0x06, 0xeb5a); - MP_WritePhyUshort(sc, 0x06, 0x070c); - MP_WritePhyUshort(sc, 0x06, 0x031e); - MP_WritePhyUshort(sc, 0x06, 0x20e6); - MP_WritePhyUshort(sc, 0x06, 0xe0ea); - MP_WritePhyUshort(sc, 0x06, 0xe7e0); - MP_WritePhyUshort(sc, 0x06, 0xebe0); - MP_WritePhyUshort(sc, 0x06, 0xe0fc); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0xfdfd); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xfaef); - MP_WritePhyUshort(sc, 0x06, 0x69e0); - MP_WritePhyUshort(sc, 0x06, 0x8b80); - MP_WritePhyUshort(sc, 0x06, 0xad27); - MP_WritePhyUshort(sc, 0x06, 0x22bf); - MP_WritePhyUshort(sc, 0x06, 0x47ba); - MP_WritePhyUshort(sc, 0x06, 0x0239); - MP_WritePhyUshort(sc, 0x06, 0xf4e0); - MP_WritePhyUshort(sc, 0x06, 0x8b44); - MP_WritePhyUshort(sc, 0x06, 0x1f01); - MP_WritePhyUshort(sc, 0x06, 0x9e15); - MP_WritePhyUshort(sc, 0x06, 0xe58b); - MP_WritePhyUshort(sc, 0x06, 0x44ad); - MP_WritePhyUshort(sc, 0x06, 0x2907); - MP_WritePhyUshort(sc, 0x06, 0xac28); - MP_WritePhyUshort(sc, 0x06, 0x04d1); - MP_WritePhyUshort(sc, 0x06, 0x01ae); - MP_WritePhyUshort(sc, 0x06, 0x02d1); - MP_WritePhyUshort(sc, 0x06, 0x00bf); - MP_WritePhyUshort(sc, 0x06, 0x8342); - MP_WritePhyUshort(sc, 0x06, 0x023a); - MP_WritePhyUshort(sc, 0x06, 0x21ef); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xad26); - MP_WritePhyUshort(sc, 0x06, 0x30e0); - MP_WritePhyUshort(sc, 0x06, 0xe036); - MP_WritePhyUshort(sc, 0x06, 0xe1e0); - MP_WritePhyUshort(sc, 0x06, 0x37e1); - MP_WritePhyUshort(sc, 0x06, 0x8b3f); - MP_WritePhyUshort(sc, 0x06, 0x1f10); - MP_WritePhyUshort(sc, 0x06, 0x9e23); - MP_WritePhyUshort(sc, 0x06, 0xe48b); - MP_WritePhyUshort(sc, 0x06, 0x3fac); - MP_WritePhyUshort(sc, 0x06, 0x200b); - MP_WritePhyUshort(sc, 0x06, 0xac21); - MP_WritePhyUshort(sc, 0x06, 0x0dac); - MP_WritePhyUshort(sc, 0x06, 0x250f); - MP_WritePhyUshort(sc, 0x06, 0xac27); - MP_WritePhyUshort(sc, 0x06, 0x11ae); - MP_WritePhyUshort(sc, 0x06, 0x1202); - MP_WritePhyUshort(sc, 0x06, 0x2cb5); - MP_WritePhyUshort(sc, 0x06, 0xae0d); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0xe7ae); - MP_WritePhyUshort(sc, 0x06, 0x0802); - MP_WritePhyUshort(sc, 0x06, 0x2cd7); - MP_WritePhyUshort(sc, 0x06, 0xae03); - MP_WritePhyUshort(sc, 0x06, 0x022c); - MP_WritePhyUshort(sc, 0x06, 0xeafc); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xfaef); - MP_WritePhyUshort(sc, 0x06, 0x6902); - MP_WritePhyUshort(sc, 0x06, 0x8304); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x14e1); - MP_WritePhyUshort(sc, 0x06, 0xe015); - MP_WritePhyUshort(sc, 0x06, 0xad26); - MP_WritePhyUshort(sc, 0x06, 0x08d1); - MP_WritePhyUshort(sc, 0x06, 0x1ebf); - MP_WritePhyUshort(sc, 0x06, 0x2d47); - MP_WritePhyUshort(sc, 0x06, 0x023a); - MP_WritePhyUshort(sc, 0x06, 0x21ef); - MP_WritePhyUshort(sc, 0x06, 0x96fe); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0x8b85); - MP_WritePhyUshort(sc, 0x06, 0xad27); - MP_WritePhyUshort(sc, 0x06, 0x2fd0); - MP_WritePhyUshort(sc, 0x06, 0x0b02); - MP_WritePhyUshort(sc, 0x06, 0x3826); - MP_WritePhyUshort(sc, 0x06, 0x5882); - MP_WritePhyUshort(sc, 0x06, 0x7882); - MP_WritePhyUshort(sc, 0x06, 0x9f24); - MP_WritePhyUshort(sc, 0x06, 0xe08b); - MP_WritePhyUshort(sc, 0x06, 0x32e1); - MP_WritePhyUshort(sc, 0x06, 0x8b33); - MP_WritePhyUshort(sc, 0x06, 0x1f10); - MP_WritePhyUshort(sc, 0x06, 0x9e1a); - MP_WritePhyUshort(sc, 0x06, 0x10e4); - MP_WritePhyUshort(sc, 0x06, 0x8b32); - MP_WritePhyUshort(sc, 0x06, 0xe0e0); - MP_WritePhyUshort(sc, 0x06, 0x28e1); - MP_WritePhyUshort(sc, 0x06, 0xe029); - MP_WritePhyUshort(sc, 0x06, 0xf72c); - MP_WritePhyUshort(sc, 0x06, 0xe4e0); - MP_WritePhyUshort(sc, 0x06, 0x28e5); - MP_WritePhyUshort(sc, 0x06, 0xe029); - MP_WritePhyUshort(sc, 0x06, 0xf62c); - MP_WritePhyUshort(sc, 0x06, 0xe4e0); - MP_WritePhyUshort(sc, 0x06, 0x28e5); - MP_WritePhyUshort(sc, 0x06, 0xe029); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0x00e1); - MP_WritePhyUshort(sc, 0x06, 0x4077); - MP_WritePhyUshort(sc, 0x06, 0xe140); - MP_WritePhyUshort(sc, 0x06, 0xbbe0); - MP_WritePhyUshort(sc, 0x06, 0x2a00); - MP_WritePhyUshort(sc, 0x05, 0xe142); - PhyRegValue = MP_ReadPhyUshort(sc, 0x06); - PhyRegValue |= BIT_0; - MP_WritePhyUshort(sc, 0x06, PhyRegValue); - MP_WritePhyUshort(sc, 0x05, 0xe140); - PhyRegValue = MP_ReadPhyUshort(sc, 0x06); - PhyRegValue |= BIT_0; - MP_WritePhyUshort(sc, 0x06, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - for (i = 0; i < 200; i++) { - DELAY(100); - PhyRegValue = MP_ReadPhyUshort(sc, 0x00); - if (PhyRegValue & BIT_7) - break; - } - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x0023); - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); - PhyRegValue |= BIT_1; - if (sc->RequiredSecLanDonglePatch) - PhyRegValue &= ~(BIT_2); - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0003); - MP_WritePhyUshort(sc, 0x09, 0xA20F); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0003); - MP_WritePhyUshort(sc, 0x01, 0x328A); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0003); - PhyRegValue = MP_ReadPhyUshort(sc, 0x19); - PhyRegValue &= ~BIT_0; - MP_WritePhyUshort(sc, 0x19, PhyRegValue); - PhyRegValue = MP_ReadPhyUshort(sc, 0x10); - PhyRegValue &= ~BIT_10; - MP_WritePhyUshort(sc, 0x10, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x9200); -} - -static void re_set_phy_mcu_8168g_1(struct re_softc* sc) -{ - u_int16_t PhyRegValue; - - re_set_phy_mcu_patch_request(sc); - - MP_WritePhyUshort(sc, 0x1f, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8146); - MP_WritePhyUshort(sc, 0x14, 0x2300); - MP_WritePhyUshort(sc, 0x13, 0xB820); - MP_WritePhyUshort(sc, 0x14, 0x0210); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0xB820); - MP_WritePhyUshort(sc, 0x14, 0x0290); - MP_WritePhyUshort(sc, 0x13, 0xA012); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x13, 0xA014); - MP_WritePhyUshort(sc, 0x14, 0x2c04); - MP_WritePhyUshort(sc, 0x14, 0x2c0c); - MP_WritePhyUshort(sc, 0x14, 0x2c6c); - MP_WritePhyUshort(sc, 0x14, 0x2d0d); - MP_WritePhyUshort(sc, 0x14, 0x31ce); - MP_WritePhyUshort(sc, 0x14, 0x506d); - MP_WritePhyUshort(sc, 0x14, 0xd708); - MP_WritePhyUshort(sc, 0x14, 0x3108); - MP_WritePhyUshort(sc, 0x14, 0x106d); - MP_WritePhyUshort(sc, 0x14, 0x1560); - MP_WritePhyUshort(sc, 0x14, 0x15a9); - MP_WritePhyUshort(sc, 0x14, 0x206e); - MP_WritePhyUshort(sc, 0x14, 0x175b); - MP_WritePhyUshort(sc, 0x14, 0x6062); - MP_WritePhyUshort(sc, 0x14, 0xd700); - MP_WritePhyUshort(sc, 0x14, 0x5fae); - MP_WritePhyUshort(sc, 0x14, 0xd708); - MP_WritePhyUshort(sc, 0x14, 0x3107); - MP_WritePhyUshort(sc, 0x14, 0x4c1e); - MP_WritePhyUshort(sc, 0x14, 0x4169); - MP_WritePhyUshort(sc, 0x14, 0x316a); - MP_WritePhyUshort(sc, 0x14, 0x0c19); - MP_WritePhyUshort(sc, 0x14, 0x31aa); - MP_WritePhyUshort(sc, 0x14, 0x0c19); - MP_WritePhyUshort(sc, 0x14, 0x2c1b); - MP_WritePhyUshort(sc, 0x14, 0x5e62); - MP_WritePhyUshort(sc, 0x14, 0x26b5); - MP_WritePhyUshort(sc, 0x14, 0x31ab); - MP_WritePhyUshort(sc, 0x14, 0x5c1e); - MP_WritePhyUshort(sc, 0x14, 0x2c0c); - MP_WritePhyUshort(sc, 0x14, 0xc040); - MP_WritePhyUshort(sc, 0x14, 0x8808); - MP_WritePhyUshort(sc, 0x14, 0xc520); - MP_WritePhyUshort(sc, 0x14, 0xc421); - MP_WritePhyUshort(sc, 0x14, 0xd05a); - MP_WritePhyUshort(sc, 0x14, 0xd19a); - MP_WritePhyUshort(sc, 0x14, 0xd709); - MP_WritePhyUshort(sc, 0x14, 0x608f); - MP_WritePhyUshort(sc, 0x14, 0xd06b); - MP_WritePhyUshort(sc, 0x14, 0xd18a); - MP_WritePhyUshort(sc, 0x14, 0x2c2c); - MP_WritePhyUshort(sc, 0x14, 0xd0be); - MP_WritePhyUshort(sc, 0x14, 0xd188); - MP_WritePhyUshort(sc, 0x14, 0x2c2c); - MP_WritePhyUshort(sc, 0x14, 0xd708); - MP_WritePhyUshort(sc, 0x14, 0x4072); - MP_WritePhyUshort(sc, 0x14, 0xc104); - MP_WritePhyUshort(sc, 0x14, 0x2c3e); - MP_WritePhyUshort(sc, 0x14, 0x4076); - MP_WritePhyUshort(sc, 0x14, 0xc110); - MP_WritePhyUshort(sc, 0x14, 0x2c3e); - MP_WritePhyUshort(sc, 0x14, 0x4071); - MP_WritePhyUshort(sc, 0x14, 0xc102); - MP_WritePhyUshort(sc, 0x14, 0x2c3e); - MP_WritePhyUshort(sc, 0x14, 0x4070); - MP_WritePhyUshort(sc, 0x14, 0xc101); - MP_WritePhyUshort(sc, 0x14, 0x2c3e); - MP_WritePhyUshort(sc, 0x14, 0x175b); - MP_WritePhyUshort(sc, 0x14, 0xd709); - MP_WritePhyUshort(sc, 0x14, 0x3390); - MP_WritePhyUshort(sc, 0x14, 0x5c39); - MP_WritePhyUshort(sc, 0x14, 0x2c4e); - MP_WritePhyUshort(sc, 0x14, 0x175b); - MP_WritePhyUshort(sc, 0x14, 0xd708); - MP_WritePhyUshort(sc, 0x14, 0x6193); - MP_WritePhyUshort(sc, 0x14, 0xd709); - MP_WritePhyUshort(sc, 0x14, 0x5f9d); - MP_WritePhyUshort(sc, 0x14, 0x408b); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x6042); - MP_WritePhyUshort(sc, 0x14, 0xb401); - MP_WritePhyUshort(sc, 0x14, 0x175b); - MP_WritePhyUshort(sc, 0x14, 0xd708); - MP_WritePhyUshort(sc, 0x14, 0x6073); - MP_WritePhyUshort(sc, 0x14, 0x5fbc); - MP_WritePhyUshort(sc, 0x14, 0x2c4d); - MP_WritePhyUshort(sc, 0x14, 0x26ed); - MP_WritePhyUshort(sc, 0x14, 0xb280); - MP_WritePhyUshort(sc, 0x14, 0xa841); - MP_WritePhyUshort(sc, 0x14, 0x9420); - MP_WritePhyUshort(sc, 0x14, 0x8710); - MP_WritePhyUshort(sc, 0x14, 0xd709); - MP_WritePhyUshort(sc, 0x14, 0x42ec); - MP_WritePhyUshort(sc, 0x14, 0x606d); - MP_WritePhyUshort(sc, 0x14, 0xd207); - MP_WritePhyUshort(sc, 0x14, 0x2c57); - MP_WritePhyUshort(sc, 0x14, 0xd203); - MP_WritePhyUshort(sc, 0x14, 0x33ff); - MP_WritePhyUshort(sc, 0x14, 0x563b); - MP_WritePhyUshort(sc, 0x14, 0x3275); - MP_WritePhyUshort(sc, 0x14, 0x7c5e); - MP_WritePhyUshort(sc, 0x14, 0xb240); - MP_WritePhyUshort(sc, 0x14, 0xb402); - MP_WritePhyUshort(sc, 0x14, 0x263b); - MP_WritePhyUshort(sc, 0x14, 0x6096); - MP_WritePhyUshort(sc, 0x14, 0xb240); - MP_WritePhyUshort(sc, 0x14, 0xb406); - MP_WritePhyUshort(sc, 0x14, 0x263b); - MP_WritePhyUshort(sc, 0x14, 0x31d7); - MP_WritePhyUshort(sc, 0x14, 0x7c67); - MP_WritePhyUshort(sc, 0x14, 0xb240); - MP_WritePhyUshort(sc, 0x14, 0xb40e); - MP_WritePhyUshort(sc, 0x14, 0x263b); - MP_WritePhyUshort(sc, 0x14, 0xb410); - MP_WritePhyUshort(sc, 0x14, 0x8802); - MP_WritePhyUshort(sc, 0x14, 0xb240); - MP_WritePhyUshort(sc, 0x14, 0x940e); - MP_WritePhyUshort(sc, 0x14, 0x263b); - MP_WritePhyUshort(sc, 0x14, 0xba04); - MP_WritePhyUshort(sc, 0x14, 0x1cd6); - MP_WritePhyUshort(sc, 0x14, 0xa902); - MP_WritePhyUshort(sc, 0x14, 0xd711); - MP_WritePhyUshort(sc, 0x14, 0x4045); - MP_WritePhyUshort(sc, 0x14, 0xa980); - MP_WritePhyUshort(sc, 0x14, 0x3003); - MP_WritePhyUshort(sc, 0x14, 0x59b1); - MP_WritePhyUshort(sc, 0x14, 0xa540); - MP_WritePhyUshort(sc, 0x14, 0xa601); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4043); - MP_WritePhyUshort(sc, 0x14, 0xa910); - MP_WritePhyUshort(sc, 0x14, 0xd711); - MP_WritePhyUshort(sc, 0x14, 0x60a0); - MP_WritePhyUshort(sc, 0x14, 0xca33); - MP_WritePhyUshort(sc, 0x14, 0xcb33); - MP_WritePhyUshort(sc, 0x14, 0xa941); - MP_WritePhyUshort(sc, 0x14, 0x2c82); - MP_WritePhyUshort(sc, 0x14, 0xcaff); - MP_WritePhyUshort(sc, 0x14, 0xcbff); - MP_WritePhyUshort(sc, 0x14, 0xa921); - MP_WritePhyUshort(sc, 0x14, 0xce02); - MP_WritePhyUshort(sc, 0x14, 0xe070); - MP_WritePhyUshort(sc, 0x14, 0x0f10); - MP_WritePhyUshort(sc, 0x14, 0xaf01); - MP_WritePhyUshort(sc, 0x14, 0x8f01); - MP_WritePhyUshort(sc, 0x14, 0x1766); - MP_WritePhyUshort(sc, 0x14, 0x8e02); - MP_WritePhyUshort(sc, 0x14, 0x1787); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x609c); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7fa4); - MP_WritePhyUshort(sc, 0x14, 0x2cd4); - MP_WritePhyUshort(sc, 0x14, 0x1ce9); - MP_WritePhyUshort(sc, 0x14, 0xce04); - MP_WritePhyUshort(sc, 0x14, 0xe070); - MP_WritePhyUshort(sc, 0x14, 0x0f20); - MP_WritePhyUshort(sc, 0x14, 0xaf01); - MP_WritePhyUshort(sc, 0x14, 0x8f01); - MP_WritePhyUshort(sc, 0x14, 0x1766); - MP_WritePhyUshort(sc, 0x14, 0x8e04); - MP_WritePhyUshort(sc, 0x14, 0x6044); - MP_WritePhyUshort(sc, 0x14, 0x2cd4); - MP_WritePhyUshort(sc, 0x14, 0xa520); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4043); - MP_WritePhyUshort(sc, 0x14, 0x2cc1); - MP_WritePhyUshort(sc, 0x14, 0xe00f); - MP_WritePhyUshort(sc, 0x14, 0x0501); - MP_WritePhyUshort(sc, 0x14, 0x1cef); - MP_WritePhyUshort(sc, 0x14, 0xb801); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x4060); - MP_WritePhyUshort(sc, 0x14, 0x7fc4); - MP_WritePhyUshort(sc, 0x14, 0x2cd4); - MP_WritePhyUshort(sc, 0x14, 0x1cf5); - MP_WritePhyUshort(sc, 0x14, 0xe00f); - MP_WritePhyUshort(sc, 0x14, 0x0502); - MP_WritePhyUshort(sc, 0x14, 0x1cef); - MP_WritePhyUshort(sc, 0x14, 0xb802); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x4061); - MP_WritePhyUshort(sc, 0x14, 0x7fc4); - MP_WritePhyUshort(sc, 0x14, 0x2cd4); - MP_WritePhyUshort(sc, 0x14, 0x1cf5); - MP_WritePhyUshort(sc, 0x14, 0xe00f); - MP_WritePhyUshort(sc, 0x14, 0x0504); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x6099); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7fa4); - MP_WritePhyUshort(sc, 0x14, 0x2cd4); - MP_WritePhyUshort(sc, 0x14, 0xc17f); - MP_WritePhyUshort(sc, 0x14, 0xc200); - MP_WritePhyUshort(sc, 0x14, 0xc43f); - MP_WritePhyUshort(sc, 0x14, 0xcc03); - MP_WritePhyUshort(sc, 0x14, 0xa701); - MP_WritePhyUshort(sc, 0x14, 0xa510); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4018); - MP_WritePhyUshort(sc, 0x14, 0x9910); - MP_WritePhyUshort(sc, 0x14, 0x8510); - MP_WritePhyUshort(sc, 0x14, 0x2860); - MP_WritePhyUshort(sc, 0x14, 0xe00f); - MP_WritePhyUshort(sc, 0x14, 0x0504); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x6099); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7fa4); - MP_WritePhyUshort(sc, 0x14, 0x2cd4); - MP_WritePhyUshort(sc, 0x14, 0xa608); - MP_WritePhyUshort(sc, 0x14, 0xc17d); - MP_WritePhyUshort(sc, 0x14, 0xc200); - MP_WritePhyUshort(sc, 0x14, 0xc43f); - MP_WritePhyUshort(sc, 0x14, 0xcc03); - MP_WritePhyUshort(sc, 0x14, 0xa701); - MP_WritePhyUshort(sc, 0x14, 0xa510); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4018); - MP_WritePhyUshort(sc, 0x14, 0x9910); - MP_WritePhyUshort(sc, 0x14, 0x8510); - MP_WritePhyUshort(sc, 0x14, 0x2926); - MP_WritePhyUshort(sc, 0x14, 0x1792); - MP_WritePhyUshort(sc, 0x14, 0x27db); - MP_WritePhyUshort(sc, 0x14, 0xc000); - MP_WritePhyUshort(sc, 0x14, 0xc100); - MP_WritePhyUshort(sc, 0x14, 0xc200); - MP_WritePhyUshort(sc, 0x14, 0xc300); - MP_WritePhyUshort(sc, 0x14, 0xc400); - MP_WritePhyUshort(sc, 0x14, 0xc500); - MP_WritePhyUshort(sc, 0x14, 0xc600); - MP_WritePhyUshort(sc, 0x14, 0xc7c1); - MP_WritePhyUshort(sc, 0x14, 0xc800); - MP_WritePhyUshort(sc, 0x14, 0xcc00); - MP_WritePhyUshort(sc, 0x14, 0x0800); - MP_WritePhyUshort(sc, 0x14, 0xca0f); - MP_WritePhyUshort(sc, 0x14, 0xcbff); - MP_WritePhyUshort(sc, 0x14, 0xa901); - MP_WritePhyUshort(sc, 0x14, 0x8902); - MP_WritePhyUshort(sc, 0x14, 0xc900); - MP_WritePhyUshort(sc, 0x14, 0xca00); - MP_WritePhyUshort(sc, 0x14, 0xcb00); - MP_WritePhyUshort(sc, 0x14, 0x0800); - MP_WritePhyUshort(sc, 0x14, 0xb804); - MP_WritePhyUshort(sc, 0x14, 0x0800); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x6044); - MP_WritePhyUshort(sc, 0x14, 0x9804); - MP_WritePhyUshort(sc, 0x14, 0x0800); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x6099); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7fa4); - MP_WritePhyUshort(sc, 0x14, 0x2cd4); - MP_WritePhyUshort(sc, 0x14, 0x0800); - MP_WritePhyUshort(sc, 0x14, 0xa510); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x6098); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7fa4); - MP_WritePhyUshort(sc, 0x14, 0x2cd4); - MP_WritePhyUshort(sc, 0x14, 0x8510); - MP_WritePhyUshort(sc, 0x14, 0x0800); - MP_WritePhyUshort(sc, 0x14, 0xd711); - MP_WritePhyUshort(sc, 0x14, 0x3003); - MP_WritePhyUshort(sc, 0x14, 0x1d01); - MP_WritePhyUshort(sc, 0x14, 0x2d0b); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x60be); - MP_WritePhyUshort(sc, 0x14, 0xe060); - MP_WritePhyUshort(sc, 0x14, 0x0920); - MP_WritePhyUshort(sc, 0x14, 0x1cd6); - MP_WritePhyUshort(sc, 0x14, 0x2c89); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x3063); - MP_WritePhyUshort(sc, 0x14, 0x1948); - MP_WritePhyUshort(sc, 0x14, 0x288a); - MP_WritePhyUshort(sc, 0x14, 0x1cd6); - MP_WritePhyUshort(sc, 0x14, 0x29bd); - MP_WritePhyUshort(sc, 0x14, 0xa802); - MP_WritePhyUshort(sc, 0x14, 0xa303); - MP_WritePhyUshort(sc, 0x14, 0x843f); - MP_WritePhyUshort(sc, 0x14, 0x81ff); - MP_WritePhyUshort(sc, 0x14, 0x8208); - MP_WritePhyUshort(sc, 0x14, 0xa201); - MP_WritePhyUshort(sc, 0x14, 0xc001); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x30a0); - MP_WritePhyUshort(sc, 0x14, 0x0d1c); - MP_WritePhyUshort(sc, 0x14, 0x30a0); - MP_WritePhyUshort(sc, 0x14, 0x3d13); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7f4c); - MP_WritePhyUshort(sc, 0x14, 0x2ab6); - MP_WritePhyUshort(sc, 0x14, 0xe003); - MP_WritePhyUshort(sc, 0x14, 0x0202); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x6090); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7fac); - MP_WritePhyUshort(sc, 0x14, 0x2ab6); - MP_WritePhyUshort(sc, 0x14, 0xa20c); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x6091); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7fac); - MP_WritePhyUshort(sc, 0x14, 0x2ab6); - MP_WritePhyUshort(sc, 0x14, 0x820e); - MP_WritePhyUshort(sc, 0x14, 0xa3e0); - MP_WritePhyUshort(sc, 0x14, 0xa520); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x609d); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7fac); - MP_WritePhyUshort(sc, 0x14, 0x2ab6); - MP_WritePhyUshort(sc, 0x14, 0x8520); - MP_WritePhyUshort(sc, 0x14, 0x6703); - MP_WritePhyUshort(sc, 0x14, 0x2d34); - MP_WritePhyUshort(sc, 0x14, 0xa13e); - MP_WritePhyUshort(sc, 0x14, 0xc001); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4000); - MP_WritePhyUshort(sc, 0x14, 0x6046); - MP_WritePhyUshort(sc, 0x14, 0x2d0d); - MP_WritePhyUshort(sc, 0x14, 0xa43f); - MP_WritePhyUshort(sc, 0x14, 0xa101); - MP_WritePhyUshort(sc, 0x14, 0xc020); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x3121); - MP_WritePhyUshort(sc, 0x14, 0x0d45); - MP_WritePhyUshort(sc, 0x14, 0x30c0); - MP_WritePhyUshort(sc, 0x14, 0x3d0d); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7f4c); - MP_WritePhyUshort(sc, 0x14, 0x2ab6); - MP_WritePhyUshort(sc, 0x14, 0xa540); - MP_WritePhyUshort(sc, 0x14, 0xc001); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4001); - MP_WritePhyUshort(sc, 0x14, 0xe00f); - MP_WritePhyUshort(sc, 0x14, 0x0501); - MP_WritePhyUshort(sc, 0x14, 0x1dac); - MP_WritePhyUshort(sc, 0x14, 0xc1c4); - MP_WritePhyUshort(sc, 0x14, 0xa268); - MP_WritePhyUshort(sc, 0x14, 0xa303); - MP_WritePhyUshort(sc, 0x14, 0x8420); - MP_WritePhyUshort(sc, 0x14, 0xe00f); - MP_WritePhyUshort(sc, 0x14, 0x0502); - MP_WritePhyUshort(sc, 0x14, 0x1dac); - MP_WritePhyUshort(sc, 0x14, 0xc002); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4000); - MP_WritePhyUshort(sc, 0x14, 0x8208); - MP_WritePhyUshort(sc, 0x14, 0x8410); - MP_WritePhyUshort(sc, 0x14, 0xa121); - MP_WritePhyUshort(sc, 0x14, 0xc002); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4000); - MP_WritePhyUshort(sc, 0x14, 0x8120); - MP_WritePhyUshort(sc, 0x14, 0x8180); - MP_WritePhyUshort(sc, 0x14, 0x1d97); - MP_WritePhyUshort(sc, 0x14, 0xa180); - MP_WritePhyUshort(sc, 0x14, 0xa13a); - MP_WritePhyUshort(sc, 0x14, 0x8240); - MP_WritePhyUshort(sc, 0x14, 0xa430); - MP_WritePhyUshort(sc, 0x14, 0xc010); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x30e1); - MP_WritePhyUshort(sc, 0x14, 0x0abc); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7f8c); - MP_WritePhyUshort(sc, 0x14, 0x2ab6); - MP_WritePhyUshort(sc, 0x14, 0xa480); - MP_WritePhyUshort(sc, 0x14, 0xa230); - MP_WritePhyUshort(sc, 0x14, 0xa303); - MP_WritePhyUshort(sc, 0x14, 0xc001); - MP_WritePhyUshort(sc, 0x14, 0xd70c); - MP_WritePhyUshort(sc, 0x14, 0x4124); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x6120); - MP_WritePhyUshort(sc, 0x14, 0xd711); - MP_WritePhyUshort(sc, 0x14, 0x3128); - MP_WritePhyUshort(sc, 0x14, 0x3d76); - MP_WritePhyUshort(sc, 0x14, 0x2d70); - MP_WritePhyUshort(sc, 0x14, 0xa801); - MP_WritePhyUshort(sc, 0x14, 0x2d6c); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4000); - MP_WritePhyUshort(sc, 0x14, 0xe018); - MP_WritePhyUshort(sc, 0x14, 0x0208); - MP_WritePhyUshort(sc, 0x14, 0xa1f8); - MP_WritePhyUshort(sc, 0x14, 0x8480); - MP_WritePhyUshort(sc, 0x14, 0xc004); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4000); - MP_WritePhyUshort(sc, 0x14, 0x6046); - MP_WritePhyUshort(sc, 0x14, 0x2d0d); - MP_WritePhyUshort(sc, 0x14, 0xa43f); - MP_WritePhyUshort(sc, 0x14, 0xa105); - MP_WritePhyUshort(sc, 0x14, 0x8228); - MP_WritePhyUshort(sc, 0x14, 0xc004); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4000); - MP_WritePhyUshort(sc, 0x14, 0x81bc); - MP_WritePhyUshort(sc, 0x14, 0xa220); - MP_WritePhyUshort(sc, 0x14, 0x1d97); - MP_WritePhyUshort(sc, 0x14, 0x8220); - MP_WritePhyUshort(sc, 0x14, 0xa1bc); - MP_WritePhyUshort(sc, 0x14, 0xc040); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x30e1); - MP_WritePhyUshort(sc, 0x14, 0x0abc); - MP_WritePhyUshort(sc, 0x14, 0x30e1); - MP_WritePhyUshort(sc, 0x14, 0x3d0d); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7f4c); - MP_WritePhyUshort(sc, 0x14, 0x2ab6); - MP_WritePhyUshort(sc, 0x14, 0xa802); - MP_WritePhyUshort(sc, 0x14, 0xd70c); - MP_WritePhyUshort(sc, 0x14, 0x4244); - MP_WritePhyUshort(sc, 0x14, 0xa301); - MP_WritePhyUshort(sc, 0x14, 0xc004); - MP_WritePhyUshort(sc, 0x14, 0xd711); - MP_WritePhyUshort(sc, 0x14, 0x3128); - MP_WritePhyUshort(sc, 0x14, 0x3da5); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x5f80); - MP_WritePhyUshort(sc, 0x14, 0xd711); - MP_WritePhyUshort(sc, 0x14, 0x3109); - MP_WritePhyUshort(sc, 0x14, 0x3da7); - MP_WritePhyUshort(sc, 0x14, 0x2dab); - MP_WritePhyUshort(sc, 0x14, 0xa801); - MP_WritePhyUshort(sc, 0x14, 0x2d9a); - MP_WritePhyUshort(sc, 0x14, 0xa802); - MP_WritePhyUshort(sc, 0x14, 0xc004); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4000); - MP_WritePhyUshort(sc, 0x14, 0x0800); - MP_WritePhyUshort(sc, 0x14, 0xa510); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x609a); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7fac); - MP_WritePhyUshort(sc, 0x14, 0x2ab6); - MP_WritePhyUshort(sc, 0x14, 0x8510); - MP_WritePhyUshort(sc, 0x14, 0x0800); - MP_WritePhyUshort(sc, 0x13, 0xA01A); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x13, 0xA006); - MP_WritePhyUshort(sc, 0x14, 0x0ad6); - MP_WritePhyUshort(sc, 0x13, 0xA004); - MP_WritePhyUshort(sc, 0x14, 0x07f5); - MP_WritePhyUshort(sc, 0x13, 0xA002); - MP_WritePhyUshort(sc, 0x14, 0x06a9); - MP_WritePhyUshort(sc, 0x13, 0xA000); - MP_WritePhyUshort(sc, 0x14, 0xf069); - MP_WritePhyUshort(sc, 0x13, 0xB820); - MP_WritePhyUshort(sc, 0x14, 0x0210); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x83a0); - MP_WritePhyUshort(sc, 0x14, 0xaf83); - MP_WritePhyUshort(sc, 0x14, 0xacaf); - MP_WritePhyUshort(sc, 0x14, 0x83b8); - MP_WritePhyUshort(sc, 0x14, 0xaf83); - MP_WritePhyUshort(sc, 0x14, 0xcdaf); - MP_WritePhyUshort(sc, 0x14, 0x83d3); - MP_WritePhyUshort(sc, 0x14, 0x0204); - MP_WritePhyUshort(sc, 0x14, 0x9a02); - MP_WritePhyUshort(sc, 0x14, 0x09a9); - MP_WritePhyUshort(sc, 0x14, 0x0284); - MP_WritePhyUshort(sc, 0x14, 0x61af); - MP_WritePhyUshort(sc, 0x14, 0x02fc); - MP_WritePhyUshort(sc, 0x14, 0xad20); - MP_WritePhyUshort(sc, 0x14, 0x0302); - MP_WritePhyUshort(sc, 0x14, 0x867c); - MP_WritePhyUshort(sc, 0x14, 0xad21); - MP_WritePhyUshort(sc, 0x14, 0x0302); - MP_WritePhyUshort(sc, 0x14, 0x85c9); - MP_WritePhyUshort(sc, 0x14, 0xad22); - MP_WritePhyUshort(sc, 0x14, 0x0302); - MP_WritePhyUshort(sc, 0x14, 0x1bc0); - MP_WritePhyUshort(sc, 0x14, 0xaf17); - MP_WritePhyUshort(sc, 0x14, 0xe302); - MP_WritePhyUshort(sc, 0x14, 0x8703); - MP_WritePhyUshort(sc, 0x14, 0xaf18); - MP_WritePhyUshort(sc, 0x14, 0x6201); - MP_WritePhyUshort(sc, 0x14, 0x06e0); - MP_WritePhyUshort(sc, 0x14, 0x8148); - MP_WritePhyUshort(sc, 0x14, 0xaf3c); - MP_WritePhyUshort(sc, 0x14, 0x69f8); - MP_WritePhyUshort(sc, 0x14, 0xf9fa); - MP_WritePhyUshort(sc, 0x14, 0xef69); - MP_WritePhyUshort(sc, 0x14, 0xee80); - MP_WritePhyUshort(sc, 0x14, 0x10f7); - MP_WritePhyUshort(sc, 0x14, 0xee80); - MP_WritePhyUshort(sc, 0x14, 0x131f); - MP_WritePhyUshort(sc, 0x14, 0xd104); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0xf302); - MP_WritePhyUshort(sc, 0x14, 0x4259); - MP_WritePhyUshort(sc, 0x14, 0x0287); - MP_WritePhyUshort(sc, 0x14, 0x88bf); - MP_WritePhyUshort(sc, 0x14, 0x87cf); - MP_WritePhyUshort(sc, 0x14, 0xd7b8); - MP_WritePhyUshort(sc, 0x14, 0x22d0); - MP_WritePhyUshort(sc, 0x14, 0x0c02); - MP_WritePhyUshort(sc, 0x14, 0x4252); - MP_WritePhyUshort(sc, 0x14, 0xee80); - MP_WritePhyUshort(sc, 0x14, 0xcda0); - MP_WritePhyUshort(sc, 0x14, 0xee80); - MP_WritePhyUshort(sc, 0x14, 0xce8b); - MP_WritePhyUshort(sc, 0x14, 0xee80); - MP_WritePhyUshort(sc, 0x14, 0xd1f5); - MP_WritePhyUshort(sc, 0x14, 0xee80); - MP_WritePhyUshort(sc, 0x14, 0xd2a9); - MP_WritePhyUshort(sc, 0x14, 0xee80); - MP_WritePhyUshort(sc, 0x14, 0xd30a); - MP_WritePhyUshort(sc, 0x14, 0xee80); - MP_WritePhyUshort(sc, 0x14, 0xf010); - MP_WritePhyUshort(sc, 0x14, 0xee80); - MP_WritePhyUshort(sc, 0x14, 0xf38f); - MP_WritePhyUshort(sc, 0x14, 0xee81); - MP_WritePhyUshort(sc, 0x14, 0x011e); - MP_WritePhyUshort(sc, 0x14, 0xee81); - MP_WritePhyUshort(sc, 0x14, 0x0b4a); - MP_WritePhyUshort(sc, 0x14, 0xee81); - MP_WritePhyUshort(sc, 0x14, 0x0c7c); - MP_WritePhyUshort(sc, 0x14, 0xee81); - MP_WritePhyUshort(sc, 0x14, 0x127f); - MP_WritePhyUshort(sc, 0x14, 0xd100); - MP_WritePhyUshort(sc, 0x14, 0x0210); - MP_WritePhyUshort(sc, 0x14, 0xb5ee); - MP_WritePhyUshort(sc, 0x14, 0x8088); - MP_WritePhyUshort(sc, 0x14, 0xa4ee); - MP_WritePhyUshort(sc, 0x14, 0x8089); - MP_WritePhyUshort(sc, 0x14, 0x44ee); - MP_WritePhyUshort(sc, 0x14, 0x809a); - MP_WritePhyUshort(sc, 0x14, 0xa4ee); - MP_WritePhyUshort(sc, 0x14, 0x809b); - MP_WritePhyUshort(sc, 0x14, 0x44ee); - MP_WritePhyUshort(sc, 0x14, 0x809c); - MP_WritePhyUshort(sc, 0x14, 0xa7ee); - MP_WritePhyUshort(sc, 0x14, 0x80a5); - MP_WritePhyUshort(sc, 0x14, 0xa7d2); - MP_WritePhyUshort(sc, 0x14, 0x0002); - MP_WritePhyUshort(sc, 0x14, 0x0e66); - MP_WritePhyUshort(sc, 0x14, 0x0285); - MP_WritePhyUshort(sc, 0x14, 0xc0ee); - MP_WritePhyUshort(sc, 0x14, 0x87fc); - MP_WritePhyUshort(sc, 0x14, 0x00e0); - MP_WritePhyUshort(sc, 0x14, 0x8245); - MP_WritePhyUshort(sc, 0x14, 0xf622); - MP_WritePhyUshort(sc, 0x14, 0xe482); - MP_WritePhyUshort(sc, 0x14, 0x45ef); - MP_WritePhyUshort(sc, 0x14, 0x96fe); - MP_WritePhyUshort(sc, 0x14, 0xfdfc); - MP_WritePhyUshort(sc, 0x14, 0x0402); - MP_WritePhyUshort(sc, 0x14, 0x847a); - MP_WritePhyUshort(sc, 0x14, 0x0284); - MP_WritePhyUshort(sc, 0x14, 0xb302); - MP_WritePhyUshort(sc, 0x14, 0x0cab); - MP_WritePhyUshort(sc, 0x14, 0x020c); - MP_WritePhyUshort(sc, 0x14, 0xc402); - MP_WritePhyUshort(sc, 0x14, 0x0cef); - MP_WritePhyUshort(sc, 0x14, 0x020d); - MP_WritePhyUshort(sc, 0x14, 0x0802); - MP_WritePhyUshort(sc, 0x14, 0x0d33); - MP_WritePhyUshort(sc, 0x14, 0x020c); - MP_WritePhyUshort(sc, 0x14, 0x3d04); - MP_WritePhyUshort(sc, 0x14, 0xf8fa); - MP_WritePhyUshort(sc, 0x14, 0xef69); - MP_WritePhyUshort(sc, 0x14, 0xe182); - MP_WritePhyUshort(sc, 0x14, 0x2fac); - MP_WritePhyUshort(sc, 0x14, 0x291a); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x24ac); - MP_WritePhyUshort(sc, 0x14, 0x2102); - MP_WritePhyUshort(sc, 0x14, 0xae22); - MP_WritePhyUshort(sc, 0x14, 0x0210); - MP_WritePhyUshort(sc, 0x14, 0x57f6); - MP_WritePhyUshort(sc, 0x14, 0x21e4); - MP_WritePhyUshort(sc, 0x14, 0x8224); - MP_WritePhyUshort(sc, 0x14, 0xd101); - MP_WritePhyUshort(sc, 0x14, 0xbf44); - MP_WritePhyUshort(sc, 0x14, 0xd202); - MP_WritePhyUshort(sc, 0x14, 0x4259); - MP_WritePhyUshort(sc, 0x14, 0xae10); - MP_WritePhyUshort(sc, 0x14, 0x0212); - MP_WritePhyUshort(sc, 0x14, 0x4cf6); - MP_WritePhyUshort(sc, 0x14, 0x29e5); - MP_WritePhyUshort(sc, 0x14, 0x822f); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x24f6); - MP_WritePhyUshort(sc, 0x14, 0x21e4); - MP_WritePhyUshort(sc, 0x14, 0x8224); - MP_WritePhyUshort(sc, 0x14, 0xef96); - MP_WritePhyUshort(sc, 0x14, 0xfefc); - MP_WritePhyUshort(sc, 0x14, 0x04f8); - MP_WritePhyUshort(sc, 0x14, 0xe182); - MP_WritePhyUshort(sc, 0x14, 0x2fac); - MP_WritePhyUshort(sc, 0x14, 0x2a18); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x24ac); - MP_WritePhyUshort(sc, 0x14, 0x2202); - MP_WritePhyUshort(sc, 0x14, 0xae26); - MP_WritePhyUshort(sc, 0x14, 0x0284); - MP_WritePhyUshort(sc, 0x14, 0xf802); - MP_WritePhyUshort(sc, 0x14, 0x8565); - MP_WritePhyUshort(sc, 0x14, 0xd101); - MP_WritePhyUshort(sc, 0x14, 0xbf44); - MP_WritePhyUshort(sc, 0x14, 0xd502); - MP_WritePhyUshort(sc, 0x14, 0x4259); - MP_WritePhyUshort(sc, 0x14, 0xae0e); - MP_WritePhyUshort(sc, 0x14, 0x0284); - MP_WritePhyUshort(sc, 0x14, 0xea02); - MP_WritePhyUshort(sc, 0x14, 0x85a9); - MP_WritePhyUshort(sc, 0x14, 0xe182); - MP_WritePhyUshort(sc, 0x14, 0x2ff6); - MP_WritePhyUshort(sc, 0x14, 0x2ae5); - MP_WritePhyUshort(sc, 0x14, 0x822f); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x24f6); - MP_WritePhyUshort(sc, 0x14, 0x22e4); - MP_WritePhyUshort(sc, 0x14, 0x8224); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xf9e2); - MP_WritePhyUshort(sc, 0x14, 0x8011); - MP_WritePhyUshort(sc, 0x14, 0xad31); - MP_WritePhyUshort(sc, 0x14, 0x05d2); - MP_WritePhyUshort(sc, 0x14, 0x0002); - MP_WritePhyUshort(sc, 0x14, 0x0e66); - MP_WritePhyUshort(sc, 0x14, 0xfd04); - MP_WritePhyUshort(sc, 0x14, 0xf8f9); - MP_WritePhyUshort(sc, 0x14, 0xfaef); - MP_WritePhyUshort(sc, 0x14, 0x69e0); - MP_WritePhyUshort(sc, 0x14, 0x8011); - MP_WritePhyUshort(sc, 0x14, 0xad21); - MP_WritePhyUshort(sc, 0x14, 0x5cbf); - MP_WritePhyUshort(sc, 0x14, 0x43be); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x97ac); - MP_WritePhyUshort(sc, 0x14, 0x281b); - MP_WritePhyUshort(sc, 0x14, 0xbf43); - MP_WritePhyUshort(sc, 0x14, 0xc102); - MP_WritePhyUshort(sc, 0x14, 0x4297); - MP_WritePhyUshort(sc, 0x14, 0xac28); - MP_WritePhyUshort(sc, 0x14, 0x12bf); - MP_WritePhyUshort(sc, 0x14, 0x43c7); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x97ac); - MP_WritePhyUshort(sc, 0x14, 0x2804); - MP_WritePhyUshort(sc, 0x14, 0xd300); - MP_WritePhyUshort(sc, 0x14, 0xae07); - MP_WritePhyUshort(sc, 0x14, 0xd306); - MP_WritePhyUshort(sc, 0x14, 0xaf85); - MP_WritePhyUshort(sc, 0x14, 0x56d3); - MP_WritePhyUshort(sc, 0x14, 0x03e0); - MP_WritePhyUshort(sc, 0x14, 0x8011); - MP_WritePhyUshort(sc, 0x14, 0xad26); - MP_WritePhyUshort(sc, 0x14, 0x25bf); - MP_WritePhyUshort(sc, 0x14, 0x4559); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x97e2); - MP_WritePhyUshort(sc, 0x14, 0x8073); - MP_WritePhyUshort(sc, 0x14, 0x0d21); - MP_WritePhyUshort(sc, 0x14, 0xf637); - MP_WritePhyUshort(sc, 0x14, 0x0d11); - MP_WritePhyUshort(sc, 0x14, 0xf62f); - MP_WritePhyUshort(sc, 0x14, 0x1b21); - MP_WritePhyUshort(sc, 0x14, 0xaa02); - MP_WritePhyUshort(sc, 0x14, 0xae10); - MP_WritePhyUshort(sc, 0x14, 0xe280); - MP_WritePhyUshort(sc, 0x14, 0x740d); - MP_WritePhyUshort(sc, 0x14, 0x21f6); - MP_WritePhyUshort(sc, 0x14, 0x371b); - MP_WritePhyUshort(sc, 0x14, 0x21aa); - MP_WritePhyUshort(sc, 0x14, 0x0313); - MP_WritePhyUshort(sc, 0x14, 0xae02); - MP_WritePhyUshort(sc, 0x14, 0x2b02); - MP_WritePhyUshort(sc, 0x14, 0x020e); - MP_WritePhyUshort(sc, 0x14, 0x5102); - MP_WritePhyUshort(sc, 0x14, 0x0e66); - MP_WritePhyUshort(sc, 0x14, 0x020f); - MP_WritePhyUshort(sc, 0x14, 0xa3ef); - MP_WritePhyUshort(sc, 0x14, 0x96fe); - MP_WritePhyUshort(sc, 0x14, 0xfdfc); - MP_WritePhyUshort(sc, 0x14, 0x04f8); - MP_WritePhyUshort(sc, 0x14, 0xf9fa); - MP_WritePhyUshort(sc, 0x14, 0xef69); - MP_WritePhyUshort(sc, 0x14, 0xe080); - MP_WritePhyUshort(sc, 0x14, 0x12ad); - MP_WritePhyUshort(sc, 0x14, 0x2733); - MP_WritePhyUshort(sc, 0x14, 0xbf43); - MP_WritePhyUshort(sc, 0x14, 0xbe02); - MP_WritePhyUshort(sc, 0x14, 0x4297); - MP_WritePhyUshort(sc, 0x14, 0xac28); - MP_WritePhyUshort(sc, 0x14, 0x09bf); - MP_WritePhyUshort(sc, 0x14, 0x43c1); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x97ad); - MP_WritePhyUshort(sc, 0x14, 0x2821); - MP_WritePhyUshort(sc, 0x14, 0xbf45); - MP_WritePhyUshort(sc, 0x14, 0x5902); - MP_WritePhyUshort(sc, 0x14, 0x4297); - MP_WritePhyUshort(sc, 0x14, 0xe387); - MP_WritePhyUshort(sc, 0x14, 0xffd2); - MP_WritePhyUshort(sc, 0x14, 0x001b); - MP_WritePhyUshort(sc, 0x14, 0x45ac); - MP_WritePhyUshort(sc, 0x14, 0x2711); - MP_WritePhyUshort(sc, 0x14, 0xe187); - MP_WritePhyUshort(sc, 0x14, 0xfebf); - MP_WritePhyUshort(sc, 0x14, 0x87e4); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x590d); - MP_WritePhyUshort(sc, 0x14, 0x11bf); - MP_WritePhyUshort(sc, 0x14, 0x87e7); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x59ef); - MP_WritePhyUshort(sc, 0x14, 0x96fe); - MP_WritePhyUshort(sc, 0x14, 0xfdfc); - MP_WritePhyUshort(sc, 0x14, 0x04f8); - MP_WritePhyUshort(sc, 0x14, 0xfaef); - MP_WritePhyUshort(sc, 0x14, 0x69d1); - MP_WritePhyUshort(sc, 0x14, 0x00bf); - MP_WritePhyUshort(sc, 0x14, 0x87e4); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x59bf); - MP_WritePhyUshort(sc, 0x14, 0x87e7); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x59ef); - MP_WritePhyUshort(sc, 0x14, 0x96fe); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xee87); - MP_WritePhyUshort(sc, 0x14, 0xff46); - MP_WritePhyUshort(sc, 0x14, 0xee87); - MP_WritePhyUshort(sc, 0x14, 0xfe01); - MP_WritePhyUshort(sc, 0x14, 0x04f8); - MP_WritePhyUshort(sc, 0x14, 0xfaef); - MP_WritePhyUshort(sc, 0x14, 0x69e0); - MP_WritePhyUshort(sc, 0x14, 0x8241); - MP_WritePhyUshort(sc, 0x14, 0xa000); - MP_WritePhyUshort(sc, 0x14, 0x0502); - MP_WritePhyUshort(sc, 0x14, 0x85eb); - MP_WritePhyUshort(sc, 0x14, 0xae0e); - MP_WritePhyUshort(sc, 0x14, 0xa001); - MP_WritePhyUshort(sc, 0x14, 0x0502); - MP_WritePhyUshort(sc, 0x14, 0x1a5a); - MP_WritePhyUshort(sc, 0x14, 0xae06); - MP_WritePhyUshort(sc, 0x14, 0xa002); - MP_WritePhyUshort(sc, 0x14, 0x0302); - MP_WritePhyUshort(sc, 0x14, 0x1ae6); - MP_WritePhyUshort(sc, 0x14, 0xef96); - MP_WritePhyUshort(sc, 0x14, 0xfefc); - MP_WritePhyUshort(sc, 0x14, 0x04f8); - MP_WritePhyUshort(sc, 0x14, 0xf9fa); - MP_WritePhyUshort(sc, 0x14, 0xef69); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x29f6); - MP_WritePhyUshort(sc, 0x14, 0x21e4); - MP_WritePhyUshort(sc, 0x14, 0x8229); - MP_WritePhyUshort(sc, 0x14, 0xe080); - MP_WritePhyUshort(sc, 0x14, 0x10ac); - MP_WritePhyUshort(sc, 0x14, 0x2202); - MP_WritePhyUshort(sc, 0x14, 0xae76); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x27f7); - MP_WritePhyUshort(sc, 0x14, 0x21e4); - MP_WritePhyUshort(sc, 0x14, 0x8227); - MP_WritePhyUshort(sc, 0x14, 0xbf43); - MP_WritePhyUshort(sc, 0x14, 0x1302); - MP_WritePhyUshort(sc, 0x14, 0x4297); - MP_WritePhyUshort(sc, 0x14, 0xef21); - MP_WritePhyUshort(sc, 0x14, 0xbf43); - MP_WritePhyUshort(sc, 0x14, 0x1602); - MP_WritePhyUshort(sc, 0x14, 0x4297); - MP_WritePhyUshort(sc, 0x14, 0x0c11); - MP_WritePhyUshort(sc, 0x14, 0x1e21); - MP_WritePhyUshort(sc, 0x14, 0xbf43); - MP_WritePhyUshort(sc, 0x14, 0x1902); - MP_WritePhyUshort(sc, 0x14, 0x4297); - MP_WritePhyUshort(sc, 0x14, 0x0c12); - MP_WritePhyUshort(sc, 0x14, 0x1e21); - MP_WritePhyUshort(sc, 0x14, 0xe682); - MP_WritePhyUshort(sc, 0x14, 0x43a2); - MP_WritePhyUshort(sc, 0x14, 0x000a); - MP_WritePhyUshort(sc, 0x14, 0xe182); - MP_WritePhyUshort(sc, 0x14, 0x27f6); - MP_WritePhyUshort(sc, 0x14, 0x29e5); - MP_WritePhyUshort(sc, 0x14, 0x8227); - MP_WritePhyUshort(sc, 0x14, 0xae42); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x44f7); - MP_WritePhyUshort(sc, 0x14, 0x21e4); - MP_WritePhyUshort(sc, 0x14, 0x8244); - MP_WritePhyUshort(sc, 0x14, 0x0246); - MP_WritePhyUshort(sc, 0x14, 0xaebf); - MP_WritePhyUshort(sc, 0x14, 0x4325); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x97ef); - MP_WritePhyUshort(sc, 0x14, 0x21bf); - MP_WritePhyUshort(sc, 0x14, 0x431c); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x970c); - MP_WritePhyUshort(sc, 0x14, 0x121e); - MP_WritePhyUshort(sc, 0x14, 0x21bf); - MP_WritePhyUshort(sc, 0x14, 0x431f); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x970c); - MP_WritePhyUshort(sc, 0x14, 0x131e); - MP_WritePhyUshort(sc, 0x14, 0x21bf); - MP_WritePhyUshort(sc, 0x14, 0x4328); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x970c); - MP_WritePhyUshort(sc, 0x14, 0x141e); - MP_WritePhyUshort(sc, 0x14, 0x21bf); - MP_WritePhyUshort(sc, 0x14, 0x44b1); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x970c); - MP_WritePhyUshort(sc, 0x14, 0x161e); - MP_WritePhyUshort(sc, 0x14, 0x21e6); - MP_WritePhyUshort(sc, 0x14, 0x8242); - MP_WritePhyUshort(sc, 0x14, 0xee82); - MP_WritePhyUshort(sc, 0x14, 0x4101); - MP_WritePhyUshort(sc, 0x14, 0xef96); - MP_WritePhyUshort(sc, 0x14, 0xfefd); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xf8fa); - MP_WritePhyUshort(sc, 0x14, 0xef69); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x46a0); - MP_WritePhyUshort(sc, 0x14, 0x0005); - MP_WritePhyUshort(sc, 0x14, 0x0286); - MP_WritePhyUshort(sc, 0x14, 0x96ae); - MP_WritePhyUshort(sc, 0x14, 0x06a0); - MP_WritePhyUshort(sc, 0x14, 0x0103); - MP_WritePhyUshort(sc, 0x14, 0x0219); - MP_WritePhyUshort(sc, 0x14, 0x19ef); - MP_WritePhyUshort(sc, 0x14, 0x96fe); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xf8fa); - MP_WritePhyUshort(sc, 0x14, 0xef69); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x29f6); - MP_WritePhyUshort(sc, 0x14, 0x20e4); - MP_WritePhyUshort(sc, 0x14, 0x8229); - MP_WritePhyUshort(sc, 0x14, 0xe080); - MP_WritePhyUshort(sc, 0x14, 0x10ac); - MP_WritePhyUshort(sc, 0x14, 0x2102); - MP_WritePhyUshort(sc, 0x14, 0xae54); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x27f7); - MP_WritePhyUshort(sc, 0x14, 0x20e4); - MP_WritePhyUshort(sc, 0x14, 0x8227); - MP_WritePhyUshort(sc, 0x14, 0xbf42); - MP_WritePhyUshort(sc, 0x14, 0xe602); - MP_WritePhyUshort(sc, 0x14, 0x4297); - MP_WritePhyUshort(sc, 0x14, 0xac28); - MP_WritePhyUshort(sc, 0x14, 0x22bf); - MP_WritePhyUshort(sc, 0x14, 0x430d); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x97e5); - MP_WritePhyUshort(sc, 0x14, 0x8247); - MP_WritePhyUshort(sc, 0x14, 0xac28); - MP_WritePhyUshort(sc, 0x14, 0x20d1); - MP_WritePhyUshort(sc, 0x14, 0x03bf); - MP_WritePhyUshort(sc, 0x14, 0x4307); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x59ee); - MP_WritePhyUshort(sc, 0x14, 0x8246); - MP_WritePhyUshort(sc, 0x14, 0x00e1); - MP_WritePhyUshort(sc, 0x14, 0x8227); - MP_WritePhyUshort(sc, 0x14, 0xf628); - MP_WritePhyUshort(sc, 0x14, 0xe582); - MP_WritePhyUshort(sc, 0x14, 0x27ae); - MP_WritePhyUshort(sc, 0x14, 0x21d1); - MP_WritePhyUshort(sc, 0x14, 0x04bf); - MP_WritePhyUshort(sc, 0x14, 0x4307); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x59ae); - MP_WritePhyUshort(sc, 0x14, 0x08d1); - MP_WritePhyUshort(sc, 0x14, 0x05bf); - MP_WritePhyUshort(sc, 0x14, 0x4307); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x59e0); - MP_WritePhyUshort(sc, 0x14, 0x8244); - MP_WritePhyUshort(sc, 0x14, 0xf720); - MP_WritePhyUshort(sc, 0x14, 0xe482); - MP_WritePhyUshort(sc, 0x14, 0x4402); - MP_WritePhyUshort(sc, 0x14, 0x46ae); - MP_WritePhyUshort(sc, 0x14, 0xee82); - MP_WritePhyUshort(sc, 0x14, 0x4601); - MP_WritePhyUshort(sc, 0x14, 0xef96); - MP_WritePhyUshort(sc, 0x14, 0xfefc); - MP_WritePhyUshort(sc, 0x14, 0x04f8); - MP_WritePhyUshort(sc, 0x14, 0xfaef); - MP_WritePhyUshort(sc, 0x14, 0x69e0); - MP_WritePhyUshort(sc, 0x14, 0x8013); - MP_WritePhyUshort(sc, 0x14, 0xad24); - MP_WritePhyUshort(sc, 0x14, 0x1cbf); - MP_WritePhyUshort(sc, 0x14, 0x87f0); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x97ad); - MP_WritePhyUshort(sc, 0x14, 0x2813); - MP_WritePhyUshort(sc, 0x14, 0xe087); - MP_WritePhyUshort(sc, 0x14, 0xfca0); - MP_WritePhyUshort(sc, 0x14, 0x0005); - MP_WritePhyUshort(sc, 0x14, 0x0287); - MP_WritePhyUshort(sc, 0x14, 0x36ae); - MP_WritePhyUshort(sc, 0x14, 0x10a0); - MP_WritePhyUshort(sc, 0x14, 0x0105); - MP_WritePhyUshort(sc, 0x14, 0x0287); - MP_WritePhyUshort(sc, 0x14, 0x48ae); - MP_WritePhyUshort(sc, 0x14, 0x08e0); - MP_WritePhyUshort(sc, 0x14, 0x8230); - MP_WritePhyUshort(sc, 0x14, 0xf626); - MP_WritePhyUshort(sc, 0x14, 0xe482); - MP_WritePhyUshort(sc, 0x14, 0x30ef); - MP_WritePhyUshort(sc, 0x14, 0x96fe); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xf8e0); - MP_WritePhyUshort(sc, 0x14, 0x8245); - MP_WritePhyUshort(sc, 0x14, 0xf722); - MP_WritePhyUshort(sc, 0x14, 0xe482); - MP_WritePhyUshort(sc, 0x14, 0x4502); - MP_WritePhyUshort(sc, 0x14, 0x46ae); - MP_WritePhyUshort(sc, 0x14, 0xee87); - MP_WritePhyUshort(sc, 0x14, 0xfc01); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xf8fa); - MP_WritePhyUshort(sc, 0x14, 0xef69); - MP_WritePhyUshort(sc, 0x14, 0xfb02); - MP_WritePhyUshort(sc, 0x14, 0x46d3); - MP_WritePhyUshort(sc, 0x14, 0xad50); - MP_WritePhyUshort(sc, 0x14, 0x2fbf); - MP_WritePhyUshort(sc, 0x14, 0x87ed); - MP_WritePhyUshort(sc, 0x14, 0xd101); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x59bf); - MP_WritePhyUshort(sc, 0x14, 0x87ed); - MP_WritePhyUshort(sc, 0x14, 0xd100); - MP_WritePhyUshort(sc, 0x14, 0x0242); - MP_WritePhyUshort(sc, 0x14, 0x59e0); - MP_WritePhyUshort(sc, 0x14, 0x8245); - MP_WritePhyUshort(sc, 0x14, 0xf622); - MP_WritePhyUshort(sc, 0x14, 0xe482); - MP_WritePhyUshort(sc, 0x14, 0x4502); - MP_WritePhyUshort(sc, 0x14, 0x46ae); - MP_WritePhyUshort(sc, 0x14, 0xd100); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0xf002); - MP_WritePhyUshort(sc, 0x14, 0x4259); - MP_WritePhyUshort(sc, 0x14, 0xee87); - MP_WritePhyUshort(sc, 0x14, 0xfc00); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x30f6); - MP_WritePhyUshort(sc, 0x14, 0x26e4); - MP_WritePhyUshort(sc, 0x14, 0x8230); - MP_WritePhyUshort(sc, 0x14, 0xffef); - MP_WritePhyUshort(sc, 0x14, 0x96fe); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xf8f9); - MP_WritePhyUshort(sc, 0x14, 0xface); - MP_WritePhyUshort(sc, 0x14, 0xfaef); - MP_WritePhyUshort(sc, 0x14, 0x69fb); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0xb3d7); - MP_WritePhyUshort(sc, 0x14, 0x001c); - MP_WritePhyUshort(sc, 0x14, 0xd819); - MP_WritePhyUshort(sc, 0x14, 0xd919); - MP_WritePhyUshort(sc, 0x14, 0xda19); - MP_WritePhyUshort(sc, 0x14, 0xdb19); - MP_WritePhyUshort(sc, 0x14, 0x07ef); - MP_WritePhyUshort(sc, 0x14, 0x9502); - MP_WritePhyUshort(sc, 0x14, 0x4259); - MP_WritePhyUshort(sc, 0x14, 0x073f); - MP_WritePhyUshort(sc, 0x14, 0x0004); - MP_WritePhyUshort(sc, 0x14, 0x9fec); - MP_WritePhyUshort(sc, 0x14, 0xffef); - MP_WritePhyUshort(sc, 0x14, 0x96fe); - MP_WritePhyUshort(sc, 0x14, 0xc6fe); - MP_WritePhyUshort(sc, 0x14, 0xfdfc); - MP_WritePhyUshort(sc, 0x14, 0x0400); - MP_WritePhyUshort(sc, 0x14, 0x0145); - MP_WritePhyUshort(sc, 0x14, 0x7d00); - MP_WritePhyUshort(sc, 0x14, 0x0345); - MP_WritePhyUshort(sc, 0x14, 0x5c00); - MP_WritePhyUshort(sc, 0x14, 0x0143); - MP_WritePhyUshort(sc, 0x14, 0x4f00); - MP_WritePhyUshort(sc, 0x14, 0x0387); - MP_WritePhyUshort(sc, 0x14, 0xdb00); - MP_WritePhyUshort(sc, 0x14, 0x0987); - MP_WritePhyUshort(sc, 0x14, 0xde00); - MP_WritePhyUshort(sc, 0x14, 0x0987); - MP_WritePhyUshort(sc, 0x14, 0xe100); - MP_WritePhyUshort(sc, 0x14, 0x0087); - MP_WritePhyUshort(sc, 0x14, 0xeaa4); - MP_WritePhyUshort(sc, 0x14, 0x00b8); - MP_WritePhyUshort(sc, 0x14, 0x20c4); - MP_WritePhyUshort(sc, 0x14, 0x1600); - MP_WritePhyUshort(sc, 0x14, 0x000f); - MP_WritePhyUshort(sc, 0x14, 0xf800); - MP_WritePhyUshort(sc, 0x14, 0x7098); - MP_WritePhyUshort(sc, 0x14, 0xa58a); - MP_WritePhyUshort(sc, 0x14, 0xb6a8); - MP_WritePhyUshort(sc, 0x14, 0x3e50); - MP_WritePhyUshort(sc, 0x14, 0xa83e); - MP_WritePhyUshort(sc, 0x14, 0x33bc); - MP_WritePhyUshort(sc, 0x14, 0xc622); - MP_WritePhyUshort(sc, 0x14, 0xbcc6); - MP_WritePhyUshort(sc, 0x14, 0xaaa4); - MP_WritePhyUshort(sc, 0x14, 0x42ff); - MP_WritePhyUshort(sc, 0x14, 0xc408); - MP_WritePhyUshort(sc, 0x14, 0x00c4); - MP_WritePhyUshort(sc, 0x14, 0x16a8); - MP_WritePhyUshort(sc, 0x14, 0xbcc0); - MP_WritePhyUshort(sc, 0x13, 0xb818); - MP_WritePhyUshort(sc, 0x14, 0x02f3); - MP_WritePhyUshort(sc, 0x13, 0xb81a); - MP_WritePhyUshort(sc, 0x14, 0x17d1); - MP_WritePhyUshort(sc, 0x13, 0xb81c); - MP_WritePhyUshort(sc, 0x14, 0x185a); - MP_WritePhyUshort(sc, 0x13, 0xb81e); - MP_WritePhyUshort(sc, 0x14, 0x3c66); - MP_WritePhyUshort(sc, 0x13, 0xb820); - MP_WritePhyUshort(sc, 0x14, 0x021f); - MP_WritePhyUshort(sc, 0x13, 0xc416); - MP_WritePhyUshort(sc, 0x14, 0x0500); - MP_WritePhyUshort(sc, 0x13, 0xb82e); - MP_WritePhyUshort(sc, 0x14, 0xfffc); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x0000); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0B82); - PhyRegValue = MP_ReadPhyUshort(sc, 0x10); - PhyRegValue &= ~(BIT_9); - MP_WritePhyUshort(sc, 0x10, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8146); - MP_WritePhyUshort(sc, 0x14, 0x0000); - - re_clear_phy_mcu_patch_request(sc); - if (sc->RequiredSecLanDonglePatch) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - PhyRegValue = MP_ReadPhyUshort(sc, 0x11); - PhyRegValue &= ~(BIT_6); - MP_WritePhyUshort(sc, 0x11, PhyRegValue); - } -} - -static void re_set_phy_mcu_8168gu_2(struct re_softc* sc) -{ - u_int16_t PhyRegValue; - - re_set_phy_mcu_patch_request(sc); - - MP_WritePhyUshort(sc, 0x1f, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8146); - MP_WritePhyUshort(sc, 0x14, 0x0300); - MP_WritePhyUshort(sc, 0x13, 0xB82E); - MP_WritePhyUshort(sc, 0x14, 0x0001); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0xb820); - MP_WritePhyUshort(sc, 0x14, 0x0290); - MP_WritePhyUshort(sc, 0x13, 0xa012); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x13, 0xa014); - MP_WritePhyUshort(sc, 0x14, 0x2c04); - MP_WritePhyUshort(sc, 0x14, 0x2c07); - MP_WritePhyUshort(sc, 0x14, 0x2c07); - MP_WritePhyUshort(sc, 0x14, 0x2c07); - MP_WritePhyUshort(sc, 0x14, 0xa304); - MP_WritePhyUshort(sc, 0x14, 0xa301); - MP_WritePhyUshort(sc, 0x14, 0x207e); - MP_WritePhyUshort(sc, 0x13, 0xa01a); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x13, 0xa006); - MP_WritePhyUshort(sc, 0x14, 0x0fff); - MP_WritePhyUshort(sc, 0x13, 0xa004); - MP_WritePhyUshort(sc, 0x14, 0x0fff); - MP_WritePhyUshort(sc, 0x13, 0xa002); - MP_WritePhyUshort(sc, 0x14, 0x0fff); - MP_WritePhyUshort(sc, 0x13, 0xa000); - MP_WritePhyUshort(sc, 0x14, 0x107c); - MP_WritePhyUshort(sc, 0x13, 0xb820); - MP_WritePhyUshort(sc, 0x14, 0x0210); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x0000); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0B82); - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); - PhyRegValue &= ~(BIT_0); - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8146); - MP_WritePhyUshort(sc, 0x14, 0x0000); - - re_clear_phy_mcu_patch_request(sc); - if (sc->RequiredSecLanDonglePatch) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - PhyRegValue = MP_ReadPhyUshort(sc, 0x11); - PhyRegValue &= ~(BIT_6); - MP_WritePhyUshort(sc, 0x11, PhyRegValue); - } -} - -static void re_set_phy_mcu_8411b_1(struct re_softc* sc) -{ - u_int16_t PhyRegValue; - - re_set_phy_mcu_patch_request(sc); - - MP_WritePhyUshort(sc, 0x1f, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8146); - MP_WritePhyUshort(sc, 0x14, 0x0100); - MP_WritePhyUshort(sc, 0x13, 0xB82E); - MP_WritePhyUshort(sc, 0x14, 0x0001); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0xb820); - MP_WritePhyUshort(sc, 0x14, 0x0290); - MP_WritePhyUshort(sc, 0x13, 0xa012); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x13, 0xa014); - MP_WritePhyUshort(sc, 0x14, 0x2c04); - MP_WritePhyUshort(sc, 0x14, 0x2c07); - MP_WritePhyUshort(sc, 0x14, 0x2c07); - MP_WritePhyUshort(sc, 0x14, 0x2c07); - MP_WritePhyUshort(sc, 0x14, 0xa304); - MP_WritePhyUshort(sc, 0x14, 0xa301); - MP_WritePhyUshort(sc, 0x14, 0x207e); - MP_WritePhyUshort(sc, 0x13, 0xa01a); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x13, 0xa006); - MP_WritePhyUshort(sc, 0x14, 0x0fff); - MP_WritePhyUshort(sc, 0x13, 0xa004); - MP_WritePhyUshort(sc, 0x14, 0x0fff); - MP_WritePhyUshort(sc, 0x13, 0xa002); - MP_WritePhyUshort(sc, 0x14, 0x0fff); - MP_WritePhyUshort(sc, 0x13, 0xa000); - MP_WritePhyUshort(sc, 0x14, 0x107c); - MP_WritePhyUshort(sc, 0x13, 0xb820); - MP_WritePhyUshort(sc, 0x14, 0x0210); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x0000); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0B82); - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); - PhyRegValue &= ~(BIT_0); - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8146); - MP_WritePhyUshort(sc, 0x14, 0x0000); - - re_clear_phy_mcu_patch_request(sc); - if (sc->RequiredSecLanDonglePatch) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - PhyRegValue = MP_ReadPhyUshort(sc, 0x11); - PhyRegValue &= ~(BIT_6); - MP_WritePhyUshort(sc, 0x11, PhyRegValue); - } -} - -static void re_set_phy_mcu_8168h_1(struct re_softc* sc) -{ - u_int16_t PhyRegValue; - - re_set_phy_mcu_patch_request(sc); - - MP_WritePhyUshort(sc, 0x1f, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8028); - MP_WritePhyUshort(sc, 0x14, 0x6200); - MP_WritePhyUshort(sc, 0x13, 0xB82E); - MP_WritePhyUshort(sc, 0x14, 0x0001); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0xB820); - MP_WritePhyUshort(sc, 0x14, 0x0290); - MP_WritePhyUshort(sc, 0x13, 0xA012); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x13, 0xA014); - MP_WritePhyUshort(sc, 0x14, 0x2c04); - MP_WritePhyUshort(sc, 0x14, 0x2c10); - MP_WritePhyUshort(sc, 0x14, 0x2c10); - MP_WritePhyUshort(sc, 0x14, 0x2c10); - MP_WritePhyUshort(sc, 0x14, 0xa210); - MP_WritePhyUshort(sc, 0x14, 0xa101); - MP_WritePhyUshort(sc, 0x14, 0xce10); - MP_WritePhyUshort(sc, 0x14, 0xe070); - MP_WritePhyUshort(sc, 0x14, 0x0f40); - MP_WritePhyUshort(sc, 0x14, 0xaf01); - MP_WritePhyUshort(sc, 0x14, 0x8f01); - MP_WritePhyUshort(sc, 0x14, 0x183e); - MP_WritePhyUshort(sc, 0x14, 0x8e10); - MP_WritePhyUshort(sc, 0x14, 0x8101); - MP_WritePhyUshort(sc, 0x14, 0x8210); - MP_WritePhyUshort(sc, 0x14, 0x28da); - MP_WritePhyUshort(sc, 0x13, 0xA01A); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x13, 0xA006); - MP_WritePhyUshort(sc, 0x14, 0x0017); - MP_WritePhyUshort(sc, 0x13, 0xA004); - MP_WritePhyUshort(sc, 0x14, 0x0015); - MP_WritePhyUshort(sc, 0x13, 0xA002); - MP_WritePhyUshort(sc, 0x14, 0x0013); - MP_WritePhyUshort(sc, 0x13, 0xA000); - MP_WritePhyUshort(sc, 0x14, 0x18d1); - MP_WritePhyUshort(sc, 0x13, 0xB820); - MP_WritePhyUshort(sc, 0x14, 0x0210); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x0000); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0B82); - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); - PhyRegValue &= ~(BIT_0); - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8028); - MP_WritePhyUshort(sc, 0x14, 0x0000); - - re_clear_phy_mcu_patch_request(sc); - if (sc->RequiredSecLanDonglePatch) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - PhyRegValue = MP_ReadPhyUshort(sc, 0x11); - PhyRegValue &= ~(BIT_6); - MP_WritePhyUshort(sc, 0x11, PhyRegValue); - } -} - -static void re_set_phy_mcu_8168h_2(struct re_softc* sc) -{ - u_int16_t PhyRegValue; - - re_set_phy_mcu_patch_request(sc); - - MP_WritePhyUshort(sc, 0x1f, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8028); - MP_WritePhyUshort(sc, 0x14, 0x6201); - MP_WritePhyUshort(sc, 0x13, 0xB82E); - MP_WritePhyUshort(sc, 0x14, 0x0001); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0xB820); - MP_WritePhyUshort(sc, 0x14, 0x0290); - MP_WritePhyUshort(sc, 0x13, 0xA012); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x13, 0xA014); - MP_WritePhyUshort(sc, 0x14, 0x2c04); - MP_WritePhyUshort(sc, 0x14, 0x2c09); - MP_WritePhyUshort(sc, 0x14, 0x2c0d); - MP_WritePhyUshort(sc, 0x14, 0x2c12); - MP_WritePhyUshort(sc, 0x14, 0xad01); - MP_WritePhyUshort(sc, 0x14, 0xad01); - MP_WritePhyUshort(sc, 0x14, 0xad01); - MP_WritePhyUshort(sc, 0x14, 0xad01); - MP_WritePhyUshort(sc, 0x14, 0x236c); - MP_WritePhyUshort(sc, 0x14, 0xd03c); - MP_WritePhyUshort(sc, 0x14, 0xd1aa); - MP_WritePhyUshort(sc, 0x14, 0xc010); - MP_WritePhyUshort(sc, 0x14, 0x2745); - MP_WritePhyUshort(sc, 0x14, 0x33de); - MP_WritePhyUshort(sc, 0x14, 0x16ba); - MP_WritePhyUshort(sc, 0x14, 0x31ee); - MP_WritePhyUshort(sc, 0x14, 0x2712); - MP_WritePhyUshort(sc, 0x14, 0x274e); - MP_WritePhyUshort(sc, 0x14, 0xc2bb); - MP_WritePhyUshort(sc, 0x14, 0xd500); - MP_WritePhyUshort(sc, 0x14, 0xc426); - MP_WritePhyUshort(sc, 0x14, 0xd01d); - MP_WritePhyUshort(sc, 0x14, 0xd1c3); - MP_WritePhyUshort(sc, 0x14, 0x401c); - MP_WritePhyUshort(sc, 0x14, 0xd501); - MP_WritePhyUshort(sc, 0x14, 0xc2b3); - MP_WritePhyUshort(sc, 0x14, 0xd500); - MP_WritePhyUshort(sc, 0x14, 0xd00b); - MP_WritePhyUshort(sc, 0x14, 0xd1c3); - MP_WritePhyUshort(sc, 0x14, 0x401c); - MP_WritePhyUshort(sc, 0x14, 0x241a); - MP_WritePhyUshort(sc, 0x13, 0xA01A); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x13, 0xA006); - MP_WritePhyUshort(sc, 0x14, 0x0414); - MP_WritePhyUshort(sc, 0x13, 0xA004); - MP_WritePhyUshort(sc, 0x14, 0x074c); - MP_WritePhyUshort(sc, 0x13, 0xA002); - MP_WritePhyUshort(sc, 0x14, 0x0744); - MP_WritePhyUshort(sc, 0x13, 0xA000); - MP_WritePhyUshort(sc, 0x14, 0xf36b); - MP_WritePhyUshort(sc, 0x13, 0xB820); - MP_WritePhyUshort(sc, 0x14, 0x0210); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8323); - MP_WritePhyUshort(sc, 0x14, 0xaf83); - MP_WritePhyUshort(sc, 0x14, 0x2faf); - MP_WritePhyUshort(sc, 0x14, 0x853d); - MP_WritePhyUshort(sc, 0x14, 0xaf85); - MP_WritePhyUshort(sc, 0x14, 0x3daf); - MP_WritePhyUshort(sc, 0x14, 0x853d); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x45ad); - MP_WritePhyUshort(sc, 0x14, 0x2052); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x7ae3); - MP_WritePhyUshort(sc, 0x14, 0x85fe); - MP_WritePhyUshort(sc, 0x14, 0x1a03); - MP_WritePhyUshort(sc, 0x14, 0x10e4); - MP_WritePhyUshort(sc, 0x14, 0x85f6); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x7a1b); - MP_WritePhyUshort(sc, 0x14, 0x03e4); - MP_WritePhyUshort(sc, 0x14, 0x85fa); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x7be3); - MP_WritePhyUshort(sc, 0x14, 0x85fe); - MP_WritePhyUshort(sc, 0x14, 0x1a03); - MP_WritePhyUshort(sc, 0x14, 0x10e4); - MP_WritePhyUshort(sc, 0x14, 0x85f7); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x7b1b); - MP_WritePhyUshort(sc, 0x14, 0x03e4); - MP_WritePhyUshort(sc, 0x14, 0x85fb); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x7ce3); - MP_WritePhyUshort(sc, 0x14, 0x85fe); - MP_WritePhyUshort(sc, 0x14, 0x1a03); - MP_WritePhyUshort(sc, 0x14, 0x10e4); - MP_WritePhyUshort(sc, 0x14, 0x85f8); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x7c1b); - MP_WritePhyUshort(sc, 0x14, 0x03e4); - MP_WritePhyUshort(sc, 0x14, 0x85fc); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x7de3); - MP_WritePhyUshort(sc, 0x14, 0x85fe); - MP_WritePhyUshort(sc, 0x14, 0x1a03); - MP_WritePhyUshort(sc, 0x14, 0x10e4); - MP_WritePhyUshort(sc, 0x14, 0x85f9); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x7d1b); - MP_WritePhyUshort(sc, 0x14, 0x03e4); - MP_WritePhyUshort(sc, 0x14, 0x85fd); - MP_WritePhyUshort(sc, 0x14, 0xae50); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x7ee3); - MP_WritePhyUshort(sc, 0x14, 0x85ff); - MP_WritePhyUshort(sc, 0x14, 0x1a03); - MP_WritePhyUshort(sc, 0x14, 0x10e4); - MP_WritePhyUshort(sc, 0x14, 0x85f6); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x7e1b); - MP_WritePhyUshort(sc, 0x14, 0x03e4); - MP_WritePhyUshort(sc, 0x14, 0x85fa); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x7fe3); - MP_WritePhyUshort(sc, 0x14, 0x85ff); - MP_WritePhyUshort(sc, 0x14, 0x1a03); - MP_WritePhyUshort(sc, 0x14, 0x10e4); - MP_WritePhyUshort(sc, 0x14, 0x85f7); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x7f1b); - MP_WritePhyUshort(sc, 0x14, 0x03e4); - MP_WritePhyUshort(sc, 0x14, 0x85fb); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x80e3); - MP_WritePhyUshort(sc, 0x14, 0x85ff); - MP_WritePhyUshort(sc, 0x14, 0x1a03); - MP_WritePhyUshort(sc, 0x14, 0x10e4); - MP_WritePhyUshort(sc, 0x14, 0x85f8); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x801b); - MP_WritePhyUshort(sc, 0x14, 0x03e4); - MP_WritePhyUshort(sc, 0x14, 0x85fc); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x81e3); - MP_WritePhyUshort(sc, 0x14, 0x85ff); - MP_WritePhyUshort(sc, 0x14, 0x1a03); - MP_WritePhyUshort(sc, 0x14, 0x10e4); - MP_WritePhyUshort(sc, 0x14, 0x85f9); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x811b); - MP_WritePhyUshort(sc, 0x14, 0x03e4); - MP_WritePhyUshort(sc, 0x14, 0x85fd); - MP_WritePhyUshort(sc, 0x14, 0xe085); - MP_WritePhyUshort(sc, 0x14, 0xf6ad); - MP_WritePhyUshort(sc, 0x14, 0x2404); - MP_WritePhyUshort(sc, 0x14, 0xee85); - MP_WritePhyUshort(sc, 0x14, 0xf610); - MP_WritePhyUshort(sc, 0x14, 0xe085); - MP_WritePhyUshort(sc, 0x14, 0xf7ad); - MP_WritePhyUshort(sc, 0x14, 0x2404); - MP_WritePhyUshort(sc, 0x14, 0xee85); - MP_WritePhyUshort(sc, 0x14, 0xf710); - MP_WritePhyUshort(sc, 0x14, 0xe085); - MP_WritePhyUshort(sc, 0x14, 0xf8ad); - MP_WritePhyUshort(sc, 0x14, 0x2404); - MP_WritePhyUshort(sc, 0x14, 0xee85); - MP_WritePhyUshort(sc, 0x14, 0xf810); - MP_WritePhyUshort(sc, 0x14, 0xe085); - MP_WritePhyUshort(sc, 0x14, 0xf9ad); - MP_WritePhyUshort(sc, 0x14, 0x2404); - MP_WritePhyUshort(sc, 0x14, 0xee85); - MP_WritePhyUshort(sc, 0x14, 0xf910); - MP_WritePhyUshort(sc, 0x14, 0xe085); - MP_WritePhyUshort(sc, 0x14, 0xfaad); - MP_WritePhyUshort(sc, 0x14, 0x2704); - MP_WritePhyUshort(sc, 0x14, 0xee85); - MP_WritePhyUshort(sc, 0x14, 0xfa00); - MP_WritePhyUshort(sc, 0x14, 0xe085); - MP_WritePhyUshort(sc, 0x14, 0xfbad); - MP_WritePhyUshort(sc, 0x14, 0x2704); - MP_WritePhyUshort(sc, 0x14, 0xee85); - MP_WritePhyUshort(sc, 0x14, 0xfb00); - MP_WritePhyUshort(sc, 0x14, 0xe085); - MP_WritePhyUshort(sc, 0x14, 0xfcad); - MP_WritePhyUshort(sc, 0x14, 0x2704); - MP_WritePhyUshort(sc, 0x14, 0xee85); - MP_WritePhyUshort(sc, 0x14, 0xfc00); - MP_WritePhyUshort(sc, 0x14, 0xe085); - MP_WritePhyUshort(sc, 0x14, 0xfdad); - MP_WritePhyUshort(sc, 0x14, 0x2704); - MP_WritePhyUshort(sc, 0x14, 0xee85); - MP_WritePhyUshort(sc, 0x14, 0xfd00); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x44ad); - MP_WritePhyUshort(sc, 0x14, 0x203f); - MP_WritePhyUshort(sc, 0x14, 0xe085); - MP_WritePhyUshort(sc, 0x14, 0xf6e4); - MP_WritePhyUshort(sc, 0x14, 0x8288); - MP_WritePhyUshort(sc, 0x14, 0xe085); - MP_WritePhyUshort(sc, 0x14, 0xfae4); - MP_WritePhyUshort(sc, 0x14, 0x8289); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x440d); - MP_WritePhyUshort(sc, 0x14, 0x0458); - MP_WritePhyUshort(sc, 0x14, 0x01bf); - MP_WritePhyUshort(sc, 0x14, 0x8264); - MP_WritePhyUshort(sc, 0x14, 0x0215); - MP_WritePhyUshort(sc, 0x14, 0x38bf); - MP_WritePhyUshort(sc, 0x14, 0x824e); - MP_WritePhyUshort(sc, 0x14, 0x0213); - MP_WritePhyUshort(sc, 0x14, 0x06a0); - MP_WritePhyUshort(sc, 0x14, 0x010f); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x44f6); - MP_WritePhyUshort(sc, 0x14, 0x20e4); - MP_WritePhyUshort(sc, 0x14, 0x8244); - MP_WritePhyUshort(sc, 0x14, 0x580f); - MP_WritePhyUshort(sc, 0x14, 0xe582); - MP_WritePhyUshort(sc, 0x14, 0x5aae); - MP_WritePhyUshort(sc, 0x14, 0x0ebf); - MP_WritePhyUshort(sc, 0x14, 0x825e); - MP_WritePhyUshort(sc, 0x14, 0xe382); - MP_WritePhyUshort(sc, 0x14, 0x44f7); - MP_WritePhyUshort(sc, 0x14, 0x3ce7); - MP_WritePhyUshort(sc, 0x14, 0x8244); - MP_WritePhyUshort(sc, 0x14, 0x0212); - MP_WritePhyUshort(sc, 0x14, 0xf0ad); - MP_WritePhyUshort(sc, 0x14, 0x213f); - MP_WritePhyUshort(sc, 0x14, 0xe085); - MP_WritePhyUshort(sc, 0x14, 0xf7e4); - MP_WritePhyUshort(sc, 0x14, 0x8288); - MP_WritePhyUshort(sc, 0x14, 0xe085); - MP_WritePhyUshort(sc, 0x14, 0xfbe4); - MP_WritePhyUshort(sc, 0x14, 0x8289); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x440d); - MP_WritePhyUshort(sc, 0x14, 0x0558); - MP_WritePhyUshort(sc, 0x14, 0x01bf); - MP_WritePhyUshort(sc, 0x14, 0x826b); - MP_WritePhyUshort(sc, 0x14, 0x0215); - MP_WritePhyUshort(sc, 0x14, 0x38bf); - MP_WritePhyUshort(sc, 0x14, 0x824f); - MP_WritePhyUshort(sc, 0x14, 0x0213); - MP_WritePhyUshort(sc, 0x14, 0x06a0); - MP_WritePhyUshort(sc, 0x14, 0x010f); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x44f6); - MP_WritePhyUshort(sc, 0x14, 0x21e4); - MP_WritePhyUshort(sc, 0x14, 0x8244); - MP_WritePhyUshort(sc, 0x14, 0x580f); - MP_WritePhyUshort(sc, 0x14, 0xe582); - MP_WritePhyUshort(sc, 0x14, 0x5bae); - MP_WritePhyUshort(sc, 0x14, 0x0ebf); - MP_WritePhyUshort(sc, 0x14, 0x8265); - MP_WritePhyUshort(sc, 0x14, 0xe382); - MP_WritePhyUshort(sc, 0x14, 0x44f7); - MP_WritePhyUshort(sc, 0x14, 0x3de7); - MP_WritePhyUshort(sc, 0x14, 0x8244); - MP_WritePhyUshort(sc, 0x14, 0x0212); - MP_WritePhyUshort(sc, 0x14, 0xf0ad); - MP_WritePhyUshort(sc, 0x14, 0x223f); - MP_WritePhyUshort(sc, 0x14, 0xe085); - MP_WritePhyUshort(sc, 0x14, 0xf8e4); - MP_WritePhyUshort(sc, 0x14, 0x8288); - MP_WritePhyUshort(sc, 0x14, 0xe085); - MP_WritePhyUshort(sc, 0x14, 0xfce4); - MP_WritePhyUshort(sc, 0x14, 0x8289); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x440d); - MP_WritePhyUshort(sc, 0x14, 0x0658); - MP_WritePhyUshort(sc, 0x14, 0x01bf); - MP_WritePhyUshort(sc, 0x14, 0x8272); - MP_WritePhyUshort(sc, 0x14, 0x0215); - MP_WritePhyUshort(sc, 0x14, 0x38bf); - MP_WritePhyUshort(sc, 0x14, 0x8250); - MP_WritePhyUshort(sc, 0x14, 0x0213); - MP_WritePhyUshort(sc, 0x14, 0x06a0); - MP_WritePhyUshort(sc, 0x14, 0x010f); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x44f6); - MP_WritePhyUshort(sc, 0x14, 0x22e4); - MP_WritePhyUshort(sc, 0x14, 0x8244); - MP_WritePhyUshort(sc, 0x14, 0x580f); - MP_WritePhyUshort(sc, 0x14, 0xe582); - MP_WritePhyUshort(sc, 0x14, 0x5cae); - MP_WritePhyUshort(sc, 0x14, 0x0ebf); - MP_WritePhyUshort(sc, 0x14, 0x826c); - MP_WritePhyUshort(sc, 0x14, 0xe382); - MP_WritePhyUshort(sc, 0x14, 0x44f7); - MP_WritePhyUshort(sc, 0x14, 0x3ee7); - MP_WritePhyUshort(sc, 0x14, 0x8244); - MP_WritePhyUshort(sc, 0x14, 0x0212); - MP_WritePhyUshort(sc, 0x14, 0xf0ad); - MP_WritePhyUshort(sc, 0x14, 0x233f); - MP_WritePhyUshort(sc, 0x14, 0xe085); - MP_WritePhyUshort(sc, 0x14, 0xf9e4); - MP_WritePhyUshort(sc, 0x14, 0x8288); - MP_WritePhyUshort(sc, 0x14, 0xe085); - MP_WritePhyUshort(sc, 0x14, 0xfde4); - MP_WritePhyUshort(sc, 0x14, 0x8289); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x440d); - MP_WritePhyUshort(sc, 0x14, 0x0758); - MP_WritePhyUshort(sc, 0x14, 0x01bf); - MP_WritePhyUshort(sc, 0x14, 0x8279); - MP_WritePhyUshort(sc, 0x14, 0x0215); - MP_WritePhyUshort(sc, 0x14, 0x38bf); - MP_WritePhyUshort(sc, 0x14, 0x8251); - MP_WritePhyUshort(sc, 0x14, 0x0213); - MP_WritePhyUshort(sc, 0x14, 0x06a0); - MP_WritePhyUshort(sc, 0x14, 0x010f); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x44f6); - MP_WritePhyUshort(sc, 0x14, 0x23e4); - MP_WritePhyUshort(sc, 0x14, 0x8244); - MP_WritePhyUshort(sc, 0x14, 0x580f); - MP_WritePhyUshort(sc, 0x14, 0xe582); - MP_WritePhyUshort(sc, 0x14, 0x5dae); - MP_WritePhyUshort(sc, 0x14, 0x0ebf); - MP_WritePhyUshort(sc, 0x14, 0x8273); - MP_WritePhyUshort(sc, 0x14, 0xe382); - MP_WritePhyUshort(sc, 0x14, 0x44f7); - MP_WritePhyUshort(sc, 0x14, 0x3fe7); - MP_WritePhyUshort(sc, 0x14, 0x8244); - MP_WritePhyUshort(sc, 0x14, 0x0212); - MP_WritePhyUshort(sc, 0x14, 0xf0ee); - MP_WritePhyUshort(sc, 0x14, 0x8288); - MP_WritePhyUshort(sc, 0x14, 0x10ee); - MP_WritePhyUshort(sc, 0x14, 0x8289); - MP_WritePhyUshort(sc, 0x14, 0x00af); - MP_WritePhyUshort(sc, 0x14, 0x14aa); - MP_WritePhyUshort(sc, 0x13, 0xb818); - MP_WritePhyUshort(sc, 0x14, 0x13cf); - MP_WritePhyUshort(sc, 0x13, 0xb81a); - MP_WritePhyUshort(sc, 0x14, 0xfffd); - MP_WritePhyUshort(sc, 0x13, 0xb81c); - MP_WritePhyUshort(sc, 0x14, 0xfffd); - MP_WritePhyUshort(sc, 0x13, 0xb81e); - MP_WritePhyUshort(sc, 0x14, 0xfffd); - MP_WritePhyUshort(sc, 0x13, 0xb832); - MP_WritePhyUshort(sc, 0x14, 0x0001); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x0000); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0B82); - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); - PhyRegValue &= ~(BIT_0); - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8028); - MP_WritePhyUshort(sc, 0x14, 0x0000); - - re_clear_phy_mcu_patch_request(sc); - if (sc->RequiredSecLanDonglePatch) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - PhyRegValue = MP_ReadPhyUshort(sc, 0x11); - PhyRegValue &= ~(BIT_6); - MP_WritePhyUshort(sc, 0x11, PhyRegValue); - } -} - -static void re_set_phy_mcu_8168h_3(struct re_softc* sc) -{ - u_int16_t PhyRegValue; - - re_set_phy_mcu_patch_request(sc); - - - MP_WritePhyUshort(sc, 0x1f, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8042); - MP_WritePhyUshort(sc, 0x14, 0x3800); - MP_WritePhyUshort(sc, 0x13, 0xB82E); - MP_WritePhyUshort(sc, 0x14, 0x0001); - - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0xB820); - MP_WritePhyUshort(sc, 0x14, 0x0090); - MP_WritePhyUshort(sc, 0x13, 0xA016); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x13, 0xA012); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x13, 0xA014); - MP_WritePhyUshort(sc, 0x14, 0x1800); - MP_WritePhyUshort(sc, 0x14, 0x8010); - MP_WritePhyUshort(sc, 0x14, 0x1800); - MP_WritePhyUshort(sc, 0x14, 0x8014); - MP_WritePhyUshort(sc, 0x14, 0x1800); - MP_WritePhyUshort(sc, 0x14, 0x8022); - MP_WritePhyUshort(sc, 0x14, 0x1800); - MP_WritePhyUshort(sc, 0x14, 0x8022); - MP_WritePhyUshort(sc, 0x14, 0x1800); - MP_WritePhyUshort(sc, 0x14, 0x8022); - MP_WritePhyUshort(sc, 0x14, 0x1800); - MP_WritePhyUshort(sc, 0x14, 0x8022); - MP_WritePhyUshort(sc, 0x14, 0x1800); - MP_WritePhyUshort(sc, 0x14, 0x8022); - MP_WritePhyUshort(sc, 0x14, 0x1800); - MP_WritePhyUshort(sc, 0x14, 0x8022); - MP_WritePhyUshort(sc, 0x14, 0x2b5d); - MP_WritePhyUshort(sc, 0x14, 0x0c68); - MP_WritePhyUshort(sc, 0x14, 0x1800); - MP_WritePhyUshort(sc, 0x14, 0x0b3c); - MP_WritePhyUshort(sc, 0x14, 0xc2bb); - MP_WritePhyUshort(sc, 0x14, 0xd500); - MP_WritePhyUshort(sc, 0x14, 0xc426); - MP_WritePhyUshort(sc, 0x14, 0xd01d); - MP_WritePhyUshort(sc, 0x14, 0xd1c3); - MP_WritePhyUshort(sc, 0x14, 0x401c); - MP_WritePhyUshort(sc, 0x14, 0xd501); - MP_WritePhyUshort(sc, 0x14, 0xc2b3); - MP_WritePhyUshort(sc, 0x14, 0xd500); - MP_WritePhyUshort(sc, 0x14, 0xd00b); - MP_WritePhyUshort(sc, 0x14, 0xd1c3); - MP_WritePhyUshort(sc, 0x14, 0x401c); - MP_WritePhyUshort(sc, 0x14, 0x1800); - MP_WritePhyUshort(sc, 0x14, 0x0478); - MP_WritePhyUshort(sc, 0x13, 0xA026); - MP_WritePhyUshort(sc, 0x14, 0x0fff); - MP_WritePhyUshort(sc, 0x13, 0xA024); - MP_WritePhyUshort(sc, 0x14, 0x0fff); - MP_WritePhyUshort(sc, 0x13, 0xA022); - MP_WritePhyUshort(sc, 0x14, 0x0fff); - MP_WritePhyUshort(sc, 0x13, 0xA020); - MP_WritePhyUshort(sc, 0x14, 0x0fff); - MP_WritePhyUshort(sc, 0x13, 0xA006); - MP_WritePhyUshort(sc, 0x14, 0x0fff); - MP_WritePhyUshort(sc, 0x13, 0xA004); - MP_WritePhyUshort(sc, 0x14, 0x0fff); - MP_WritePhyUshort(sc, 0x13, 0xA002); - MP_WritePhyUshort(sc, 0x14, 0x0472); - MP_WritePhyUshort(sc, 0x13, 0xA000); - MP_WritePhyUshort(sc, 0x14, 0x0b3a); - MP_WritePhyUshort(sc, 0x13, 0xA008); - MP_WritePhyUshort(sc, 0x14, 0x0300); - MP_WritePhyUshort(sc, 0x13, 0xB820); - MP_WritePhyUshort(sc, 0x14, 0x0010); - - - MP_WritePhyUshort(sc, 0x13, 0x83f3); - MP_WritePhyUshort(sc, 0x14, 0xaf84); - MP_WritePhyUshort(sc, 0x14, 0x0baf); - MP_WritePhyUshort(sc, 0x14, 0x8466); - MP_WritePhyUshort(sc, 0x14, 0xaf84); - MP_WritePhyUshort(sc, 0x14, 0xcdaf); - MP_WritePhyUshort(sc, 0x14, 0x873c); - MP_WritePhyUshort(sc, 0x14, 0xaf87); - MP_WritePhyUshort(sc, 0x14, 0x3faf); - MP_WritePhyUshort(sc, 0x14, 0x8760); - MP_WritePhyUshort(sc, 0x14, 0xaf87); - MP_WritePhyUshort(sc, 0x14, 0x60af); - MP_WritePhyUshort(sc, 0x14, 0x8760); - MP_WritePhyUshort(sc, 0x14, 0xef79); - MP_WritePhyUshort(sc, 0x14, 0xfb89); - MP_WritePhyUshort(sc, 0x14, 0xe987); - MP_WritePhyUshort(sc, 0x14, 0xffd7); - MP_WritePhyUshort(sc, 0x14, 0x0017); - MP_WritePhyUshort(sc, 0x14, 0xd400); - MP_WritePhyUshort(sc, 0x14, 0x051c); - MP_WritePhyUshort(sc, 0x14, 0x421a); - MP_WritePhyUshort(sc, 0x14, 0x741b); - MP_WritePhyUshort(sc, 0x14, 0x97e9); - MP_WritePhyUshort(sc, 0x14, 0x87fe); - MP_WritePhyUshort(sc, 0x14, 0xffef); - MP_WritePhyUshort(sc, 0x14, 0x97e0); - MP_WritePhyUshort(sc, 0x14, 0x82aa); - MP_WritePhyUshort(sc, 0x14, 0xa000); - MP_WritePhyUshort(sc, 0x14, 0x08ef); - MP_WritePhyUshort(sc, 0x14, 0x46dc); - MP_WritePhyUshort(sc, 0x14, 0x19dd); - MP_WritePhyUshort(sc, 0x14, 0xaf1a); - MP_WritePhyUshort(sc, 0x14, 0x37a0); - MP_WritePhyUshort(sc, 0x14, 0x012d); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0xa7ac); - MP_WritePhyUshort(sc, 0x14, 0x2013); - MP_WritePhyUshort(sc, 0x14, 0xe087); - MP_WritePhyUshort(sc, 0x14, 0xffe1); - MP_WritePhyUshort(sc, 0x14, 0x87fe); - MP_WritePhyUshort(sc, 0x14, 0xac27); - MP_WritePhyUshort(sc, 0x14, 0x05a1); - MP_WritePhyUshort(sc, 0x14, 0x0807); - MP_WritePhyUshort(sc, 0x14, 0xae0f); - MP_WritePhyUshort(sc, 0x14, 0xa107); - MP_WritePhyUshort(sc, 0x14, 0x02ae); - MP_WritePhyUshort(sc, 0x14, 0x0aef); - MP_WritePhyUshort(sc, 0x14, 0x4619); - MP_WritePhyUshort(sc, 0x14, 0x19dc); - MP_WritePhyUshort(sc, 0x14, 0x19dd); - MP_WritePhyUshort(sc, 0x14, 0xaf1a); - MP_WritePhyUshort(sc, 0x14, 0x37d8); - MP_WritePhyUshort(sc, 0x14, 0x19d9); - MP_WritePhyUshort(sc, 0x14, 0x19dc); - MP_WritePhyUshort(sc, 0x14, 0x19dd); - MP_WritePhyUshort(sc, 0x14, 0xaf1a); - MP_WritePhyUshort(sc, 0x14, 0x3719); - MP_WritePhyUshort(sc, 0x14, 0x19ae); - MP_WritePhyUshort(sc, 0x14, 0xcfbf); - MP_WritePhyUshort(sc, 0x14, 0x878a); - MP_WritePhyUshort(sc, 0x14, 0x0244); - MP_WritePhyUshort(sc, 0x14, 0xdc3c); - MP_WritePhyUshort(sc, 0x14, 0x0005); - MP_WritePhyUshort(sc, 0x14, 0xaaf5); - MP_WritePhyUshort(sc, 0x14, 0x0249); - MP_WritePhyUshort(sc, 0x14, 0xcaef); - MP_WritePhyUshort(sc, 0x14, 0x67d7); - MP_WritePhyUshort(sc, 0x14, 0x0014); - MP_WritePhyUshort(sc, 0x14, 0x0249); - MP_WritePhyUshort(sc, 0x14, 0xe5ad); - MP_WritePhyUshort(sc, 0x14, 0x50f7); - MP_WritePhyUshort(sc, 0x14, 0xd400); - MP_WritePhyUshort(sc, 0x14, 0x01bf); - MP_WritePhyUshort(sc, 0x14, 0x46a7); - MP_WritePhyUshort(sc, 0x14, 0x0244); - MP_WritePhyUshort(sc, 0x14, 0x98bf); - MP_WritePhyUshort(sc, 0x14, 0x465c); - MP_WritePhyUshort(sc, 0x14, 0x024a); - MP_WritePhyUshort(sc, 0x14, 0x5fd4); - MP_WritePhyUshort(sc, 0x14, 0x0003); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0x9c02); - MP_WritePhyUshort(sc, 0x14, 0x4498); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0x9902); - MP_WritePhyUshort(sc, 0x14, 0x4a5f); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0x8d02); - MP_WritePhyUshort(sc, 0x14, 0x4a5f); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0x9002); - MP_WritePhyUshort(sc, 0x14, 0x44dc); - MP_WritePhyUshort(sc, 0x14, 0xad28); - MP_WritePhyUshort(sc, 0x14, 0xf7bf); - MP_WritePhyUshort(sc, 0x14, 0x8796); - MP_WritePhyUshort(sc, 0x14, 0x0244); - MP_WritePhyUshort(sc, 0x14, 0xdcad); - MP_WritePhyUshort(sc, 0x14, 0x28f7); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0x9302); - MP_WritePhyUshort(sc, 0x14, 0x4a5f); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0x9302); - MP_WritePhyUshort(sc, 0x14, 0x4a56); - MP_WritePhyUshort(sc, 0x14, 0xbf46); - MP_WritePhyUshort(sc, 0x14, 0x5c02); - MP_WritePhyUshort(sc, 0x14, 0x4a56); - MP_WritePhyUshort(sc, 0x14, 0xbf45); - MP_WritePhyUshort(sc, 0x14, 0x21af); - MP_WritePhyUshort(sc, 0x14, 0x020e); - MP_WritePhyUshort(sc, 0x14, 0xee82); - MP_WritePhyUshort(sc, 0x14, 0x5000); - MP_WritePhyUshort(sc, 0x14, 0x0284); - MP_WritePhyUshort(sc, 0x14, 0xdd02); - MP_WritePhyUshort(sc, 0x14, 0x8521); - MP_WritePhyUshort(sc, 0x14, 0x0285); - MP_WritePhyUshort(sc, 0x14, 0x36af); - MP_WritePhyUshort(sc, 0x14, 0x03d2); - MP_WritePhyUshort(sc, 0x14, 0xf8f9); - MP_WritePhyUshort(sc, 0x14, 0xfafb); - MP_WritePhyUshort(sc, 0x14, 0xef59); - MP_WritePhyUshort(sc, 0x14, 0xbf45); - MP_WritePhyUshort(sc, 0x14, 0x3002); - MP_WritePhyUshort(sc, 0x14, 0x44dc); - MP_WritePhyUshort(sc, 0x14, 0x3c00); - MP_WritePhyUshort(sc, 0x14, 0x03aa); - MP_WritePhyUshort(sc, 0x14, 0x2cbf); - MP_WritePhyUshort(sc, 0x14, 0x8790); - MP_WritePhyUshort(sc, 0x14, 0x0244); - MP_WritePhyUshort(sc, 0x14, 0xdcad); - MP_WritePhyUshort(sc, 0x14, 0x2823); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0x9602); - MP_WritePhyUshort(sc, 0x14, 0x44dc); - MP_WritePhyUshort(sc, 0x14, 0xad28); - MP_WritePhyUshort(sc, 0x14, 0x1a02); - MP_WritePhyUshort(sc, 0x14, 0x49ca); - MP_WritePhyUshort(sc, 0x14, 0xef67); - MP_WritePhyUshort(sc, 0x14, 0xd700); - MP_WritePhyUshort(sc, 0x14, 0x0202); - MP_WritePhyUshort(sc, 0x14, 0x49e5); - MP_WritePhyUshort(sc, 0x14, 0xad50); - MP_WritePhyUshort(sc, 0x14, 0xf7bf); - MP_WritePhyUshort(sc, 0x14, 0x8793); - MP_WritePhyUshort(sc, 0x14, 0x024a); - MP_WritePhyUshort(sc, 0x14, 0x5fbf); - MP_WritePhyUshort(sc, 0x14, 0x8793); - MP_WritePhyUshort(sc, 0x14, 0x024a); - MP_WritePhyUshort(sc, 0x14, 0x56ef); - MP_WritePhyUshort(sc, 0x14, 0x95ff); - MP_WritePhyUshort(sc, 0x14, 0xfefd); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xf8fa); - MP_WritePhyUshort(sc, 0x14, 0xef69); - MP_WritePhyUshort(sc, 0x14, 0xe080); - MP_WritePhyUshort(sc, 0x14, 0x15ad); - MP_WritePhyUshort(sc, 0x14, 0x2406); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0x8702); - MP_WritePhyUshort(sc, 0x14, 0x4a56); - MP_WritePhyUshort(sc, 0x14, 0xef96); - MP_WritePhyUshort(sc, 0x14, 0xfefc); - MP_WritePhyUshort(sc, 0x14, 0x04f8); - MP_WritePhyUshort(sc, 0x14, 0xe087); - MP_WritePhyUshort(sc, 0x14, 0xf9e1); - MP_WritePhyUshort(sc, 0x14, 0x87fa); - MP_WritePhyUshort(sc, 0x14, 0x1b10); - MP_WritePhyUshort(sc, 0x14, 0x9f1e); - MP_WritePhyUshort(sc, 0x14, 0xee87); - MP_WritePhyUshort(sc, 0x14, 0xf900); - MP_WritePhyUshort(sc, 0x14, 0xe080); - MP_WritePhyUshort(sc, 0x14, 0x15ac); - MP_WritePhyUshort(sc, 0x14, 0x2606); - MP_WritePhyUshort(sc, 0x14, 0xee87); - MP_WritePhyUshort(sc, 0x14, 0xf700); - MP_WritePhyUshort(sc, 0x14, 0xae12); - MP_WritePhyUshort(sc, 0x14, 0x0286); - MP_WritePhyUshort(sc, 0x14, 0x9d02); - MP_WritePhyUshort(sc, 0x14, 0x8565); - MP_WritePhyUshort(sc, 0x14, 0x0285); - MP_WritePhyUshort(sc, 0x14, 0x9d02); - MP_WritePhyUshort(sc, 0x14, 0x8660); - MP_WritePhyUshort(sc, 0x14, 0xae04); - MP_WritePhyUshort(sc, 0x14, 0x10e4); - MP_WritePhyUshort(sc, 0x14, 0x87f9); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xf8f9); - MP_WritePhyUshort(sc, 0x14, 0xfaef); - MP_WritePhyUshort(sc, 0x14, 0x69fa); - MP_WritePhyUshort(sc, 0x14, 0xbf45); - MP_WritePhyUshort(sc, 0x14, 0x3002); - MP_WritePhyUshort(sc, 0x14, 0x44dc); - MP_WritePhyUshort(sc, 0x14, 0xa103); - MP_WritePhyUshort(sc, 0x14, 0x22e0); - MP_WritePhyUshort(sc, 0x14, 0x87eb); - MP_WritePhyUshort(sc, 0x14, 0xe187); - MP_WritePhyUshort(sc, 0x14, 0xecef); - MP_WritePhyUshort(sc, 0x14, 0x64bf); - MP_WritePhyUshort(sc, 0x14, 0x876f); - MP_WritePhyUshort(sc, 0x14, 0x0244); - MP_WritePhyUshort(sc, 0x14, 0xdc1b); - MP_WritePhyUshort(sc, 0x14, 0x46aa); - MP_WritePhyUshort(sc, 0x14, 0x0abf); - MP_WritePhyUshort(sc, 0x14, 0x8772); - MP_WritePhyUshort(sc, 0x14, 0x0244); - MP_WritePhyUshort(sc, 0x14, 0xdc1b); - MP_WritePhyUshort(sc, 0x14, 0x46ab); - MP_WritePhyUshort(sc, 0x14, 0x06bf); - MP_WritePhyUshort(sc, 0x14, 0x876c); - MP_WritePhyUshort(sc, 0x14, 0x024a); - MP_WritePhyUshort(sc, 0x14, 0x5ffe); - MP_WritePhyUshort(sc, 0x14, 0xef96); - MP_WritePhyUshort(sc, 0x14, 0xfefd); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xf8f9); - MP_WritePhyUshort(sc, 0x14, 0xef59); - MP_WritePhyUshort(sc, 0x14, 0xf9bf); - MP_WritePhyUshort(sc, 0x14, 0x4530); - MP_WritePhyUshort(sc, 0x14, 0x0244); - MP_WritePhyUshort(sc, 0x14, 0xdca1); - MP_WritePhyUshort(sc, 0x14, 0x0310); - MP_WritePhyUshort(sc, 0x14, 0xe087); - MP_WritePhyUshort(sc, 0x14, 0xf7ac); - MP_WritePhyUshort(sc, 0x14, 0x2605); - MP_WritePhyUshort(sc, 0x14, 0x0285); - MP_WritePhyUshort(sc, 0x14, 0xc9ae); - MP_WritePhyUshort(sc, 0x14, 0x0d02); - MP_WritePhyUshort(sc, 0x14, 0x8613); - MP_WritePhyUshort(sc, 0x14, 0xae08); - MP_WritePhyUshort(sc, 0x14, 0xe287); - MP_WritePhyUshort(sc, 0x14, 0xf7f6); - MP_WritePhyUshort(sc, 0x14, 0x36e6); - MP_WritePhyUshort(sc, 0x14, 0x87f7); - MP_WritePhyUshort(sc, 0x14, 0xfdef); - MP_WritePhyUshort(sc, 0x14, 0x95fd); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xf8f9); - MP_WritePhyUshort(sc, 0x14, 0xfafb); - MP_WritePhyUshort(sc, 0x14, 0xef79); - MP_WritePhyUshort(sc, 0x14, 0xfbbf); - MP_WritePhyUshort(sc, 0x14, 0x876f); - MP_WritePhyUshort(sc, 0x14, 0x0244); - MP_WritePhyUshort(sc, 0x14, 0xdcef); - MP_WritePhyUshort(sc, 0x14, 0x64e2); - MP_WritePhyUshort(sc, 0x14, 0x87e9); - MP_WritePhyUshort(sc, 0x14, 0xe387); - MP_WritePhyUshort(sc, 0x14, 0xea1b); - MP_WritePhyUshort(sc, 0x14, 0x659e); - MP_WritePhyUshort(sc, 0x14, 0x10e4); - MP_WritePhyUshort(sc, 0x14, 0x87e9); - MP_WritePhyUshort(sc, 0x14, 0xe587); - MP_WritePhyUshort(sc, 0x14, 0xeae2); - MP_WritePhyUshort(sc, 0x14, 0x87f7); - MP_WritePhyUshort(sc, 0x14, 0xf636); - MP_WritePhyUshort(sc, 0x14, 0xe687); - MP_WritePhyUshort(sc, 0x14, 0xf7ae); - MP_WritePhyUshort(sc, 0x14, 0x19e2); - MP_WritePhyUshort(sc, 0x14, 0x87f7); - MP_WritePhyUshort(sc, 0x14, 0xf736); - MP_WritePhyUshort(sc, 0x14, 0xe687); - MP_WritePhyUshort(sc, 0x14, 0xf700); - MP_WritePhyUshort(sc, 0x14, 0x00ae); - MP_WritePhyUshort(sc, 0x14, 0x0200); - MP_WritePhyUshort(sc, 0x14, 0x0002); - MP_WritePhyUshort(sc, 0x14, 0x49ca); - MP_WritePhyUshort(sc, 0x14, 0xef57); - MP_WritePhyUshort(sc, 0x14, 0xe687); - MP_WritePhyUshort(sc, 0x14, 0xe7e7); - MP_WritePhyUshort(sc, 0x14, 0x87e8); - MP_WritePhyUshort(sc, 0x14, 0xffef); - MP_WritePhyUshort(sc, 0x14, 0x97ff); - MP_WritePhyUshort(sc, 0x14, 0xfefd); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xf8f9); - MP_WritePhyUshort(sc, 0x14, 0xfafb); - MP_WritePhyUshort(sc, 0x14, 0xef79); - MP_WritePhyUshort(sc, 0x14, 0xfbe2); - MP_WritePhyUshort(sc, 0x14, 0x87e7); - MP_WritePhyUshort(sc, 0x14, 0xe387); - MP_WritePhyUshort(sc, 0x14, 0xe8ef); - MP_WritePhyUshort(sc, 0x14, 0x65e2); - MP_WritePhyUshort(sc, 0x14, 0x87fb); - MP_WritePhyUshort(sc, 0x14, 0xe387); - MP_WritePhyUshort(sc, 0x14, 0xfcef); - MP_WritePhyUshort(sc, 0x14, 0x7502); - MP_WritePhyUshort(sc, 0x14, 0x49e5); - MP_WritePhyUshort(sc, 0x14, 0xac50); - MP_WritePhyUshort(sc, 0x14, 0x1abf); - MP_WritePhyUshort(sc, 0x14, 0x876f); - MP_WritePhyUshort(sc, 0x14, 0x0244); - MP_WritePhyUshort(sc, 0x14, 0xdcef); - MP_WritePhyUshort(sc, 0x14, 0x64e2); - MP_WritePhyUshort(sc, 0x14, 0x87e9); - MP_WritePhyUshort(sc, 0x14, 0xe387); - MP_WritePhyUshort(sc, 0x14, 0xea1b); - MP_WritePhyUshort(sc, 0x14, 0x659e); - MP_WritePhyUshort(sc, 0x14, 0x16e4); - MP_WritePhyUshort(sc, 0x14, 0x87e9); - MP_WritePhyUshort(sc, 0x14, 0xe587); - MP_WritePhyUshort(sc, 0x14, 0xeaae); - MP_WritePhyUshort(sc, 0x14, 0x06bf); - MP_WritePhyUshort(sc, 0x14, 0x876c); - MP_WritePhyUshort(sc, 0x14, 0x024a); - MP_WritePhyUshort(sc, 0x14, 0x5fe2); - MP_WritePhyUshort(sc, 0x14, 0x87f7); - MP_WritePhyUshort(sc, 0x14, 0xf636); - MP_WritePhyUshort(sc, 0x14, 0xe687); - MP_WritePhyUshort(sc, 0x14, 0xf7ff); - MP_WritePhyUshort(sc, 0x14, 0xef97); - MP_WritePhyUshort(sc, 0x14, 0xfffe); - MP_WritePhyUshort(sc, 0x14, 0xfdfc); - MP_WritePhyUshort(sc, 0x14, 0x04f8); - MP_WritePhyUshort(sc, 0x14, 0xf9fa); - MP_WritePhyUshort(sc, 0x14, 0xef69); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0x6602); - MP_WritePhyUshort(sc, 0x14, 0x44dc); - MP_WritePhyUshort(sc, 0x14, 0xad28); - MP_WritePhyUshort(sc, 0x14, 0x29bf); - MP_WritePhyUshort(sc, 0x14, 0x8763); - MP_WritePhyUshort(sc, 0x14, 0x0244); - MP_WritePhyUshort(sc, 0x14, 0xdcef); - MP_WritePhyUshort(sc, 0x14, 0x54bf); - MP_WritePhyUshort(sc, 0x14, 0x8760); - MP_WritePhyUshort(sc, 0x14, 0x0244); - MP_WritePhyUshort(sc, 0x14, 0xdcac); - MP_WritePhyUshort(sc, 0x14, 0x290d); - MP_WritePhyUshort(sc, 0x14, 0xac28); - MP_WritePhyUshort(sc, 0x14, 0x05a3); - MP_WritePhyUshort(sc, 0x14, 0x020c); - MP_WritePhyUshort(sc, 0x14, 0xae10); - MP_WritePhyUshort(sc, 0x14, 0xa303); - MP_WritePhyUshort(sc, 0x14, 0x07ae); - MP_WritePhyUshort(sc, 0x14, 0x0ba3); - MP_WritePhyUshort(sc, 0x14, 0x0402); - MP_WritePhyUshort(sc, 0x14, 0xae06); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0x6c02); - MP_WritePhyUshort(sc, 0x14, 0x4a5f); - MP_WritePhyUshort(sc, 0x14, 0xef96); - MP_WritePhyUshort(sc, 0x14, 0xfefd); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xf8f9); - MP_WritePhyUshort(sc, 0x14, 0xfafb); - MP_WritePhyUshort(sc, 0x14, 0xef69); - MP_WritePhyUshort(sc, 0x14, 0xfae0); - MP_WritePhyUshort(sc, 0x14, 0x8015); - MP_WritePhyUshort(sc, 0x14, 0xad25); - MP_WritePhyUshort(sc, 0x14, 0x41d2); - MP_WritePhyUshort(sc, 0x14, 0x0002); - MP_WritePhyUshort(sc, 0x14, 0x86f3); - MP_WritePhyUshort(sc, 0x14, 0xe087); - MP_WritePhyUshort(sc, 0x14, 0xebe1); - MP_WritePhyUshort(sc, 0x14, 0x87ec); - MP_WritePhyUshort(sc, 0x14, 0x1b46); - MP_WritePhyUshort(sc, 0x14, 0xab26); - MP_WritePhyUshort(sc, 0x14, 0xd40b); - MP_WritePhyUshort(sc, 0x14, 0xff1b); - MP_WritePhyUshort(sc, 0x14, 0x46aa); - MP_WritePhyUshort(sc, 0x14, 0x1fac); - MP_WritePhyUshort(sc, 0x14, 0x3204); - MP_WritePhyUshort(sc, 0x14, 0xef32); - MP_WritePhyUshort(sc, 0x14, 0xae02); - MP_WritePhyUshort(sc, 0x14, 0xd304); - MP_WritePhyUshort(sc, 0x14, 0x0c31); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0xeb1a); - MP_WritePhyUshort(sc, 0x14, 0x93d8); - MP_WritePhyUshort(sc, 0x14, 0x19d9); - MP_WritePhyUshort(sc, 0x14, 0x1b46); - MP_WritePhyUshort(sc, 0x14, 0xab0e); - MP_WritePhyUshort(sc, 0x14, 0x19d8); - MP_WritePhyUshort(sc, 0x14, 0x19d9); - MP_WritePhyUshort(sc, 0x14, 0x1b46); - MP_WritePhyUshort(sc, 0x14, 0xaa06); - MP_WritePhyUshort(sc, 0x14, 0x12a2); - MP_WritePhyUshort(sc, 0x14, 0x08c9); - MP_WritePhyUshort(sc, 0x14, 0xae06); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0x6902); - MP_WritePhyUshort(sc, 0x14, 0x4a5f); - MP_WritePhyUshort(sc, 0x14, 0xfeef); - MP_WritePhyUshort(sc, 0x14, 0x96ff); - MP_WritePhyUshort(sc, 0x14, 0xfefd); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xf8fb); - MP_WritePhyUshort(sc, 0x14, 0xef79); - MP_WritePhyUshort(sc, 0x14, 0xa200); - MP_WritePhyUshort(sc, 0x14, 0x05bf); - MP_WritePhyUshort(sc, 0x14, 0x876f); - MP_WritePhyUshort(sc, 0x14, 0xae33); - MP_WritePhyUshort(sc, 0x14, 0xa201); - MP_WritePhyUshort(sc, 0x14, 0x05bf); - MP_WritePhyUshort(sc, 0x14, 0x8772); - MP_WritePhyUshort(sc, 0x14, 0xae2b); - MP_WritePhyUshort(sc, 0x14, 0xa202); - MP_WritePhyUshort(sc, 0x14, 0x05bf); - MP_WritePhyUshort(sc, 0x14, 0x8775); - MP_WritePhyUshort(sc, 0x14, 0xae23); - MP_WritePhyUshort(sc, 0x14, 0xa203); - MP_WritePhyUshort(sc, 0x14, 0x05bf); - MP_WritePhyUshort(sc, 0x14, 0x8778); - MP_WritePhyUshort(sc, 0x14, 0xae1b); - MP_WritePhyUshort(sc, 0x14, 0xa204); - MP_WritePhyUshort(sc, 0x14, 0x05bf); - MP_WritePhyUshort(sc, 0x14, 0x877b); - MP_WritePhyUshort(sc, 0x14, 0xae13); - MP_WritePhyUshort(sc, 0x14, 0xa205); - MP_WritePhyUshort(sc, 0x14, 0x05bf); - MP_WritePhyUshort(sc, 0x14, 0x877e); - MP_WritePhyUshort(sc, 0x14, 0xae0b); - MP_WritePhyUshort(sc, 0x14, 0xa206); - MP_WritePhyUshort(sc, 0x14, 0x05bf); - MP_WritePhyUshort(sc, 0x14, 0x8781); - MP_WritePhyUshort(sc, 0x14, 0xae03); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0x8402); - MP_WritePhyUshort(sc, 0x14, 0x44dc); - MP_WritePhyUshort(sc, 0x14, 0xef64); - MP_WritePhyUshort(sc, 0x14, 0xef97); - MP_WritePhyUshort(sc, 0x14, 0xfffc); - MP_WritePhyUshort(sc, 0x14, 0x04af); - MP_WritePhyUshort(sc, 0x14, 0x00ed); - MP_WritePhyUshort(sc, 0x14, 0x0220); - MP_WritePhyUshort(sc, 0x14, 0xa5f8); - MP_WritePhyUshort(sc, 0x14, 0xfaef); - MP_WritePhyUshort(sc, 0x14, 0x69bf); - MP_WritePhyUshort(sc, 0x14, 0x4554); - MP_WritePhyUshort(sc, 0x14, 0x0244); - MP_WritePhyUshort(sc, 0x14, 0xdce0); - MP_WritePhyUshort(sc, 0x14, 0x87ff); - MP_WritePhyUshort(sc, 0x14, 0x1f01); - MP_WritePhyUshort(sc, 0x14, 0x9e06); - MP_WritePhyUshort(sc, 0x14, 0xe587); - MP_WritePhyUshort(sc, 0x14, 0xff02); - MP_WritePhyUshort(sc, 0x14, 0x4b05); - MP_WritePhyUshort(sc, 0x14, 0xef96); - MP_WritePhyUshort(sc, 0x14, 0xfefc); - MP_WritePhyUshort(sc, 0x14, 0xaf03); - MP_WritePhyUshort(sc, 0x14, 0x8c54); - MP_WritePhyUshort(sc, 0x14, 0xa434); - MP_WritePhyUshort(sc, 0x14, 0x74a6); - MP_WritePhyUshort(sc, 0x14, 0x0022); - MP_WritePhyUshort(sc, 0x14, 0xa434); - MP_WritePhyUshort(sc, 0x14, 0x11b8); - MP_WritePhyUshort(sc, 0x14, 0x4222); - MP_WritePhyUshort(sc, 0x14, 0xb842); - MP_WritePhyUshort(sc, 0x14, 0xf0a2); - MP_WritePhyUshort(sc, 0x14, 0x00f0); - MP_WritePhyUshort(sc, 0x14, 0xa202); - MP_WritePhyUshort(sc, 0x14, 0xf0a2); - MP_WritePhyUshort(sc, 0x14, 0x04f0); - MP_WritePhyUshort(sc, 0x14, 0xa206); - MP_WritePhyUshort(sc, 0x14, 0xf0a2); - MP_WritePhyUshort(sc, 0x14, 0x08f0); - MP_WritePhyUshort(sc, 0x14, 0xa20a); - MP_WritePhyUshort(sc, 0x14, 0xf0a2); - MP_WritePhyUshort(sc, 0x14, 0x0cf0); - MP_WritePhyUshort(sc, 0x14, 0xa20e); - MP_WritePhyUshort(sc, 0x14, 0x55b8); - MP_WritePhyUshort(sc, 0x14, 0x20d9); - MP_WritePhyUshort(sc, 0x14, 0xc608); - MP_WritePhyUshort(sc, 0x14, 0xaac4); - MP_WritePhyUshort(sc, 0x14, 0x3000); - MP_WritePhyUshort(sc, 0x14, 0xc614); - MP_WritePhyUshort(sc, 0x14, 0x33c4); - MP_WritePhyUshort(sc, 0x14, 0x1a88); - MP_WritePhyUshort(sc, 0x14, 0xc42e); - MP_WritePhyUshort(sc, 0x14, 0x22c4); - MP_WritePhyUshort(sc, 0x14, 0x2e54); - MP_WritePhyUshort(sc, 0x14, 0xc41a); - MP_WritePhyUshort(sc, 0x13, 0xb818); - MP_WritePhyUshort(sc, 0x14, 0x1a01); - MP_WritePhyUshort(sc, 0x13, 0xb81a); - MP_WritePhyUshort(sc, 0x14, 0x020b); - MP_WritePhyUshort(sc, 0x13, 0xb81c); - MP_WritePhyUshort(sc, 0x14, 0x03ce); - MP_WritePhyUshort(sc, 0x13, 0xb81e); - MP_WritePhyUshort(sc, 0x14, 0x00e7); - MP_WritePhyUshort(sc, 0x13, 0xb846); - MP_WritePhyUshort(sc, 0x14, 0x0389); - MP_WritePhyUshort(sc, 0x13, 0xb848); - MP_WritePhyUshort(sc, 0x14, 0xffff); - MP_WritePhyUshort(sc, 0x13, 0xb84a); - MP_WritePhyUshort(sc, 0x14, 0xffff); - MP_WritePhyUshort(sc, 0x13, 0xb84c); - MP_WritePhyUshort(sc, 0x14, 0xffff); - MP_WritePhyUshort(sc, 0x13, 0xb832); - MP_WritePhyUshort(sc, 0x14, 0x001f); - - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x0000); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0B82); - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); - PhyRegValue &= ~(BIT_0); - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8042); - MP_WritePhyUshort(sc, 0x14, 0x0000); - - re_clear_phy_mcu_patch_request(sc); - - if (sc->RequiredSecLanDonglePatch) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - PhyRegValue = MP_ReadPhyUshort(sc, 0x11); - PhyRegValue &= ~(BIT_6); - MP_WritePhyUshort(sc, 0x11, PhyRegValue); - } -} - -static void re_set_phy_mcu_8168ep_1(struct re_softc* sc) -{ - u_int16_t PhyRegValue; - - re_set_phy_mcu_patch_request(sc); - - MP_WritePhyUshort(sc, 0x1f, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8146); - MP_WritePhyUshort(sc, 0x14, 0x2700); - MP_WritePhyUshort(sc, 0x13, 0xB82E); - MP_WritePhyUshort(sc, 0x14, 0x0001); - - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0xb820); - MP_WritePhyUshort(sc, 0x14, 0x0090); - MP_WritePhyUshort(sc, 0x13, 0xa012); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x13, 0xa014); - MP_WritePhyUshort(sc, 0x14, 0x2c04); - MP_WritePhyUshort(sc, 0x14, 0x2c1b); - MP_WritePhyUshort(sc, 0x14, 0x2c65); - MP_WritePhyUshort(sc, 0x14, 0x2d14); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x4092); - MP_WritePhyUshort(sc, 0x14, 0xba04); - MP_WritePhyUshort(sc, 0x14, 0x3084); - MP_WritePhyUshort(sc, 0x14, 0x1d04); - MP_WritePhyUshort(sc, 0x14, 0x1cdd); - MP_WritePhyUshort(sc, 0x14, 0x1ce8); - MP_WritePhyUshort(sc, 0x14, 0xaeff); - MP_WritePhyUshort(sc, 0x14, 0xaf02); - MP_WritePhyUshort(sc, 0x14, 0x8f02); - MP_WritePhyUshort(sc, 0x14, 0x8eff); - MP_WritePhyUshort(sc, 0x14, 0xce01); - MP_WritePhyUshort(sc, 0x14, 0xe070); - MP_WritePhyUshort(sc, 0x14, 0x0f00); - MP_WritePhyUshort(sc, 0x14, 0xaf01); - MP_WritePhyUshort(sc, 0x14, 0x8f01); - MP_WritePhyUshort(sc, 0x14, 0xd712); - MP_WritePhyUshort(sc, 0x14, 0x5fe8); - MP_WritePhyUshort(sc, 0x14, 0xaf02); - MP_WritePhyUshort(sc, 0x14, 0x8f02); - MP_WritePhyUshort(sc, 0x14, 0x8e01); - MP_WritePhyUshort(sc, 0x14, 0x1cf2); - MP_WritePhyUshort(sc, 0x14, 0x2825); - MP_WritePhyUshort(sc, 0x14, 0xd05a); - MP_WritePhyUshort(sc, 0x14, 0xd19a); - MP_WritePhyUshort(sc, 0x14, 0xd709); - MP_WritePhyUshort(sc, 0x14, 0x608f); - MP_WritePhyUshort(sc, 0x14, 0xd06b); - MP_WritePhyUshort(sc, 0x14, 0xd18a); - MP_WritePhyUshort(sc, 0x14, 0x2c25); - MP_WritePhyUshort(sc, 0x14, 0xd0be); - MP_WritePhyUshort(sc, 0x14, 0xd188); - MP_WritePhyUshort(sc, 0x14, 0x2c25); - MP_WritePhyUshort(sc, 0x14, 0xd708); - MP_WritePhyUshort(sc, 0x14, 0x4072); - MP_WritePhyUshort(sc, 0x14, 0xc104); - MP_WritePhyUshort(sc, 0x14, 0x2c37); - MP_WritePhyUshort(sc, 0x14, 0x4076); - MP_WritePhyUshort(sc, 0x14, 0xc110); - MP_WritePhyUshort(sc, 0x14, 0x2c37); - MP_WritePhyUshort(sc, 0x14, 0x4071); - MP_WritePhyUshort(sc, 0x14, 0xc102); - MP_WritePhyUshort(sc, 0x14, 0x2c37); - MP_WritePhyUshort(sc, 0x14, 0x4070); - MP_WritePhyUshort(sc, 0x14, 0xc101); - MP_WritePhyUshort(sc, 0x14, 0x2c37); - MP_WritePhyUshort(sc, 0x14, 0x1786); - MP_WritePhyUshort(sc, 0x14, 0xd709); - MP_WritePhyUshort(sc, 0x14, 0x3390); - MP_WritePhyUshort(sc, 0x14, 0x5c32); - MP_WritePhyUshort(sc, 0x14, 0x2c47); - MP_WritePhyUshort(sc, 0x14, 0x1786); - MP_WritePhyUshort(sc, 0x14, 0xd708); - MP_WritePhyUshort(sc, 0x14, 0x6193); - MP_WritePhyUshort(sc, 0x14, 0xd709); - MP_WritePhyUshort(sc, 0x14, 0x5f9d); - MP_WritePhyUshort(sc, 0x14, 0x408b); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x6042); - MP_WritePhyUshort(sc, 0x14, 0xb401); - MP_WritePhyUshort(sc, 0x14, 0x1786); - MP_WritePhyUshort(sc, 0x14, 0xd708); - MP_WritePhyUshort(sc, 0x14, 0x6073); - MP_WritePhyUshort(sc, 0x14, 0x5fbc); - MP_WritePhyUshort(sc, 0x14, 0x2c46); - MP_WritePhyUshort(sc, 0x14, 0x26fe); - MP_WritePhyUshort(sc, 0x14, 0xb280); - MP_WritePhyUshort(sc, 0x14, 0xa841); - MP_WritePhyUshort(sc, 0x14, 0x94e0); - MP_WritePhyUshort(sc, 0x14, 0x8710); - MP_WritePhyUshort(sc, 0x14, 0xd709); - MP_WritePhyUshort(sc, 0x14, 0x42ec); - MP_WritePhyUshort(sc, 0x14, 0x606d); - MP_WritePhyUshort(sc, 0x14, 0xd207); - MP_WritePhyUshort(sc, 0x14, 0x2c50); - MP_WritePhyUshort(sc, 0x14, 0xd203); - MP_WritePhyUshort(sc, 0x14, 0x33ff); - MP_WritePhyUshort(sc, 0x14, 0x5647); - MP_WritePhyUshort(sc, 0x14, 0x3275); - MP_WritePhyUshort(sc, 0x14, 0x7c57); - MP_WritePhyUshort(sc, 0x14, 0xb240); - MP_WritePhyUshort(sc, 0x14, 0xb402); - MP_WritePhyUshort(sc, 0x14, 0x2647); - MP_WritePhyUshort(sc, 0x14, 0x6096); - MP_WritePhyUshort(sc, 0x14, 0xb240); - MP_WritePhyUshort(sc, 0x14, 0xb406); - MP_WritePhyUshort(sc, 0x14, 0x2647); - MP_WritePhyUshort(sc, 0x14, 0x31d7); - MP_WritePhyUshort(sc, 0x14, 0x7c60); - MP_WritePhyUshort(sc, 0x14, 0xb240); - MP_WritePhyUshort(sc, 0x14, 0xb40e); - MP_WritePhyUshort(sc, 0x14, 0x2647); - MP_WritePhyUshort(sc, 0x14, 0xb410); - MP_WritePhyUshort(sc, 0x14, 0x8802); - MP_WritePhyUshort(sc, 0x14, 0xb240); - MP_WritePhyUshort(sc, 0x14, 0x940e); - MP_WritePhyUshort(sc, 0x14, 0x2647); - MP_WritePhyUshort(sc, 0x14, 0xba04); - MP_WritePhyUshort(sc, 0x14, 0x1cdd); - MP_WritePhyUshort(sc, 0x14, 0xa902); - MP_WritePhyUshort(sc, 0x14, 0xd711); - MP_WritePhyUshort(sc, 0x14, 0x4045); - MP_WritePhyUshort(sc, 0x14, 0xa980); - MP_WritePhyUshort(sc, 0x14, 0x3003); - MP_WritePhyUshort(sc, 0x14, 0x5a19); - MP_WritePhyUshort(sc, 0x14, 0xa540); - MP_WritePhyUshort(sc, 0x14, 0xa601); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4043); - MP_WritePhyUshort(sc, 0x14, 0xa910); - MP_WritePhyUshort(sc, 0x14, 0xd711); - MP_WritePhyUshort(sc, 0x14, 0x60a0); - MP_WritePhyUshort(sc, 0x14, 0xca33); - MP_WritePhyUshort(sc, 0x14, 0xcb33); - MP_WritePhyUshort(sc, 0x14, 0xa941); - MP_WritePhyUshort(sc, 0x14, 0x2c7b); - MP_WritePhyUshort(sc, 0x14, 0xcaff); - MP_WritePhyUshort(sc, 0x14, 0xcbff); - MP_WritePhyUshort(sc, 0x14, 0xa921); - MP_WritePhyUshort(sc, 0x14, 0xce02); - MP_WritePhyUshort(sc, 0x14, 0xe070); - MP_WritePhyUshort(sc, 0x14, 0x0f10); - MP_WritePhyUshort(sc, 0x14, 0xaf01); - MP_WritePhyUshort(sc, 0x14, 0x8f01); - MP_WritePhyUshort(sc, 0x14, 0x1791); - MP_WritePhyUshort(sc, 0x14, 0x8e02); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x41a3); - MP_WritePhyUshort(sc, 0x14, 0xa140); - MP_WritePhyUshort(sc, 0x14, 0xa220); - MP_WritePhyUshort(sc, 0x14, 0xce10); - MP_WritePhyUshort(sc, 0x14, 0xe070); - MP_WritePhyUshort(sc, 0x14, 0x0f40); - MP_WritePhyUshort(sc, 0x14, 0xaf01); - MP_WritePhyUshort(sc, 0x14, 0x8f01); - MP_WritePhyUshort(sc, 0x14, 0x1791); - MP_WritePhyUshort(sc, 0x14, 0x8e10); - MP_WritePhyUshort(sc, 0x14, 0x8140); - MP_WritePhyUshort(sc, 0x14, 0x8220); - MP_WritePhyUshort(sc, 0x14, 0xa301); - MP_WritePhyUshort(sc, 0x14, 0x17b2); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x609c); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7fa4); - MP_WritePhyUshort(sc, 0x14, 0x2cdb); - MP_WritePhyUshort(sc, 0x14, 0x1cf0); - MP_WritePhyUshort(sc, 0x14, 0xce04); - MP_WritePhyUshort(sc, 0x14, 0xe070); - MP_WritePhyUshort(sc, 0x14, 0x0f20); - MP_WritePhyUshort(sc, 0x14, 0xaf01); - MP_WritePhyUshort(sc, 0x14, 0x8f01); - MP_WritePhyUshort(sc, 0x14, 0x1791); - MP_WritePhyUshort(sc, 0x14, 0x8e04); - MP_WritePhyUshort(sc, 0x14, 0x6044); - MP_WritePhyUshort(sc, 0x14, 0x2cdb); - MP_WritePhyUshort(sc, 0x14, 0xa520); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4043); - MP_WritePhyUshort(sc, 0x14, 0x2cc8); - MP_WritePhyUshort(sc, 0x14, 0xe00f); - MP_WritePhyUshort(sc, 0x14, 0x0501); - MP_WritePhyUshort(sc, 0x14, 0x1cf6); - MP_WritePhyUshort(sc, 0x14, 0xb801); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x4060); - MP_WritePhyUshort(sc, 0x14, 0x7fc4); - MP_WritePhyUshort(sc, 0x14, 0x2cdb); - MP_WritePhyUshort(sc, 0x14, 0x1cfc); - MP_WritePhyUshort(sc, 0x14, 0xe00f); - MP_WritePhyUshort(sc, 0x14, 0x0502); - MP_WritePhyUshort(sc, 0x14, 0x1cf6); - MP_WritePhyUshort(sc, 0x14, 0xb802); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x4061); - MP_WritePhyUshort(sc, 0x14, 0x7fc4); - MP_WritePhyUshort(sc, 0x14, 0x2cdb); - MP_WritePhyUshort(sc, 0x14, 0x1cfc); - MP_WritePhyUshort(sc, 0x14, 0xe00f); - MP_WritePhyUshort(sc, 0x14, 0x0504); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x6099); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7fa4); - MP_WritePhyUshort(sc, 0x14, 0x2cdb); - MP_WritePhyUshort(sc, 0x14, 0xc17f); - MP_WritePhyUshort(sc, 0x14, 0xc200); - MP_WritePhyUshort(sc, 0x14, 0xc43f); - MP_WritePhyUshort(sc, 0x14, 0xcc03); - MP_WritePhyUshort(sc, 0x14, 0xa701); - MP_WritePhyUshort(sc, 0x14, 0xa510); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4018); - MP_WritePhyUshort(sc, 0x14, 0x9910); - MP_WritePhyUshort(sc, 0x14, 0x8510); - MP_WritePhyUshort(sc, 0x14, 0x28a1); - MP_WritePhyUshort(sc, 0x14, 0xe00f); - MP_WritePhyUshort(sc, 0x14, 0x0504); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x6099); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7fa4); - MP_WritePhyUshort(sc, 0x14, 0x2cdb); - MP_WritePhyUshort(sc, 0x14, 0xa608); - MP_WritePhyUshort(sc, 0x14, 0xc17d); - MP_WritePhyUshort(sc, 0x14, 0xc200); - MP_WritePhyUshort(sc, 0x14, 0xc43f); - MP_WritePhyUshort(sc, 0x14, 0xcc03); - MP_WritePhyUshort(sc, 0x14, 0xa701); - MP_WritePhyUshort(sc, 0x14, 0xa510); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4018); - MP_WritePhyUshort(sc, 0x14, 0x9910); - MP_WritePhyUshort(sc, 0x14, 0x8510); - MP_WritePhyUshort(sc, 0x14, 0x298e); - MP_WritePhyUshort(sc, 0x14, 0x17bd); - MP_WritePhyUshort(sc, 0x14, 0x2815); - MP_WritePhyUshort(sc, 0x14, 0xc000); - MP_WritePhyUshort(sc, 0x14, 0xc100); - MP_WritePhyUshort(sc, 0x14, 0xc200); - MP_WritePhyUshort(sc, 0x14, 0xc300); - MP_WritePhyUshort(sc, 0x14, 0xc400); - MP_WritePhyUshort(sc, 0x14, 0xc500); - MP_WritePhyUshort(sc, 0x14, 0xc600); - MP_WritePhyUshort(sc, 0x14, 0xc7c1); - MP_WritePhyUshort(sc, 0x14, 0xc800); - MP_WritePhyUshort(sc, 0x14, 0xcc00); - MP_WritePhyUshort(sc, 0x14, 0x0800); - MP_WritePhyUshort(sc, 0x14, 0xca0f); - MP_WritePhyUshort(sc, 0x14, 0xcbff); - MP_WritePhyUshort(sc, 0x14, 0xa901); - MP_WritePhyUshort(sc, 0x14, 0x8902); - MP_WritePhyUshort(sc, 0x14, 0xc900); - MP_WritePhyUshort(sc, 0x14, 0xca00); - MP_WritePhyUshort(sc, 0x14, 0xcb00); - MP_WritePhyUshort(sc, 0x14, 0x0800); - MP_WritePhyUshort(sc, 0x14, 0xb804); - MP_WritePhyUshort(sc, 0x14, 0x0800); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x6044); - MP_WritePhyUshort(sc, 0x14, 0x9804); - MP_WritePhyUshort(sc, 0x14, 0x0800); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x6099); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7fa4); - MP_WritePhyUshort(sc, 0x14, 0x2cdb); - MP_WritePhyUshort(sc, 0x14, 0x0800); - MP_WritePhyUshort(sc, 0x14, 0xa510); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x6098); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7fa4); - MP_WritePhyUshort(sc, 0x14, 0x2cdb); - MP_WritePhyUshort(sc, 0x14, 0x8510); - MP_WritePhyUshort(sc, 0x14, 0x0800); - MP_WritePhyUshort(sc, 0x14, 0xd711); - MP_WritePhyUshort(sc, 0x14, 0x3003); - MP_WritePhyUshort(sc, 0x14, 0x1d08); - MP_WritePhyUshort(sc, 0x14, 0x2d12); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x60be); - MP_WritePhyUshort(sc, 0x14, 0xe060); - MP_WritePhyUshort(sc, 0x14, 0x0920); - MP_WritePhyUshort(sc, 0x14, 0x1cdd); - MP_WritePhyUshort(sc, 0x14, 0x2c90); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x3063); - MP_WritePhyUshort(sc, 0x14, 0x19b0); - MP_WritePhyUshort(sc, 0x14, 0x28d5); - MP_WritePhyUshort(sc, 0x14, 0x1cdd); - MP_WritePhyUshort(sc, 0x14, 0x2a25); - MP_WritePhyUshort(sc, 0x14, 0xa802); - MP_WritePhyUshort(sc, 0x14, 0xa303); - MP_WritePhyUshort(sc, 0x14, 0x843f); - MP_WritePhyUshort(sc, 0x14, 0x81ff); - MP_WritePhyUshort(sc, 0x14, 0x8208); - MP_WritePhyUshort(sc, 0x14, 0xa201); - MP_WritePhyUshort(sc, 0x14, 0xc001); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x30a0); - MP_WritePhyUshort(sc, 0x14, 0x0d23); - MP_WritePhyUshort(sc, 0x14, 0x30a0); - MP_WritePhyUshort(sc, 0x14, 0x3d1a); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7f4c); - MP_WritePhyUshort(sc, 0x14, 0x2b1e); - MP_WritePhyUshort(sc, 0x14, 0xe003); - MP_WritePhyUshort(sc, 0x14, 0x0202); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x6090); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7fac); - MP_WritePhyUshort(sc, 0x14, 0x2b1e); - MP_WritePhyUshort(sc, 0x14, 0xa20c); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x6091); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7fac); - MP_WritePhyUshort(sc, 0x14, 0x2b1e); - MP_WritePhyUshort(sc, 0x14, 0x820e); - MP_WritePhyUshort(sc, 0x14, 0xa3e0); - MP_WritePhyUshort(sc, 0x14, 0xa520); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x609d); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7fac); - MP_WritePhyUshort(sc, 0x14, 0x2b1e); - MP_WritePhyUshort(sc, 0x14, 0x8520); - MP_WritePhyUshort(sc, 0x14, 0x6703); - MP_WritePhyUshort(sc, 0x14, 0x2d3b); - MP_WritePhyUshort(sc, 0x14, 0xa13e); - MP_WritePhyUshort(sc, 0x14, 0xc001); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4000); - MP_WritePhyUshort(sc, 0x14, 0x6046); - MP_WritePhyUshort(sc, 0x14, 0x2d14); - MP_WritePhyUshort(sc, 0x14, 0xa43f); - MP_WritePhyUshort(sc, 0x14, 0xa101); - MP_WritePhyUshort(sc, 0x14, 0xc020); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x3121); - MP_WritePhyUshort(sc, 0x14, 0x0d4c); - MP_WritePhyUshort(sc, 0x14, 0x30c0); - MP_WritePhyUshort(sc, 0x14, 0x3d14); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7f4c); - MP_WritePhyUshort(sc, 0x14, 0x2b1e); - MP_WritePhyUshort(sc, 0x14, 0xa540); - MP_WritePhyUshort(sc, 0x14, 0xc001); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4001); - MP_WritePhyUshort(sc, 0x14, 0xe00f); - MP_WritePhyUshort(sc, 0x14, 0x0501); - MP_WritePhyUshort(sc, 0x14, 0x1db3); - MP_WritePhyUshort(sc, 0x14, 0xc1c4); - MP_WritePhyUshort(sc, 0x14, 0xa268); - MP_WritePhyUshort(sc, 0x14, 0xa303); - MP_WritePhyUshort(sc, 0x14, 0x8420); - MP_WritePhyUshort(sc, 0x14, 0xe00f); - MP_WritePhyUshort(sc, 0x14, 0x0502); - MP_WritePhyUshort(sc, 0x14, 0x1db3); - MP_WritePhyUshort(sc, 0x14, 0xc002); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4000); - MP_WritePhyUshort(sc, 0x14, 0x8208); - MP_WritePhyUshort(sc, 0x14, 0x8410); - MP_WritePhyUshort(sc, 0x14, 0xa121); - MP_WritePhyUshort(sc, 0x14, 0xc002); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4000); - MP_WritePhyUshort(sc, 0x14, 0x8120); - MP_WritePhyUshort(sc, 0x14, 0x8180); - MP_WritePhyUshort(sc, 0x14, 0x1d9e); - MP_WritePhyUshort(sc, 0x14, 0xa180); - MP_WritePhyUshort(sc, 0x14, 0xa13a); - MP_WritePhyUshort(sc, 0x14, 0x8240); - MP_WritePhyUshort(sc, 0x14, 0xa430); - MP_WritePhyUshort(sc, 0x14, 0xc010); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x30e1); - MP_WritePhyUshort(sc, 0x14, 0x0b24); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7f8c); - MP_WritePhyUshort(sc, 0x14, 0x2b1e); - MP_WritePhyUshort(sc, 0x14, 0xa480); - MP_WritePhyUshort(sc, 0x14, 0xa230); - MP_WritePhyUshort(sc, 0x14, 0xa303); - MP_WritePhyUshort(sc, 0x14, 0xc001); - MP_WritePhyUshort(sc, 0x14, 0xd70c); - MP_WritePhyUshort(sc, 0x14, 0x4124); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x6120); - MP_WritePhyUshort(sc, 0x14, 0xd711); - MP_WritePhyUshort(sc, 0x14, 0x3128); - MP_WritePhyUshort(sc, 0x14, 0x3d7d); - MP_WritePhyUshort(sc, 0x14, 0x2d77); - MP_WritePhyUshort(sc, 0x14, 0xa801); - MP_WritePhyUshort(sc, 0x14, 0x2d73); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4000); - MP_WritePhyUshort(sc, 0x14, 0xe018); - MP_WritePhyUshort(sc, 0x14, 0x0208); - MP_WritePhyUshort(sc, 0x14, 0xa1f8); - MP_WritePhyUshort(sc, 0x14, 0x8480); - MP_WritePhyUshort(sc, 0x14, 0xc004); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4000); - MP_WritePhyUshort(sc, 0x14, 0x6046); - MP_WritePhyUshort(sc, 0x14, 0x2d14); - MP_WritePhyUshort(sc, 0x14, 0xa43f); - MP_WritePhyUshort(sc, 0x14, 0xa105); - MP_WritePhyUshort(sc, 0x14, 0x8228); - MP_WritePhyUshort(sc, 0x14, 0xc004); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4000); - MP_WritePhyUshort(sc, 0x14, 0x81bc); - MP_WritePhyUshort(sc, 0x14, 0xa220); - MP_WritePhyUshort(sc, 0x14, 0x1d9e); - MP_WritePhyUshort(sc, 0x14, 0x8220); - MP_WritePhyUshort(sc, 0x14, 0xa1bc); - MP_WritePhyUshort(sc, 0x14, 0xc040); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x30e1); - MP_WritePhyUshort(sc, 0x14, 0x0b24); - MP_WritePhyUshort(sc, 0x14, 0x30e1); - MP_WritePhyUshort(sc, 0x14, 0x3d14); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7f4c); - MP_WritePhyUshort(sc, 0x14, 0x2b1e); - MP_WritePhyUshort(sc, 0x14, 0xa802); - MP_WritePhyUshort(sc, 0x14, 0xd70c); - MP_WritePhyUshort(sc, 0x14, 0x4244); - MP_WritePhyUshort(sc, 0x14, 0xa301); - MP_WritePhyUshort(sc, 0x14, 0xc004); - MP_WritePhyUshort(sc, 0x14, 0xd711); - MP_WritePhyUshort(sc, 0x14, 0x3128); - MP_WritePhyUshort(sc, 0x14, 0x3dac); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x5f80); - MP_WritePhyUshort(sc, 0x14, 0xd711); - MP_WritePhyUshort(sc, 0x14, 0x3109); - MP_WritePhyUshort(sc, 0x14, 0x3dae); - MP_WritePhyUshort(sc, 0x14, 0x2db2); - MP_WritePhyUshort(sc, 0x14, 0xa801); - MP_WritePhyUshort(sc, 0x14, 0x2da1); - MP_WritePhyUshort(sc, 0x14, 0xa802); - MP_WritePhyUshort(sc, 0x14, 0xc004); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x4000); - MP_WritePhyUshort(sc, 0x14, 0x0800); - MP_WritePhyUshort(sc, 0x14, 0xa510); - MP_WritePhyUshort(sc, 0x14, 0xd710); - MP_WritePhyUshort(sc, 0x14, 0x609a); - MP_WritePhyUshort(sc, 0x14, 0xd71e); - MP_WritePhyUshort(sc, 0x14, 0x7fac); - MP_WritePhyUshort(sc, 0x14, 0x2b1e); - MP_WritePhyUshort(sc, 0x14, 0x8510); - MP_WritePhyUshort(sc, 0x14, 0x0800); - MP_WritePhyUshort(sc, 0x13, 0xa01a); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x13, 0xa006); - MP_WritePhyUshort(sc, 0x14, 0x0b3e); - MP_WritePhyUshort(sc, 0x13, 0xa004); - MP_WritePhyUshort(sc, 0x14, 0x0828); - MP_WritePhyUshort(sc, 0x13, 0xa002); - MP_WritePhyUshort(sc, 0x14, 0x06dd); - MP_WritePhyUshort(sc, 0x13, 0xa000); - MP_WritePhyUshort(sc, 0x14, 0xf815); - MP_WritePhyUshort(sc, 0x13, 0xb820); - MP_WritePhyUshort(sc, 0x14, 0x0010); - - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x83b0); - MP_WritePhyUshort(sc, 0x14, 0xaf83); - MP_WritePhyUshort(sc, 0x14, 0xbcaf); - MP_WritePhyUshort(sc, 0x14, 0x83c8); - MP_WritePhyUshort(sc, 0x14, 0xaf83); - MP_WritePhyUshort(sc, 0x14, 0xddaf); - MP_WritePhyUshort(sc, 0x14, 0x83e0); - MP_WritePhyUshort(sc, 0x14, 0x0204); - MP_WritePhyUshort(sc, 0x14, 0xa102); - MP_WritePhyUshort(sc, 0x14, 0x09b4); - MP_WritePhyUshort(sc, 0x14, 0x0284); - MP_WritePhyUshort(sc, 0x14, 0x62af); - MP_WritePhyUshort(sc, 0x14, 0x02ec); - MP_WritePhyUshort(sc, 0x14, 0xad20); - MP_WritePhyUshort(sc, 0x14, 0x0302); - MP_WritePhyUshort(sc, 0x14, 0x867d); - MP_WritePhyUshort(sc, 0x14, 0xad21); - MP_WritePhyUshort(sc, 0x14, 0x0302); - MP_WritePhyUshort(sc, 0x14, 0x85ca); - MP_WritePhyUshort(sc, 0x14, 0xad22); - MP_WritePhyUshort(sc, 0x14, 0x0302); - MP_WritePhyUshort(sc, 0x14, 0x1bce); - MP_WritePhyUshort(sc, 0x14, 0xaf18); - MP_WritePhyUshort(sc, 0x14, 0x11af); - MP_WritePhyUshort(sc, 0x14, 0x1811); - MP_WritePhyUshort(sc, 0x14, 0x0106); - MP_WritePhyUshort(sc, 0x14, 0xe081); - MP_WritePhyUshort(sc, 0x14, 0x48af); - MP_WritePhyUshort(sc, 0x14, 0x3b1f); - MP_WritePhyUshort(sc, 0x14, 0xf8f9); - MP_WritePhyUshort(sc, 0x14, 0xfaef); - MP_WritePhyUshort(sc, 0x14, 0x69ee); - MP_WritePhyUshort(sc, 0x14, 0x8010); - MP_WritePhyUshort(sc, 0x14, 0xf7d1); - MP_WritePhyUshort(sc, 0x14, 0x04bf); - MP_WritePhyUshort(sc, 0x14, 0x8776); - MP_WritePhyUshort(sc, 0x14, 0x0241); - MP_WritePhyUshort(sc, 0x14, 0x0a02); - MP_WritePhyUshort(sc, 0x14, 0x8704); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0x4fd7); - MP_WritePhyUshort(sc, 0x14, 0xb822); - MP_WritePhyUshort(sc, 0x14, 0xd00c); - MP_WritePhyUshort(sc, 0x14, 0x0241); - MP_WritePhyUshort(sc, 0x14, 0x03ee); - MP_WritePhyUshort(sc, 0x14, 0x80cd); - MP_WritePhyUshort(sc, 0x14, 0xa0ee); - MP_WritePhyUshort(sc, 0x14, 0x80ce); - MP_WritePhyUshort(sc, 0x14, 0x8bee); - MP_WritePhyUshort(sc, 0x14, 0x80d1); - MP_WritePhyUshort(sc, 0x14, 0xf5ee); - MP_WritePhyUshort(sc, 0x14, 0x80d2); - MP_WritePhyUshort(sc, 0x14, 0xa9ee); - MP_WritePhyUshort(sc, 0x14, 0x80d3); - MP_WritePhyUshort(sc, 0x14, 0x0aee); - MP_WritePhyUshort(sc, 0x14, 0x80f0); - MP_WritePhyUshort(sc, 0x14, 0x10ee); - MP_WritePhyUshort(sc, 0x14, 0x80f3); - MP_WritePhyUshort(sc, 0x14, 0x8fee); - MP_WritePhyUshort(sc, 0x14, 0x8101); - MP_WritePhyUshort(sc, 0x14, 0x1eee); - MP_WritePhyUshort(sc, 0x14, 0x810b); - MP_WritePhyUshort(sc, 0x14, 0x4aee); - MP_WritePhyUshort(sc, 0x14, 0x810c); - MP_WritePhyUshort(sc, 0x14, 0x7cee); - MP_WritePhyUshort(sc, 0x14, 0x8112); - MP_WritePhyUshort(sc, 0x14, 0x7fd1); - MP_WritePhyUshort(sc, 0x14, 0x0002); - MP_WritePhyUshort(sc, 0x14, 0x10e3); - MP_WritePhyUshort(sc, 0x14, 0xee80); - MP_WritePhyUshort(sc, 0x14, 0x8892); - MP_WritePhyUshort(sc, 0x14, 0xee80); - MP_WritePhyUshort(sc, 0x14, 0x8922); - MP_WritePhyUshort(sc, 0x14, 0xee80); - MP_WritePhyUshort(sc, 0x14, 0x9a80); - MP_WritePhyUshort(sc, 0x14, 0xee80); - MP_WritePhyUshort(sc, 0x14, 0x9b22); - MP_WritePhyUshort(sc, 0x14, 0xee80); - MP_WritePhyUshort(sc, 0x14, 0x9ca7); - MP_WritePhyUshort(sc, 0x14, 0xee80); - MP_WritePhyUshort(sc, 0x14, 0xa010); - MP_WritePhyUshort(sc, 0x14, 0xee80); - MP_WritePhyUshort(sc, 0x14, 0xa5a7); - MP_WritePhyUshort(sc, 0x14, 0xd200); - MP_WritePhyUshort(sc, 0x14, 0x020e); - MP_WritePhyUshort(sc, 0x14, 0x4b02); - MP_WritePhyUshort(sc, 0x14, 0x85c1); - MP_WritePhyUshort(sc, 0x14, 0xef96); - MP_WritePhyUshort(sc, 0x14, 0xfefd); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0x0284); - MP_WritePhyUshort(sc, 0x14, 0x7b02); - MP_WritePhyUshort(sc, 0x14, 0x84b4); - MP_WritePhyUshort(sc, 0x14, 0x020c); - MP_WritePhyUshort(sc, 0x14, 0x9202); - MP_WritePhyUshort(sc, 0x14, 0x0cab); - MP_WritePhyUshort(sc, 0x14, 0x020c); - MP_WritePhyUshort(sc, 0x14, 0xd602); - MP_WritePhyUshort(sc, 0x14, 0x0cef); - MP_WritePhyUshort(sc, 0x14, 0x020d); - MP_WritePhyUshort(sc, 0x14, 0x1a02); - MP_WritePhyUshort(sc, 0x14, 0x0c24); - MP_WritePhyUshort(sc, 0x14, 0x04f8); - MP_WritePhyUshort(sc, 0x14, 0xfaef); - MP_WritePhyUshort(sc, 0x14, 0x69e1); - MP_WritePhyUshort(sc, 0x14, 0x8234); - MP_WritePhyUshort(sc, 0x14, 0xac29); - MP_WritePhyUshort(sc, 0x14, 0x1ae0); - MP_WritePhyUshort(sc, 0x14, 0x8229); - MP_WritePhyUshort(sc, 0x14, 0xac21); - MP_WritePhyUshort(sc, 0x14, 0x02ae); - MP_WritePhyUshort(sc, 0x14, 0x2202); - MP_WritePhyUshort(sc, 0x14, 0x1085); - MP_WritePhyUshort(sc, 0x14, 0xf621); - MP_WritePhyUshort(sc, 0x14, 0xe482); - MP_WritePhyUshort(sc, 0x14, 0x29d1); - MP_WritePhyUshort(sc, 0x14, 0x01bf); - MP_WritePhyUshort(sc, 0x14, 0x4364); - MP_WritePhyUshort(sc, 0x14, 0x0241); - MP_WritePhyUshort(sc, 0x14, 0x0aae); - MP_WritePhyUshort(sc, 0x14, 0x1002); - MP_WritePhyUshort(sc, 0x14, 0x127a); - MP_WritePhyUshort(sc, 0x14, 0xf629); - MP_WritePhyUshort(sc, 0x14, 0xe582); - MP_WritePhyUshort(sc, 0x14, 0x34e0); - MP_WritePhyUshort(sc, 0x14, 0x8229); - MP_WritePhyUshort(sc, 0x14, 0xf621); - MP_WritePhyUshort(sc, 0x14, 0xe482); - MP_WritePhyUshort(sc, 0x14, 0x29ef); - MP_WritePhyUshort(sc, 0x14, 0x96fe); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xf8e1); - MP_WritePhyUshort(sc, 0x14, 0x8234); - MP_WritePhyUshort(sc, 0x14, 0xac2a); - MP_WritePhyUshort(sc, 0x14, 0x18e0); - MP_WritePhyUshort(sc, 0x14, 0x8229); - MP_WritePhyUshort(sc, 0x14, 0xac22); - MP_WritePhyUshort(sc, 0x14, 0x02ae); - MP_WritePhyUshort(sc, 0x14, 0x2602); - MP_WritePhyUshort(sc, 0x14, 0x84f9); - MP_WritePhyUshort(sc, 0x14, 0x0285); - MP_WritePhyUshort(sc, 0x14, 0x66d1); - MP_WritePhyUshort(sc, 0x14, 0x01bf); - MP_WritePhyUshort(sc, 0x14, 0x4367); - MP_WritePhyUshort(sc, 0x14, 0x0241); - MP_WritePhyUshort(sc, 0x14, 0x0aae); - MP_WritePhyUshort(sc, 0x14, 0x0e02); - MP_WritePhyUshort(sc, 0x14, 0x84eb); - MP_WritePhyUshort(sc, 0x14, 0x0285); - MP_WritePhyUshort(sc, 0x14, 0xaae1); - MP_WritePhyUshort(sc, 0x14, 0x8234); - MP_WritePhyUshort(sc, 0x14, 0xf62a); - MP_WritePhyUshort(sc, 0x14, 0xe582); - MP_WritePhyUshort(sc, 0x14, 0x34e0); - MP_WritePhyUshort(sc, 0x14, 0x8229); - MP_WritePhyUshort(sc, 0x14, 0xf622); - MP_WritePhyUshort(sc, 0x14, 0xe482); - MP_WritePhyUshort(sc, 0x14, 0x29fc); - MP_WritePhyUshort(sc, 0x14, 0x04f9); - MP_WritePhyUshort(sc, 0x14, 0xe280); - MP_WritePhyUshort(sc, 0x14, 0x11ad); - MP_WritePhyUshort(sc, 0x14, 0x3105); - MP_WritePhyUshort(sc, 0x14, 0xd200); - MP_WritePhyUshort(sc, 0x14, 0x020e); - MP_WritePhyUshort(sc, 0x14, 0x4bfd); - MP_WritePhyUshort(sc, 0x14, 0x04f8); - MP_WritePhyUshort(sc, 0x14, 0xf9fa); - MP_WritePhyUshort(sc, 0x14, 0xef69); - MP_WritePhyUshort(sc, 0x14, 0xe080); - MP_WritePhyUshort(sc, 0x14, 0x11ad); - MP_WritePhyUshort(sc, 0x14, 0x215c); - MP_WritePhyUshort(sc, 0x14, 0xbf42); - MP_WritePhyUshort(sc, 0x14, 0x5002); - MP_WritePhyUshort(sc, 0x14, 0x4148); - MP_WritePhyUshort(sc, 0x14, 0xac28); - MP_WritePhyUshort(sc, 0x14, 0x1bbf); - MP_WritePhyUshort(sc, 0x14, 0x4253); - MP_WritePhyUshort(sc, 0x14, 0x0241); - MP_WritePhyUshort(sc, 0x14, 0x48ac); - MP_WritePhyUshort(sc, 0x14, 0x2812); - MP_WritePhyUshort(sc, 0x14, 0xbf42); - MP_WritePhyUshort(sc, 0x14, 0x5902); - MP_WritePhyUshort(sc, 0x14, 0x4148); - MP_WritePhyUshort(sc, 0x14, 0xac28); - MP_WritePhyUshort(sc, 0x14, 0x04d3); - MP_WritePhyUshort(sc, 0x14, 0x00ae); - MP_WritePhyUshort(sc, 0x14, 0x07d3); - MP_WritePhyUshort(sc, 0x14, 0x06af); - MP_WritePhyUshort(sc, 0x14, 0x8557); - MP_WritePhyUshort(sc, 0x14, 0xd303); - MP_WritePhyUshort(sc, 0x14, 0xe080); - MP_WritePhyUshort(sc, 0x14, 0x11ad); - MP_WritePhyUshort(sc, 0x14, 0x2625); - MP_WritePhyUshort(sc, 0x14, 0xbf43); - MP_WritePhyUshort(sc, 0x14, 0xeb02); - MP_WritePhyUshort(sc, 0x14, 0x4148); - MP_WritePhyUshort(sc, 0x14, 0xe280); - MP_WritePhyUshort(sc, 0x14, 0x730d); - MP_WritePhyUshort(sc, 0x14, 0x21f6); - MP_WritePhyUshort(sc, 0x14, 0x370d); - MP_WritePhyUshort(sc, 0x14, 0x11f6); - MP_WritePhyUshort(sc, 0x14, 0x2f1b); - MP_WritePhyUshort(sc, 0x14, 0x21aa); - MP_WritePhyUshort(sc, 0x14, 0x02ae); - MP_WritePhyUshort(sc, 0x14, 0x10e2); - MP_WritePhyUshort(sc, 0x14, 0x8074); - MP_WritePhyUshort(sc, 0x14, 0x0d21); - MP_WritePhyUshort(sc, 0x14, 0xf637); - MP_WritePhyUshort(sc, 0x14, 0x1b21); - MP_WritePhyUshort(sc, 0x14, 0xaa03); - MP_WritePhyUshort(sc, 0x14, 0x13ae); - MP_WritePhyUshort(sc, 0x14, 0x022b); - MP_WritePhyUshort(sc, 0x14, 0x0202); - MP_WritePhyUshort(sc, 0x14, 0x0e36); - MP_WritePhyUshort(sc, 0x14, 0x020e); - MP_WritePhyUshort(sc, 0x14, 0x4b02); - MP_WritePhyUshort(sc, 0x14, 0x0f91); - MP_WritePhyUshort(sc, 0x14, 0xef96); - MP_WritePhyUshort(sc, 0x14, 0xfefd); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xf8f9); - MP_WritePhyUshort(sc, 0x14, 0xfaef); - MP_WritePhyUshort(sc, 0x14, 0x69e0); - MP_WritePhyUshort(sc, 0x14, 0x8012); - MP_WritePhyUshort(sc, 0x14, 0xad27); - MP_WritePhyUshort(sc, 0x14, 0x33bf); - MP_WritePhyUshort(sc, 0x14, 0x4250); - MP_WritePhyUshort(sc, 0x14, 0x0241); - MP_WritePhyUshort(sc, 0x14, 0x48ac); - MP_WritePhyUshort(sc, 0x14, 0x2809); - MP_WritePhyUshort(sc, 0x14, 0xbf42); - MP_WritePhyUshort(sc, 0x14, 0x5302); - MP_WritePhyUshort(sc, 0x14, 0x4148); - MP_WritePhyUshort(sc, 0x14, 0xad28); - MP_WritePhyUshort(sc, 0x14, 0x21bf); - MP_WritePhyUshort(sc, 0x14, 0x43eb); - MP_WritePhyUshort(sc, 0x14, 0x0241); - MP_WritePhyUshort(sc, 0x14, 0x48e3); - MP_WritePhyUshort(sc, 0x14, 0x87ff); - MP_WritePhyUshort(sc, 0x14, 0xd200); - MP_WritePhyUshort(sc, 0x14, 0x1b45); - MP_WritePhyUshort(sc, 0x14, 0xac27); - MP_WritePhyUshort(sc, 0x14, 0x11e1); - MP_WritePhyUshort(sc, 0x14, 0x87fe); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0x6702); - MP_WritePhyUshort(sc, 0x14, 0x410a); - MP_WritePhyUshort(sc, 0x14, 0x0d11); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0x6a02); - MP_WritePhyUshort(sc, 0x14, 0x410a); - MP_WritePhyUshort(sc, 0x14, 0xef96); - MP_WritePhyUshort(sc, 0x14, 0xfefd); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xf8fa); - MP_WritePhyUshort(sc, 0x14, 0xef69); - MP_WritePhyUshort(sc, 0x14, 0xd100); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0x6702); - MP_WritePhyUshort(sc, 0x14, 0x410a); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0x6a02); - MP_WritePhyUshort(sc, 0x14, 0x410a); - MP_WritePhyUshort(sc, 0x14, 0xef96); - MP_WritePhyUshort(sc, 0x14, 0xfefc); - MP_WritePhyUshort(sc, 0x14, 0x04ee); - MP_WritePhyUshort(sc, 0x14, 0x87ff); - MP_WritePhyUshort(sc, 0x14, 0x46ee); - MP_WritePhyUshort(sc, 0x14, 0x87fe); - MP_WritePhyUshort(sc, 0x14, 0x0104); - MP_WritePhyUshort(sc, 0x14, 0xf8fa); - MP_WritePhyUshort(sc, 0x14, 0xef69); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x46a0); - MP_WritePhyUshort(sc, 0x14, 0x0005); - MP_WritePhyUshort(sc, 0x14, 0x0285); - MP_WritePhyUshort(sc, 0x14, 0xecae); - MP_WritePhyUshort(sc, 0x14, 0x0ea0); - MP_WritePhyUshort(sc, 0x14, 0x0105); - MP_WritePhyUshort(sc, 0x14, 0x021a); - MP_WritePhyUshort(sc, 0x14, 0x68ae); - MP_WritePhyUshort(sc, 0x14, 0x06a0); - MP_WritePhyUshort(sc, 0x14, 0x0203); - MP_WritePhyUshort(sc, 0x14, 0x021a); - MP_WritePhyUshort(sc, 0x14, 0xf4ef); - MP_WritePhyUshort(sc, 0x14, 0x96fe); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xf8f9); - MP_WritePhyUshort(sc, 0x14, 0xfaef); - MP_WritePhyUshort(sc, 0x14, 0x69e0); - MP_WritePhyUshort(sc, 0x14, 0x822e); - MP_WritePhyUshort(sc, 0x14, 0xf621); - MP_WritePhyUshort(sc, 0x14, 0xe482); - MP_WritePhyUshort(sc, 0x14, 0x2ee0); - MP_WritePhyUshort(sc, 0x14, 0x8010); - MP_WritePhyUshort(sc, 0x14, 0xac22); - MP_WritePhyUshort(sc, 0x14, 0x02ae); - MP_WritePhyUshort(sc, 0x14, 0x76e0); - MP_WritePhyUshort(sc, 0x14, 0x822c); - MP_WritePhyUshort(sc, 0x14, 0xf721); - MP_WritePhyUshort(sc, 0x14, 0xe482); - MP_WritePhyUshort(sc, 0x14, 0x2cbf); - MP_WritePhyUshort(sc, 0x14, 0x41a5); - MP_WritePhyUshort(sc, 0x14, 0x0241); - MP_WritePhyUshort(sc, 0x14, 0x48ef); - MP_WritePhyUshort(sc, 0x14, 0x21bf); - MP_WritePhyUshort(sc, 0x14, 0x41a8); - MP_WritePhyUshort(sc, 0x14, 0x0241); - MP_WritePhyUshort(sc, 0x14, 0x480c); - MP_WritePhyUshort(sc, 0x14, 0x111e); - MP_WritePhyUshort(sc, 0x14, 0x21bf); - MP_WritePhyUshort(sc, 0x14, 0x41ab); - MP_WritePhyUshort(sc, 0x14, 0x0241); - MP_WritePhyUshort(sc, 0x14, 0x480c); - MP_WritePhyUshort(sc, 0x14, 0x121e); - MP_WritePhyUshort(sc, 0x14, 0x21e6); - MP_WritePhyUshort(sc, 0x14, 0x8248); - MP_WritePhyUshort(sc, 0x14, 0xa200); - MP_WritePhyUshort(sc, 0x14, 0x0ae1); - MP_WritePhyUshort(sc, 0x14, 0x822c); - MP_WritePhyUshort(sc, 0x14, 0xf629); - MP_WritePhyUshort(sc, 0x14, 0xe582); - MP_WritePhyUshort(sc, 0x14, 0x2cae); - MP_WritePhyUshort(sc, 0x14, 0x42e0); - MP_WritePhyUshort(sc, 0x14, 0x8249); - MP_WritePhyUshort(sc, 0x14, 0xf721); - MP_WritePhyUshort(sc, 0x14, 0xe482); - MP_WritePhyUshort(sc, 0x14, 0x4902); - MP_WritePhyUshort(sc, 0x14, 0x4520); - MP_WritePhyUshort(sc, 0x14, 0xbf41); - MP_WritePhyUshort(sc, 0x14, 0xb702); - MP_WritePhyUshort(sc, 0x14, 0x4148); - MP_WritePhyUshort(sc, 0x14, 0xef21); - MP_WritePhyUshort(sc, 0x14, 0xbf41); - MP_WritePhyUshort(sc, 0x14, 0xae02); - MP_WritePhyUshort(sc, 0x14, 0x4148); - MP_WritePhyUshort(sc, 0x14, 0x0c12); - MP_WritePhyUshort(sc, 0x14, 0x1e21); - MP_WritePhyUshort(sc, 0x14, 0xbf41); - MP_WritePhyUshort(sc, 0x14, 0xb102); - MP_WritePhyUshort(sc, 0x14, 0x4148); - MP_WritePhyUshort(sc, 0x14, 0x0c13); - MP_WritePhyUshort(sc, 0x14, 0x1e21); - MP_WritePhyUshort(sc, 0x14, 0xbf41); - MP_WritePhyUshort(sc, 0x14, 0xba02); - MP_WritePhyUshort(sc, 0x14, 0x4148); - MP_WritePhyUshort(sc, 0x14, 0x0c14); - MP_WritePhyUshort(sc, 0x14, 0x1e21); - MP_WritePhyUshort(sc, 0x14, 0xbf43); - MP_WritePhyUshort(sc, 0x14, 0x4602); - MP_WritePhyUshort(sc, 0x14, 0x4148); - MP_WritePhyUshort(sc, 0x14, 0x0c16); - MP_WritePhyUshort(sc, 0x14, 0x1e21); - MP_WritePhyUshort(sc, 0x14, 0xe682); - MP_WritePhyUshort(sc, 0x14, 0x47ee); - MP_WritePhyUshort(sc, 0x14, 0x8246); - MP_WritePhyUshort(sc, 0x14, 0x01ef); - MP_WritePhyUshort(sc, 0x14, 0x96fe); - MP_WritePhyUshort(sc, 0x14, 0xfdfc); - MP_WritePhyUshort(sc, 0x14, 0x04f8); - MP_WritePhyUshort(sc, 0x14, 0xfaef); - MP_WritePhyUshort(sc, 0x14, 0x69e0); - MP_WritePhyUshort(sc, 0x14, 0x824b); - MP_WritePhyUshort(sc, 0x14, 0xa000); - MP_WritePhyUshort(sc, 0x14, 0x0502); - MP_WritePhyUshort(sc, 0x14, 0x8697); - MP_WritePhyUshort(sc, 0x14, 0xae06); - MP_WritePhyUshort(sc, 0x14, 0xa001); - MP_WritePhyUshort(sc, 0x14, 0x0302); - MP_WritePhyUshort(sc, 0x14, 0x1937); - MP_WritePhyUshort(sc, 0x14, 0xef96); - MP_WritePhyUshort(sc, 0x14, 0xfefc); - MP_WritePhyUshort(sc, 0x14, 0x04f8); - MP_WritePhyUshort(sc, 0x14, 0xfaef); - MP_WritePhyUshort(sc, 0x14, 0x69e0); - MP_WritePhyUshort(sc, 0x14, 0x822e); - MP_WritePhyUshort(sc, 0x14, 0xf620); - MP_WritePhyUshort(sc, 0x14, 0xe482); - MP_WritePhyUshort(sc, 0x14, 0x2ee0); - MP_WritePhyUshort(sc, 0x14, 0x8010); - MP_WritePhyUshort(sc, 0x14, 0xac21); - MP_WritePhyUshort(sc, 0x14, 0x02ae); - MP_WritePhyUshort(sc, 0x14, 0x54e0); - MP_WritePhyUshort(sc, 0x14, 0x822c); - MP_WritePhyUshort(sc, 0x14, 0xf720); - MP_WritePhyUshort(sc, 0x14, 0xe482); - MP_WritePhyUshort(sc, 0x14, 0x2cbf); - MP_WritePhyUshort(sc, 0x14, 0x4175); - MP_WritePhyUshort(sc, 0x14, 0x0241); - MP_WritePhyUshort(sc, 0x14, 0x48ac); - MP_WritePhyUshort(sc, 0x14, 0x2822); - MP_WritePhyUshort(sc, 0x14, 0xbf41); - MP_WritePhyUshort(sc, 0x14, 0x9f02); - MP_WritePhyUshort(sc, 0x14, 0x4148); - MP_WritePhyUshort(sc, 0x14, 0xe582); - MP_WritePhyUshort(sc, 0x14, 0x4cac); - MP_WritePhyUshort(sc, 0x14, 0x2820); - MP_WritePhyUshort(sc, 0x14, 0xd103); - MP_WritePhyUshort(sc, 0x14, 0xbf41); - MP_WritePhyUshort(sc, 0x14, 0x9902); - MP_WritePhyUshort(sc, 0x14, 0x410a); - MP_WritePhyUshort(sc, 0x14, 0xee82); - MP_WritePhyUshort(sc, 0x14, 0x4b00); - MP_WritePhyUshort(sc, 0x14, 0xe182); - MP_WritePhyUshort(sc, 0x14, 0x2cf6); - MP_WritePhyUshort(sc, 0x14, 0x28e5); - MP_WritePhyUshort(sc, 0x14, 0x822c); - MP_WritePhyUshort(sc, 0x14, 0xae21); - MP_WritePhyUshort(sc, 0x14, 0xd104); - MP_WritePhyUshort(sc, 0x14, 0xbf41); - MP_WritePhyUshort(sc, 0x14, 0x9902); - MP_WritePhyUshort(sc, 0x14, 0x410a); - MP_WritePhyUshort(sc, 0x14, 0xae08); - MP_WritePhyUshort(sc, 0x14, 0xd105); - MP_WritePhyUshort(sc, 0x14, 0xbf41); - MP_WritePhyUshort(sc, 0x14, 0x9902); - MP_WritePhyUshort(sc, 0x14, 0x410a); - MP_WritePhyUshort(sc, 0x14, 0xe082); - MP_WritePhyUshort(sc, 0x14, 0x49f7); - MP_WritePhyUshort(sc, 0x14, 0x20e4); - MP_WritePhyUshort(sc, 0x14, 0x8249); - MP_WritePhyUshort(sc, 0x14, 0x0245); - MP_WritePhyUshort(sc, 0x14, 0x20ee); - MP_WritePhyUshort(sc, 0x14, 0x824b); - MP_WritePhyUshort(sc, 0x14, 0x01ef); - MP_WritePhyUshort(sc, 0x14, 0x96fe); - MP_WritePhyUshort(sc, 0x14, 0xfc04); - MP_WritePhyUshort(sc, 0x14, 0xf8f9); - MP_WritePhyUshort(sc, 0x14, 0xface); - MP_WritePhyUshort(sc, 0x14, 0xfaef); - MP_WritePhyUshort(sc, 0x14, 0x69fb); - MP_WritePhyUshort(sc, 0x14, 0xbf87); - MP_WritePhyUshort(sc, 0x14, 0x2fd7); - MP_WritePhyUshort(sc, 0x14, 0x0020); - MP_WritePhyUshort(sc, 0x14, 0xd819); - MP_WritePhyUshort(sc, 0x14, 0xd919); - MP_WritePhyUshort(sc, 0x14, 0xda19); - MP_WritePhyUshort(sc, 0x14, 0xdb19); - MP_WritePhyUshort(sc, 0x14, 0x07ef); - MP_WritePhyUshort(sc, 0x14, 0x9502); - MP_WritePhyUshort(sc, 0x14, 0x410a); - MP_WritePhyUshort(sc, 0x14, 0x073f); - MP_WritePhyUshort(sc, 0x14, 0x0004); - MP_WritePhyUshort(sc, 0x14, 0x9fec); - MP_WritePhyUshort(sc, 0x14, 0xffef); - MP_WritePhyUshort(sc, 0x14, 0x96fe); - MP_WritePhyUshort(sc, 0x14, 0xc6fe); - MP_WritePhyUshort(sc, 0x14, 0xfdfc); - MP_WritePhyUshort(sc, 0x14, 0x0400); - MP_WritePhyUshort(sc, 0x14, 0x0144); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x14, 0x0343); - MP_WritePhyUshort(sc, 0x14, 0xee00); - MP_WritePhyUshort(sc, 0x14, 0x0087); - MP_WritePhyUshort(sc, 0x14, 0x5b00); - MP_WritePhyUshort(sc, 0x14, 0x0141); - MP_WritePhyUshort(sc, 0x14, 0xe100); - MP_WritePhyUshort(sc, 0x14, 0x0387); - MP_WritePhyUshort(sc, 0x14, 0x5e00); - MP_WritePhyUshort(sc, 0x14, 0x0987); - MP_WritePhyUshort(sc, 0x14, 0x6100); - MP_WritePhyUshort(sc, 0x14, 0x0987); - MP_WritePhyUshort(sc, 0x14, 0x6400); - MP_WritePhyUshort(sc, 0x14, 0x0087); - MP_WritePhyUshort(sc, 0x14, 0x6da4); - MP_WritePhyUshort(sc, 0x14, 0x00b8); - MP_WritePhyUshort(sc, 0x14, 0x20c4); - MP_WritePhyUshort(sc, 0x14, 0x1600); - MP_WritePhyUshort(sc, 0x14, 0x000f); - MP_WritePhyUshort(sc, 0x14, 0xf800); - MP_WritePhyUshort(sc, 0x14, 0x7000); - MP_WritePhyUshort(sc, 0x14, 0xb82e); - MP_WritePhyUshort(sc, 0x14, 0x98a5); - MP_WritePhyUshort(sc, 0x14, 0x8ab6); - MP_WritePhyUshort(sc, 0x14, 0xa83e); - MP_WritePhyUshort(sc, 0x14, 0x50a8); - MP_WritePhyUshort(sc, 0x14, 0x3e33); - MP_WritePhyUshort(sc, 0x14, 0xbcc6); - MP_WritePhyUshort(sc, 0x14, 0x22bc); - MP_WritePhyUshort(sc, 0x14, 0xc6aa); - MP_WritePhyUshort(sc, 0x14, 0xa442); - MP_WritePhyUshort(sc, 0x14, 0xffc4); - MP_WritePhyUshort(sc, 0x14, 0x0800); - MP_WritePhyUshort(sc, 0x14, 0xc416); - MP_WritePhyUshort(sc, 0x14, 0xa8bc); - MP_WritePhyUshort(sc, 0x14, 0xc000); - MP_WritePhyUshort(sc, 0x13, 0xb818); - MP_WritePhyUshort(sc, 0x14, 0x02e3); - MP_WritePhyUshort(sc, 0x13, 0xb81a); - MP_WritePhyUshort(sc, 0x14, 0x17ff); - MP_WritePhyUshort(sc, 0x13, 0xb81e); - MP_WritePhyUshort(sc, 0x14, 0x3b1c); - MP_WritePhyUshort(sc, 0x13, 0xb820); - MP_WritePhyUshort(sc, 0x14, 0x021b); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x0000); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0B82); - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); - PhyRegValue &= ~(BIT_0); - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8146); - MP_WritePhyUshort(sc, 0x14, 0x0000); - - re_clear_phy_mcu_patch_request(sc); -} - -static void re_set_phy_mcu_8168ep_2(struct re_softc* sc) -{ - u_int16_t PhyRegValue; - - re_set_phy_mcu_patch_request(sc); - - MP_WritePhyUshort(sc, 0x1f, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8146); - MP_WritePhyUshort(sc, 0x14, 0x8700); - MP_WritePhyUshort(sc, 0x13, 0xB82E); - MP_WritePhyUshort(sc, 0x14, 0x0001); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - - MP_WritePhyUshort(sc, 0x13, 0x83DD); - MP_WritePhyUshort(sc, 0x14, 0xAF83); - MP_WritePhyUshort(sc, 0x14, 0xE9AF); - MP_WritePhyUshort(sc, 0x14, 0x83EE); - MP_WritePhyUshort(sc, 0x14, 0xAF83); - MP_WritePhyUshort(sc, 0x14, 0xF1A1); - MP_WritePhyUshort(sc, 0x14, 0x83F4); - MP_WritePhyUshort(sc, 0x14, 0xD149); - MP_WritePhyUshort(sc, 0x14, 0xAF06); - MP_WritePhyUshort(sc, 0x14, 0x47AF); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x14, 0xAF00); - MP_WritePhyUshort(sc, 0x14, 0x00AF); - MP_WritePhyUshort(sc, 0x14, 0x0000); - - MP_WritePhyUshort(sc, 0x13, 0xB818); - MP_WritePhyUshort(sc, 0x14, 0x0645); - - MP_WritePhyUshort(sc, 0x13, 0xB81A); - MP_WritePhyUshort(sc, 0x14, 0x0000); - - MP_WritePhyUshort(sc, 0x13, 0xB81C); - MP_WritePhyUshort(sc, 0x14, 0x0000); - - MP_WritePhyUshort(sc, 0x13, 0xB81E); - MP_WritePhyUshort(sc, 0x14, 0x0000); - - MP_WritePhyUshort(sc, 0x13, 0xB832); - MP_WritePhyUshort(sc, 0x14, 0x0001); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x0000); - MP_WritePhyUshort(sc, 0x14, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0B82); - PhyRegValue = MP_ReadPhyUshort(sc, 0x17); - PhyRegValue &= ~(BIT_0); - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - MP_WritePhyUshort(sc, 0x1f, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8146); - MP_WritePhyUshort(sc, 0x14, 0x0000); - - re_clear_phy_mcu_patch_request(sc); + re_clear_phy_mcu_patch_request(sc); } static void -re_real_set_phy_mcu_8125a_1(struct re_softc* sc) -{ - re_acquire_phy_mcu_patch_key_lock(sc); - - - SetEthPhyOcpBit(sc, 0xB820, BIT_7); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA016); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA012); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA014); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8013); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8021); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x802f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x803d); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8042); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8051); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8051); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa088); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0a50); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8008); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd014); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd1a3); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x401a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd707); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x40c2); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x60a6); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5f8b); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0a86); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0a6c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8080); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd019); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd1a2); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x401a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd707); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x40c4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x60a6); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5f8b); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0a86); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0a84); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd503); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8970); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c07); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0901); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd500); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce01); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xcf09); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd705); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xceff); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xaf0a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd504); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1213); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8401); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd500); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8580); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1253); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd064); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd181); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd704); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4018); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd504); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xc50f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd706); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x2c59); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x804d); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xc60f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf002); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xc605); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xae02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x10fd); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA026); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xffff); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA024); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xffff); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA022); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x10f4); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA020); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1252); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA006); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1206); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA004); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0a78); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA002); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0a60); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0a4f); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA008); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x3f00); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA016); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0010); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA012); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA014); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8066); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x807c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8089); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x808e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x80a0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x80b2); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x80c2); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd501); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce01); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x62db); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x655c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd73e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x60e9); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x614a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x61ab); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0501); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0304); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0503); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0304); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0505); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0304); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0509); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0304); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x653c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd73e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x60e9); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x614a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x61ab); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0503); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0304); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0502); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0304); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0506); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0304); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x050a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0304); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd73e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x60e9); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x614a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x61ab); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0505); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0304); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0506); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0304); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0504); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0304); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x050c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0304); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd73e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x60e9); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x614a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x61ab); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0509); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0304); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x050a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0304); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x050c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0304); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0508); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0304); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd501); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce01); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd73e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x60e9); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x614a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x61ab); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0501); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0321); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0502); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0321); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0504); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0321); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0508); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0321); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0346); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd501); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce01); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8208); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x609d); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa50f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x001a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0503); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x001a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x607d); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00ab); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00ab); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd501); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce01); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x60fd); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa50f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce00); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd500); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xaa0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x017b); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0503); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce00); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd500); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0a05); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x017b); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd501); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce01); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x60fd); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa50f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce00); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd500); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xaa0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x01e0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0503); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce00); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd500); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0a05); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x01e0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x60fd); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa50f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce00); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd500); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xaa0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0231); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0503); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce00); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd500); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0a05); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0231); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA08E); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xffff); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA08C); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0221); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA08A); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x01ce); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA088); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0169); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA086); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00a6); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA084); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x000d); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA082); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0308); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA080); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x029f); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA090); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x007f); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA016); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0020); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA012); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA014); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8017); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x801b); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8029); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8054); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x805a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8064); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x80a7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x9430); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x9480); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb408); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd120); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd057); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x064b); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xcb80); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x9906); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0567); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xcb94); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8190); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x82a0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x800a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8406); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa740); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8dff); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x07e4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa840); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0773); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xcb91); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4063); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd139); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf002); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd140); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd040); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb404); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d00); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x07dc); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa610); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa110); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa2a0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa404); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd704); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4045); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa180); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd704); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x405d); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa720); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0742); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x07ec); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5f74); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0742); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd702); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x7fb6); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8190); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x82a0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8404); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8610); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d01); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x07dc); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x064b); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x07c0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5fa7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0481); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x94bc); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x870c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa190); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa00a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa280); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa404); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8220); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x078e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xcb92); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa840); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4063); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd140); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf002); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd150); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd040); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd703); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x60a0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x6121); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x61a2); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x6223); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf02f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0cf0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d10); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa740); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf00f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0cf0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d20); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa740); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf00a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0cf0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d30); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa740); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf005); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0cf0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d40); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa740); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x07e4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa610); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa008); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd704); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4046); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa002); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd704); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x405d); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa720); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0742); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x07f7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5f74); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0742); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd702); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x7fb5); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x800a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0cf0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d00); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x07e4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa740); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd701); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x3ad4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0537); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8610); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8840); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x064b); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8301); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x800a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8190); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x82a0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8404); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa70c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x9402); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x890c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8840); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x064b); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA10E); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0642); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA10C); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0686); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA10A); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0788); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA108); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x047b); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA106); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x065c); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA104); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0769); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA102); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0565); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA100); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x06f9); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA110); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00ff); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xb87c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8530); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xb87e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xaf85); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x3caf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8593); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xaf85); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x9caf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x85a5); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf86); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd702); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5afb); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xe083); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xfb0c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x020d); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x021b); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x10bf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x86d7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb7bf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x86da); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xfbe0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x83fc); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1b10); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf86); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xda02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf86); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xdd02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5afb); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xe083); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xfd0c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x020d); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x021b); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x10bf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x86dd); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb7bf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x86e0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xfbe0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x83fe); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1b10); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf86); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xe002); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xaf2f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbd02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x2cac); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0286); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x65af); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x212b); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x022c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x6002); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x86b6); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xaf21); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0cd1); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x03bf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8710); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb7bf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x870d); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb7bf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8719); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb7bf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8716); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb7bf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x871f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb7bf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x871c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb7bf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8728); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb7bf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8725); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb7bf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8707); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xfbad); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x281c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd100); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0a02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1302); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x2202); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x2b02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xae1a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd101); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0a02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1302); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x2202); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x2b02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd101); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x3402); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x3102); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x3d02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x3a02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4302); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4002); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4c02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4902); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd100); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x2e02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x3702); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4602); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf87); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4f02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ab7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xaf35); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x7ff8); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xfaef); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x69bf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x86e3); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xfbbf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x86fb); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb7bf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x86e6); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xfbbf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x86fe); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb7bf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x86e9); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xfbbf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8701); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb7bf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x86ec); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xfbbf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8704); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x025a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb7bf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x86ef); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0262); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x7cbf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x86f2); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0262); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x7cbf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x86f5); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0262); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x7cbf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x86f8); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0262); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x7cef); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x96fe); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xfc04); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf8fa); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xef69); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf86); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xef02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x6273); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf86); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf202); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x6273); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf86); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf502); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x6273); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbf86); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf802); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x6273); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xef96); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xfefc); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0420); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb540); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x53b5); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4086); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb540); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb9b5); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x40c8); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb03a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xc8b0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbac8); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb13a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xc8b1); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xba77); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbd26); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xffbd); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x2677); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbd28); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xffbd); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x2840); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbd26); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xc8bd); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x2640); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbd28); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xc8bd); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x28bb); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa430); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x98b0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1eba); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb01e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xdcb0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1e98); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb09e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbab0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x9edc); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb09e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x98b1); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1eba); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb11e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xdcb1); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1e98); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb19e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbab1); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x9edc); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb19e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x11b0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1e22); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb01e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x33b0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1e11); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb09e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x22b0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x9e33); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb09e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x11b1); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1e22); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb11e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x33b1); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1e11); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb19e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x22b1); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x9e33); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb19e); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xb85e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x2f71); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xb860); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x20d9); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xb862); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x2109); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xb864); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x34e7); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xb878); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x000f); - - - ClearEthPhyOcpBit(sc, 0xB820, BIT_7); - - - re_release_phy_mcu_patch_key_lock(sc); +re_real_set_phy_mcu_8125a_1(struct re_softc *sc) +{ + re_acquire_phy_mcu_patch_key_lock(sc); + + + re_set_eth_ocp_phy_bit(sc, 0xB820, BIT_7); + + + re_real_ocp_phy_write(sc, 0xA436, 0xA016); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA012); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA014); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8013); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8021); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x802f); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x803d); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8042); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8051); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8051); + re_real_ocp_phy_write(sc, 0xA438, 0xa088); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0a50); + re_real_ocp_phy_write(sc, 0xA438, 0x8008); + re_real_ocp_phy_write(sc, 0xA438, 0xd014); + re_real_ocp_phy_write(sc, 0xA438, 0xd1a3); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x401a); + re_real_ocp_phy_write(sc, 0xA438, 0xd707); + re_real_ocp_phy_write(sc, 0xA438, 0x40c2); + re_real_ocp_phy_write(sc, 0xA438, 0x60a6); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x5f8b); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0a86); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0a6c); + re_real_ocp_phy_write(sc, 0xA438, 0x8080); + re_real_ocp_phy_write(sc, 0xA438, 0xd019); + re_real_ocp_phy_write(sc, 0xA438, 0xd1a2); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x401a); + re_real_ocp_phy_write(sc, 0xA438, 0xd707); + re_real_ocp_phy_write(sc, 0xA438, 0x40c4); + re_real_ocp_phy_write(sc, 0xA438, 0x60a6); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x5f8b); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0a86); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0a84); + re_real_ocp_phy_write(sc, 0xA438, 0xd503); + re_real_ocp_phy_write(sc, 0xA438, 0x8970); + re_real_ocp_phy_write(sc, 0xA438, 0x0c07); + re_real_ocp_phy_write(sc, 0xA438, 0x0901); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0xcf09); + re_real_ocp_phy_write(sc, 0xA438, 0xd705); + re_real_ocp_phy_write(sc, 0xA438, 0x4000); + re_real_ocp_phy_write(sc, 0xA438, 0xceff); + re_real_ocp_phy_write(sc, 0xA438, 0xaf0a); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x1213); + re_real_ocp_phy_write(sc, 0xA438, 0x8401); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x8580); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x1253); + re_real_ocp_phy_write(sc, 0xA438, 0xd064); + re_real_ocp_phy_write(sc, 0xA438, 0xd181); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x4018); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0xc50f); + re_real_ocp_phy_write(sc, 0xA438, 0xd706); + re_real_ocp_phy_write(sc, 0xA438, 0x2c59); + re_real_ocp_phy_write(sc, 0xA438, 0x804d); + re_real_ocp_phy_write(sc, 0xA438, 0xc60f); + re_real_ocp_phy_write(sc, 0xA438, 0xf002); + re_real_ocp_phy_write(sc, 0xA438, 0xc605); + re_real_ocp_phy_write(sc, 0xA438, 0xae02); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x10fd); + re_real_ocp_phy_write(sc, 0xA436, 0xA026); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xA024); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xA022); + re_real_ocp_phy_write(sc, 0xA438, 0x10f4); + re_real_ocp_phy_write(sc, 0xA436, 0xA020); + re_real_ocp_phy_write(sc, 0xA438, 0x1252); + re_real_ocp_phy_write(sc, 0xA436, 0xA006); + re_real_ocp_phy_write(sc, 0xA438, 0x1206); + re_real_ocp_phy_write(sc, 0xA436, 0xA004); + re_real_ocp_phy_write(sc, 0xA438, 0x0a78); + re_real_ocp_phy_write(sc, 0xA436, 0xA002); + re_real_ocp_phy_write(sc, 0xA438, 0x0a60); + re_real_ocp_phy_write(sc, 0xA436, 0xA000); + re_real_ocp_phy_write(sc, 0xA438, 0x0a4f); + re_real_ocp_phy_write(sc, 0xA436, 0xA008); + re_real_ocp_phy_write(sc, 0xA438, 0x3f00); + + + re_real_ocp_phy_write(sc, 0xA436, 0xA016); + re_real_ocp_phy_write(sc, 0xA438, 0x0010); + re_real_ocp_phy_write(sc, 0xA436, 0xA012); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA014); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8066); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x807c); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8089); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x808e); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x80a0); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x80b2); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x80c2); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x62db); + re_real_ocp_phy_write(sc, 0xA438, 0x655c); + re_real_ocp_phy_write(sc, 0xA438, 0xd73e); + re_real_ocp_phy_write(sc, 0xA438, 0x60e9); + re_real_ocp_phy_write(sc, 0xA438, 0x614a); + re_real_ocp_phy_write(sc, 0xA438, 0x61ab); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0501); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0503); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0505); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0509); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x653c); + re_real_ocp_phy_write(sc, 0xA438, 0xd73e); + re_real_ocp_phy_write(sc, 0xA438, 0x60e9); + re_real_ocp_phy_write(sc, 0xA438, 0x614a); + re_real_ocp_phy_write(sc, 0xA438, 0x61ab); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0503); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0502); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0506); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x050a); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0xd73e); + re_real_ocp_phy_write(sc, 0xA438, 0x60e9); + re_real_ocp_phy_write(sc, 0xA438, 0x614a); + re_real_ocp_phy_write(sc, 0xA438, 0x61ab); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0505); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0506); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0504); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x050c); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0xd73e); + re_real_ocp_phy_write(sc, 0xA438, 0x60e9); + re_real_ocp_phy_write(sc, 0xA438, 0x614a); + re_real_ocp_phy_write(sc, 0xA438, 0x61ab); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0509); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x050a); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x050c); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0508); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0304); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0xd73e); + re_real_ocp_phy_write(sc, 0xA438, 0x60e9); + re_real_ocp_phy_write(sc, 0xA438, 0x614a); + re_real_ocp_phy_write(sc, 0xA438, 0x61ab); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0501); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0321); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0502); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0321); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0504); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0321); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0508); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0321); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x0346); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0x8208); + re_real_ocp_phy_write(sc, 0xA438, 0x609d); + re_real_ocp_phy_write(sc, 0xA438, 0xa50f); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x001a); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0503); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x001a); + re_real_ocp_phy_write(sc, 0xA438, 0x607d); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x00ab); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x00ab); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x60fd); + re_real_ocp_phy_write(sc, 0xA438, 0xa50f); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0xaa0f); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x017b); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0503); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0a05); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x017b); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x60fd); + re_real_ocp_phy_write(sc, 0xA438, 0xa50f); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0xaa0f); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x01e0); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0503); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0a05); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x01e0); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x60fd); + re_real_ocp_phy_write(sc, 0xA438, 0xa50f); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0xaa0f); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0231); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0503); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0a05); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0231); + re_real_ocp_phy_write(sc, 0xA436, 0xA08E); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xA08C); + re_real_ocp_phy_write(sc, 0xA438, 0x0221); + re_real_ocp_phy_write(sc, 0xA436, 0xA08A); + re_real_ocp_phy_write(sc, 0xA438, 0x01ce); + re_real_ocp_phy_write(sc, 0xA436, 0xA088); + re_real_ocp_phy_write(sc, 0xA438, 0x0169); + re_real_ocp_phy_write(sc, 0xA436, 0xA086); + re_real_ocp_phy_write(sc, 0xA438, 0x00a6); + re_real_ocp_phy_write(sc, 0xA436, 0xA084); + re_real_ocp_phy_write(sc, 0xA438, 0x000d); + re_real_ocp_phy_write(sc, 0xA436, 0xA082); + re_real_ocp_phy_write(sc, 0xA438, 0x0308); + re_real_ocp_phy_write(sc, 0xA436, 0xA080); + re_real_ocp_phy_write(sc, 0xA438, 0x029f); + re_real_ocp_phy_write(sc, 0xA436, 0xA090); + re_real_ocp_phy_write(sc, 0xA438, 0x007f); + + + re_real_ocp_phy_write(sc, 0xA436, 0xA016); + re_real_ocp_phy_write(sc, 0xA438, 0x0020); + re_real_ocp_phy_write(sc, 0xA436, 0xA012); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA014); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8017); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x801b); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8029); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8054); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x805a); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8064); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x80a7); + re_real_ocp_phy_write(sc, 0xA438, 0x9430); + re_real_ocp_phy_write(sc, 0xA438, 0x9480); + re_real_ocp_phy_write(sc, 0xA438, 0xb408); + re_real_ocp_phy_write(sc, 0xA438, 0xd120); + re_real_ocp_phy_write(sc, 0xA438, 0xd057); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x064b); + re_real_ocp_phy_write(sc, 0xA438, 0xcb80); + re_real_ocp_phy_write(sc, 0xA438, 0x9906); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0567); + re_real_ocp_phy_write(sc, 0xA438, 0xcb94); + re_real_ocp_phy_write(sc, 0xA438, 0x8190); + re_real_ocp_phy_write(sc, 0xA438, 0x82a0); + re_real_ocp_phy_write(sc, 0xA438, 0x800a); + re_real_ocp_phy_write(sc, 0xA438, 0x8406); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0x8dff); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07e4); + re_real_ocp_phy_write(sc, 0xA438, 0xa840); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0773); + re_real_ocp_phy_write(sc, 0xA438, 0xcb91); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x4063); + re_real_ocp_phy_write(sc, 0xA438, 0xd139); + re_real_ocp_phy_write(sc, 0xA438, 0xf002); + re_real_ocp_phy_write(sc, 0xA438, 0xd140); + re_real_ocp_phy_write(sc, 0xA438, 0xd040); + re_real_ocp_phy_write(sc, 0xA438, 0xb404); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0d00); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07dc); + re_real_ocp_phy_write(sc, 0xA438, 0xa610); + re_real_ocp_phy_write(sc, 0xA438, 0xa110); + re_real_ocp_phy_write(sc, 0xA438, 0xa2a0); + re_real_ocp_phy_write(sc, 0xA438, 0xa404); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x4045); + re_real_ocp_phy_write(sc, 0xA438, 0xa180); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x405d); + re_real_ocp_phy_write(sc, 0xA438, 0xa720); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x0742); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07ec); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x5f74); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x0742); + re_real_ocp_phy_write(sc, 0xA438, 0xd702); + re_real_ocp_phy_write(sc, 0xA438, 0x7fb6); + re_real_ocp_phy_write(sc, 0xA438, 0x8190); + re_real_ocp_phy_write(sc, 0xA438, 0x82a0); + re_real_ocp_phy_write(sc, 0xA438, 0x8404); + re_real_ocp_phy_write(sc, 0xA438, 0x8610); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0d01); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07dc); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x064b); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07c0); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x5fa7); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0481); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x94bc); + re_real_ocp_phy_write(sc, 0xA438, 0x870c); + re_real_ocp_phy_write(sc, 0xA438, 0xa190); + re_real_ocp_phy_write(sc, 0xA438, 0xa00a); + re_real_ocp_phy_write(sc, 0xA438, 0xa280); + re_real_ocp_phy_write(sc, 0xA438, 0xa404); + re_real_ocp_phy_write(sc, 0xA438, 0x8220); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x078e); + re_real_ocp_phy_write(sc, 0xA438, 0xcb92); + re_real_ocp_phy_write(sc, 0xA438, 0xa840); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x4063); + re_real_ocp_phy_write(sc, 0xA438, 0xd140); + re_real_ocp_phy_write(sc, 0xA438, 0xf002); + re_real_ocp_phy_write(sc, 0xA438, 0xd150); + re_real_ocp_phy_write(sc, 0xA438, 0xd040); + re_real_ocp_phy_write(sc, 0xA438, 0xd703); + re_real_ocp_phy_write(sc, 0xA438, 0x60a0); + re_real_ocp_phy_write(sc, 0xA438, 0x6121); + re_real_ocp_phy_write(sc, 0xA438, 0x61a2); + re_real_ocp_phy_write(sc, 0xA438, 0x6223); + re_real_ocp_phy_write(sc, 0xA438, 0xf02f); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d10); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0xf00f); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d20); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0xf00a); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d30); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0xf005); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d40); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07e4); + re_real_ocp_phy_write(sc, 0xA438, 0xa610); + re_real_ocp_phy_write(sc, 0xA438, 0xa008); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x4046); + re_real_ocp_phy_write(sc, 0xA438, 0xa002); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x405d); + re_real_ocp_phy_write(sc, 0xA438, 0xa720); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x0742); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07f7); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x5f74); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x0742); + re_real_ocp_phy_write(sc, 0xA438, 0xd702); + re_real_ocp_phy_write(sc, 0xA438, 0x7fb5); + re_real_ocp_phy_write(sc, 0xA438, 0x800a); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d00); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07e4); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x3ad4); + re_real_ocp_phy_write(sc, 0xA438, 0x0537); + re_real_ocp_phy_write(sc, 0xA438, 0x8610); + re_real_ocp_phy_write(sc, 0xA438, 0x8840); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x064b); + re_real_ocp_phy_write(sc, 0xA438, 0x8301); + re_real_ocp_phy_write(sc, 0xA438, 0x800a); + re_real_ocp_phy_write(sc, 0xA438, 0x8190); + re_real_ocp_phy_write(sc, 0xA438, 0x82a0); + re_real_ocp_phy_write(sc, 0xA438, 0x8404); + re_real_ocp_phy_write(sc, 0xA438, 0xa70c); + re_real_ocp_phy_write(sc, 0xA438, 0x9402); + re_real_ocp_phy_write(sc, 0xA438, 0x890c); + re_real_ocp_phy_write(sc, 0xA438, 0x8840); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x064b); + re_real_ocp_phy_write(sc, 0xA436, 0xA10E); + re_real_ocp_phy_write(sc, 0xA438, 0x0642); + re_real_ocp_phy_write(sc, 0xA436, 0xA10C); + re_real_ocp_phy_write(sc, 0xA438, 0x0686); + re_real_ocp_phy_write(sc, 0xA436, 0xA10A); + re_real_ocp_phy_write(sc, 0xA438, 0x0788); + re_real_ocp_phy_write(sc, 0xA436, 0xA108); + re_real_ocp_phy_write(sc, 0xA438, 0x047b); + re_real_ocp_phy_write(sc, 0xA436, 0xA106); + re_real_ocp_phy_write(sc, 0xA438, 0x065c); + re_real_ocp_phy_write(sc, 0xA436, 0xA104); + re_real_ocp_phy_write(sc, 0xA438, 0x0769); + re_real_ocp_phy_write(sc, 0xA436, 0xA102); + re_real_ocp_phy_write(sc, 0xA438, 0x0565); + re_real_ocp_phy_write(sc, 0xA436, 0xA100); + re_real_ocp_phy_write(sc, 0xA438, 0x06f9); + re_real_ocp_phy_write(sc, 0xA436, 0xA110); + re_real_ocp_phy_write(sc, 0xA438, 0x00ff); + + + re_real_ocp_phy_write(sc, 0xA436, 0xb87c); + re_real_ocp_phy_write(sc, 0xA438, 0x8530); + re_real_ocp_phy_write(sc, 0xA436, 0xb87e); + re_real_ocp_phy_write(sc, 0xA438, 0xaf85); + re_real_ocp_phy_write(sc, 0xA438, 0x3caf); + re_real_ocp_phy_write(sc, 0xA438, 0x8593); + re_real_ocp_phy_write(sc, 0xA438, 0xaf85); + re_real_ocp_phy_write(sc, 0xA438, 0x9caf); + re_real_ocp_phy_write(sc, 0xA438, 0x85a5); + re_real_ocp_phy_write(sc, 0xA438, 0xbf86); + re_real_ocp_phy_write(sc, 0xA438, 0xd702); + re_real_ocp_phy_write(sc, 0xA438, 0x5afb); + re_real_ocp_phy_write(sc, 0xA438, 0xe083); + re_real_ocp_phy_write(sc, 0xA438, 0xfb0c); + re_real_ocp_phy_write(sc, 0xA438, 0x020d); + re_real_ocp_phy_write(sc, 0xA438, 0x021b); + re_real_ocp_phy_write(sc, 0xA438, 0x10bf); + re_real_ocp_phy_write(sc, 0xA438, 0x86d7); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x86da); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xfbe0); + re_real_ocp_phy_write(sc, 0xA438, 0x83fc); + re_real_ocp_phy_write(sc, 0xA438, 0x0c02); + re_real_ocp_phy_write(sc, 0xA438, 0x0d02); + re_real_ocp_phy_write(sc, 0xA438, 0x1b10); + re_real_ocp_phy_write(sc, 0xA438, 0xbf86); + re_real_ocp_phy_write(sc, 0xA438, 0xda02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf86); + re_real_ocp_phy_write(sc, 0xA438, 0xdd02); + re_real_ocp_phy_write(sc, 0xA438, 0x5afb); + re_real_ocp_phy_write(sc, 0xA438, 0xe083); + re_real_ocp_phy_write(sc, 0xA438, 0xfd0c); + re_real_ocp_phy_write(sc, 0xA438, 0x020d); + re_real_ocp_phy_write(sc, 0xA438, 0x021b); + re_real_ocp_phy_write(sc, 0xA438, 0x10bf); + re_real_ocp_phy_write(sc, 0xA438, 0x86dd); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x86e0); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xfbe0); + re_real_ocp_phy_write(sc, 0xA438, 0x83fe); + re_real_ocp_phy_write(sc, 0xA438, 0x0c02); + re_real_ocp_phy_write(sc, 0xA438, 0x0d02); + re_real_ocp_phy_write(sc, 0xA438, 0x1b10); + re_real_ocp_phy_write(sc, 0xA438, 0xbf86); + re_real_ocp_phy_write(sc, 0xA438, 0xe002); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xaf2f); + re_real_ocp_phy_write(sc, 0xA438, 0xbd02); + re_real_ocp_phy_write(sc, 0xA438, 0x2cac); + re_real_ocp_phy_write(sc, 0xA438, 0x0286); + re_real_ocp_phy_write(sc, 0xA438, 0x65af); + re_real_ocp_phy_write(sc, 0xA438, 0x212b); + re_real_ocp_phy_write(sc, 0xA438, 0x022c); + re_real_ocp_phy_write(sc, 0xA438, 0x6002); + re_real_ocp_phy_write(sc, 0xA438, 0x86b6); + re_real_ocp_phy_write(sc, 0xA438, 0xaf21); + re_real_ocp_phy_write(sc, 0xA438, 0x0cd1); + re_real_ocp_phy_write(sc, 0xA438, 0x03bf); + re_real_ocp_phy_write(sc, 0xA438, 0x8710); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x870d); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x8719); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x8716); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x871f); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x871c); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x8728); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x8725); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x8707); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xfbad); + re_real_ocp_phy_write(sc, 0xA438, 0x281c); + re_real_ocp_phy_write(sc, 0xA438, 0xd100); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x0a02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x1302); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x2202); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x2b02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xae1a); + re_real_ocp_phy_write(sc, 0xA438, 0xd101); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x0a02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x1302); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x2202); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x2b02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xd101); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x3402); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x3102); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x3d02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x3a02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x4302); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x4002); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x4c02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x4902); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xd100); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x2e02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x3702); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x4602); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xbf87); + re_real_ocp_phy_write(sc, 0xA438, 0x4f02); + re_real_ocp_phy_write(sc, 0xA438, 0x5ab7); + re_real_ocp_phy_write(sc, 0xA438, 0xaf35); + re_real_ocp_phy_write(sc, 0xA438, 0x7ff8); + re_real_ocp_phy_write(sc, 0xA438, 0xfaef); + re_real_ocp_phy_write(sc, 0xA438, 0x69bf); + re_real_ocp_phy_write(sc, 0xA438, 0x86e3); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xfbbf); + re_real_ocp_phy_write(sc, 0xA438, 0x86fb); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x86e6); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xfbbf); + re_real_ocp_phy_write(sc, 0xA438, 0x86fe); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x86e9); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xfbbf); + re_real_ocp_phy_write(sc, 0xA438, 0x8701); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x86ec); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xfbbf); + re_real_ocp_phy_write(sc, 0xA438, 0x8704); + re_real_ocp_phy_write(sc, 0xA438, 0x025a); + re_real_ocp_phy_write(sc, 0xA438, 0xb7bf); + re_real_ocp_phy_write(sc, 0xA438, 0x86ef); + re_real_ocp_phy_write(sc, 0xA438, 0x0262); + re_real_ocp_phy_write(sc, 0xA438, 0x7cbf); + re_real_ocp_phy_write(sc, 0xA438, 0x86f2); + re_real_ocp_phy_write(sc, 0xA438, 0x0262); + re_real_ocp_phy_write(sc, 0xA438, 0x7cbf); + re_real_ocp_phy_write(sc, 0xA438, 0x86f5); + re_real_ocp_phy_write(sc, 0xA438, 0x0262); + re_real_ocp_phy_write(sc, 0xA438, 0x7cbf); + re_real_ocp_phy_write(sc, 0xA438, 0x86f8); + re_real_ocp_phy_write(sc, 0xA438, 0x0262); + re_real_ocp_phy_write(sc, 0xA438, 0x7cef); + re_real_ocp_phy_write(sc, 0xA438, 0x96fe); + re_real_ocp_phy_write(sc, 0xA438, 0xfc04); + re_real_ocp_phy_write(sc, 0xA438, 0xf8fa); + re_real_ocp_phy_write(sc, 0xA438, 0xef69); + re_real_ocp_phy_write(sc, 0xA438, 0xbf86); + re_real_ocp_phy_write(sc, 0xA438, 0xef02); + re_real_ocp_phy_write(sc, 0xA438, 0x6273); + re_real_ocp_phy_write(sc, 0xA438, 0xbf86); + re_real_ocp_phy_write(sc, 0xA438, 0xf202); + re_real_ocp_phy_write(sc, 0xA438, 0x6273); + re_real_ocp_phy_write(sc, 0xA438, 0xbf86); + re_real_ocp_phy_write(sc, 0xA438, 0xf502); + re_real_ocp_phy_write(sc, 0xA438, 0x6273); + re_real_ocp_phy_write(sc, 0xA438, 0xbf86); + re_real_ocp_phy_write(sc, 0xA438, 0xf802); + re_real_ocp_phy_write(sc, 0xA438, 0x6273); + re_real_ocp_phy_write(sc, 0xA438, 0xef96); + re_real_ocp_phy_write(sc, 0xA438, 0xfefc); + re_real_ocp_phy_write(sc, 0xA438, 0x0420); + re_real_ocp_phy_write(sc, 0xA438, 0xb540); + re_real_ocp_phy_write(sc, 0xA438, 0x53b5); + re_real_ocp_phy_write(sc, 0xA438, 0x4086); + re_real_ocp_phy_write(sc, 0xA438, 0xb540); + re_real_ocp_phy_write(sc, 0xA438, 0xb9b5); + re_real_ocp_phy_write(sc, 0xA438, 0x40c8); + re_real_ocp_phy_write(sc, 0xA438, 0xb03a); + re_real_ocp_phy_write(sc, 0xA438, 0xc8b0); + re_real_ocp_phy_write(sc, 0xA438, 0xbac8); + re_real_ocp_phy_write(sc, 0xA438, 0xb13a); + re_real_ocp_phy_write(sc, 0xA438, 0xc8b1); + re_real_ocp_phy_write(sc, 0xA438, 0xba77); + re_real_ocp_phy_write(sc, 0xA438, 0xbd26); + re_real_ocp_phy_write(sc, 0xA438, 0xffbd); + re_real_ocp_phy_write(sc, 0xA438, 0x2677); + re_real_ocp_phy_write(sc, 0xA438, 0xbd28); + re_real_ocp_phy_write(sc, 0xA438, 0xffbd); + re_real_ocp_phy_write(sc, 0xA438, 0x2840); + re_real_ocp_phy_write(sc, 0xA438, 0xbd26); + re_real_ocp_phy_write(sc, 0xA438, 0xc8bd); + re_real_ocp_phy_write(sc, 0xA438, 0x2640); + re_real_ocp_phy_write(sc, 0xA438, 0xbd28); + re_real_ocp_phy_write(sc, 0xA438, 0xc8bd); + re_real_ocp_phy_write(sc, 0xA438, 0x28bb); + re_real_ocp_phy_write(sc, 0xA438, 0xa430); + re_real_ocp_phy_write(sc, 0xA438, 0x98b0); + re_real_ocp_phy_write(sc, 0xA438, 0x1eba); + re_real_ocp_phy_write(sc, 0xA438, 0xb01e); + re_real_ocp_phy_write(sc, 0xA438, 0xdcb0); + re_real_ocp_phy_write(sc, 0xA438, 0x1e98); + re_real_ocp_phy_write(sc, 0xA438, 0xb09e); + re_real_ocp_phy_write(sc, 0xA438, 0xbab0); + re_real_ocp_phy_write(sc, 0xA438, 0x9edc); + re_real_ocp_phy_write(sc, 0xA438, 0xb09e); + re_real_ocp_phy_write(sc, 0xA438, 0x98b1); + re_real_ocp_phy_write(sc, 0xA438, 0x1eba); + re_real_ocp_phy_write(sc, 0xA438, 0xb11e); + re_real_ocp_phy_write(sc, 0xA438, 0xdcb1); + re_real_ocp_phy_write(sc, 0xA438, 0x1e98); + re_real_ocp_phy_write(sc, 0xA438, 0xb19e); + re_real_ocp_phy_write(sc, 0xA438, 0xbab1); + re_real_ocp_phy_write(sc, 0xA438, 0x9edc); + re_real_ocp_phy_write(sc, 0xA438, 0xb19e); + re_real_ocp_phy_write(sc, 0xA438, 0x11b0); + re_real_ocp_phy_write(sc, 0xA438, 0x1e22); + re_real_ocp_phy_write(sc, 0xA438, 0xb01e); + re_real_ocp_phy_write(sc, 0xA438, 0x33b0); + re_real_ocp_phy_write(sc, 0xA438, 0x1e11); + re_real_ocp_phy_write(sc, 0xA438, 0xb09e); + re_real_ocp_phy_write(sc, 0xA438, 0x22b0); + re_real_ocp_phy_write(sc, 0xA438, 0x9e33); + re_real_ocp_phy_write(sc, 0xA438, 0xb09e); + re_real_ocp_phy_write(sc, 0xA438, 0x11b1); + re_real_ocp_phy_write(sc, 0xA438, 0x1e22); + re_real_ocp_phy_write(sc, 0xA438, 0xb11e); + re_real_ocp_phy_write(sc, 0xA438, 0x33b1); + re_real_ocp_phy_write(sc, 0xA438, 0x1e11); + re_real_ocp_phy_write(sc, 0xA438, 0xb19e); + re_real_ocp_phy_write(sc, 0xA438, 0x22b1); + re_real_ocp_phy_write(sc, 0xA438, 0x9e33); + re_real_ocp_phy_write(sc, 0xA438, 0xb19e); + re_real_ocp_phy_write(sc, 0xA436, 0xb85e); + re_real_ocp_phy_write(sc, 0xA438, 0x2f71); + re_real_ocp_phy_write(sc, 0xA436, 0xb860); + re_real_ocp_phy_write(sc, 0xA438, 0x20d9); + re_real_ocp_phy_write(sc, 0xA436, 0xb862); + re_real_ocp_phy_write(sc, 0xA438, 0x2109); + re_real_ocp_phy_write(sc, 0xA436, 0xb864); + re_real_ocp_phy_write(sc, 0xA438, 0x34e7); + re_real_ocp_phy_write(sc, 0xA436, 0xb878); + re_real_ocp_phy_write(sc, 0xA438, 0x000f); + + + re_clear_eth_ocp_phy_bit(sc, 0xB820, BIT_7); + + + re_release_phy_mcu_patch_key_lock(sc); } static void -re_set_phy_mcu_8125a_1(struct re_softc* sc) +re_set_phy_mcu_8125a_1(struct re_softc *sc) { - re_set_phy_mcu_patch_request(sc); + re_set_phy_mcu_patch_request(sc); - re_real_set_phy_mcu_8125a_1(sc); + re_real_set_phy_mcu_8125a_1(sc); - re_clear_phy_mcu_patch_request(sc); + re_clear_phy_mcu_patch_request(sc); } static void -re_real_set_phy_mcu_8125a_2(struct re_softc* sc) -{ - re_acquire_phy_mcu_patch_key_lock(sc); - - - SetEthPhyOcpBit(sc, 0xB820, BIT_7); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA016); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA012); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA014); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x808b); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x808f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8093); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8097); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x809d); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x80a1); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x80aa); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd718); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x607b); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x40da); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf00e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x42da); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf01e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd718); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x615b); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1456); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x14a4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x14bc); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd718); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5f2e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf01c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1456); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x14a4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x14bc); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd718); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5f2e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf024); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1456); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x14a4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x14bc); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd718); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5f2e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf02c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1456); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x14a4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x14bc); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd718); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5f2e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf034); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd719); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4118); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd504); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xac11); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd501); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce01); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa410); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce00); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd500); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4779); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd504); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xac0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xae01); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd500); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1444); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf034); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd719); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4118); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd504); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xac22); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd501); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce01); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa420); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce00); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd500); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4559); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd504); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xac0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xae01); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd500); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1444); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf023); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd719); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4118); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd504); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xac44); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd501); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce01); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa440); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce00); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd500); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4339); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd504); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xac0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xae01); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd500); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1444); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf012); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd719); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4118); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd504); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xac88); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd501); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce01); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa480); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xce00); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd500); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4119); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd504); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xac0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xae01); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd500); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1444); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf001); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1456); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd718); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5fac); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xc48f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x141b); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd504); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x121a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd0b4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd1bb); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0898); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd0b4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd1bb); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0a0e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd064); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd18a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0b7e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x401c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd501); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa804); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8804); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x053b); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd500); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa301); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0648); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xc520); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa201); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd701); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x252d); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1646); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd708); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4006); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1646); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0308); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA026); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0307); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA024); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1645); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA022); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0647); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA020); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x053a); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA006); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0b7c); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA004); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0a0c); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA002); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0896); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x11a1); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA008); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xff00); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA016); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0010); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA012); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA014); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8015); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x801a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x801a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x801a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x801a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x801a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x801a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xad02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x02d7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00ed); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0509); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xc100); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x008f); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA08E); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xffff); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA08C); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xffff); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA08A); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xffff); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA088); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xffff); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA086); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xffff); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA084); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xffff); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA082); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x008d); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA080); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00eb); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA090); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0103); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA016); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0020); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA012); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA014); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8014); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8018); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8024); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8051); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8055); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8072); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x80dc); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xfffd); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xfffd); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8301); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x800a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8190); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x82a0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8404); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa70c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x9402); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x890c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8840); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa380); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x066e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xcb91); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4063); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd139); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf002); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd140); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd040); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb404); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d00); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x07e0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa610); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa110); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa2a0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa404); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd704); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4085); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa180); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa404); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8280); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd704); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x405d); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa720); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0743); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x07f0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5f74); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0743); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd702); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x7fb6); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8190); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x82a0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8404); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8610); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0c0f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d01); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x07e0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x066e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd158); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd04d); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x03d4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x94bc); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x870c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8380); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd10d); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd040); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x07c4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5fb4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa190); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa00a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa280); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa404); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa220); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd130); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd040); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x07c4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5fb4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xbb80); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd1c4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd074); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa301); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd704); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x604b); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa90c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0556); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xcb92); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4063); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd116); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf002); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd119); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd040); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd703); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x60a0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x6241); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x63e2); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x6583); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf054); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd701); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x611e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd701); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x40da); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0cf0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d10); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8740); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf02f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0cf0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d50); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa740); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf02a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd701); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x611e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd701); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x40da); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0cf0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d20); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8740); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf021); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0cf0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d60); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa740); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf01c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd701); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x611e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd701); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x40da); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0cf0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d30); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8740); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf013); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0cf0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d70); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa740); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf00e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd701); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x611e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd701); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x40da); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0cf0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d40); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8740); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf005); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0cf0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d80); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa740); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x07e8); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa610); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd704); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x405d); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa720); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd700); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x5ff4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa008); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd704); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4046); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa002); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0743); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x07fb); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd703); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x7f6f); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x7f4e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x7f2d); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x7f0c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x800a); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0cf0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0d00); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x07e8); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8010); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa740); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0743); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd702); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x7fb5); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd701); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x3ad4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0556); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8610); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x066e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd1f5); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xd049); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1800); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x01ec); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA10E); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x01ea); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA10C); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x06a9); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA10A); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x078a); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA108); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x03d2); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA106); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x067f); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA104); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0665); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA102); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA100); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xA110); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00fc); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xb87c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8530); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xb87e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xaf85); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x3caf); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8545); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xaf85); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x45af); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8545); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xee82); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf900); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0103); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xaf03); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb7f8); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xe0a6); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00e1); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa601); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xef01); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x58f0); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa080); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x37a1); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8402); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xae16); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa185); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x02ae); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x11a1); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8702); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xae0c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xa188); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x02ae); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x07a1); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8902); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xae02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xae1c); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xe0b4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x62e1); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb463); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x6901); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xe4b4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x62e5); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb463); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xe0b4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x62e1); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb463); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x6901); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xe4b4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x62e5); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xb463); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xfc04); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xb85e); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x03b3); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xb860); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xffff); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xb862); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xffff); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xb864); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xffff); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0xb878); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0001); - - - ClearEthPhyOcpBit(sc, 0xB820, BIT_7); - - - re_release_phy_mcu_patch_key_lock(sc); +re_real_set_phy_mcu_8125a_2(struct re_softc *sc) +{ + re_acquire_phy_mcu_patch_key_lock(sc); + + + re_set_eth_ocp_phy_bit(sc, 0xB820, BIT_7); + + + re_real_ocp_phy_write(sc, 0xA436, 0xA016); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA012); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA014); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x808b); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x808f); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8093); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8097); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x809d); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x80a1); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x80aa); + re_real_ocp_phy_write(sc, 0xA438, 0xd718); + re_real_ocp_phy_write(sc, 0xA438, 0x607b); + re_real_ocp_phy_write(sc, 0xA438, 0x40da); + re_real_ocp_phy_write(sc, 0xA438, 0xf00e); + re_real_ocp_phy_write(sc, 0xA438, 0x42da); + re_real_ocp_phy_write(sc, 0xA438, 0xf01e); + re_real_ocp_phy_write(sc, 0xA438, 0xd718); + re_real_ocp_phy_write(sc, 0xA438, 0x615b); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x1456); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x14a4); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x14bc); + re_real_ocp_phy_write(sc, 0xA438, 0xd718); + re_real_ocp_phy_write(sc, 0xA438, 0x5f2e); + re_real_ocp_phy_write(sc, 0xA438, 0xf01c); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x1456); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x14a4); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x14bc); + re_real_ocp_phy_write(sc, 0xA438, 0xd718); + re_real_ocp_phy_write(sc, 0xA438, 0x5f2e); + re_real_ocp_phy_write(sc, 0xA438, 0xf024); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x1456); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x14a4); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x14bc); + re_real_ocp_phy_write(sc, 0xA438, 0xd718); + re_real_ocp_phy_write(sc, 0xA438, 0x5f2e); + re_real_ocp_phy_write(sc, 0xA438, 0xf02c); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x1456); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x14a4); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x14bc); + re_real_ocp_phy_write(sc, 0xA438, 0xd718); + re_real_ocp_phy_write(sc, 0xA438, 0x5f2e); + re_real_ocp_phy_write(sc, 0xA438, 0xf034); + re_real_ocp_phy_write(sc, 0xA438, 0xd719); + re_real_ocp_phy_write(sc, 0xA438, 0x4118); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0xac11); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0xa410); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x4779); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0xac0f); + re_real_ocp_phy_write(sc, 0xA438, 0xae01); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x1444); + re_real_ocp_phy_write(sc, 0xA438, 0xf034); + re_real_ocp_phy_write(sc, 0xA438, 0xd719); + re_real_ocp_phy_write(sc, 0xA438, 0x4118); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0xac22); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0xa420); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x4559); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0xac0f); + re_real_ocp_phy_write(sc, 0xA438, 0xae01); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x1444); + re_real_ocp_phy_write(sc, 0xA438, 0xf023); + re_real_ocp_phy_write(sc, 0xA438, 0xd719); + re_real_ocp_phy_write(sc, 0xA438, 0x4118); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0xac44); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0xa440); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x4339); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0xac0f); + re_real_ocp_phy_write(sc, 0xA438, 0xae01); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x1444); + re_real_ocp_phy_write(sc, 0xA438, 0xf012); + re_real_ocp_phy_write(sc, 0xA438, 0xd719); + re_real_ocp_phy_write(sc, 0xA438, 0x4118); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0xac88); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xce01); + re_real_ocp_phy_write(sc, 0xA438, 0xa480); + re_real_ocp_phy_write(sc, 0xA438, 0xce00); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x4119); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0xac0f); + re_real_ocp_phy_write(sc, 0xA438, 0xae01); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x1444); + re_real_ocp_phy_write(sc, 0xA438, 0xf001); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x1456); + re_real_ocp_phy_write(sc, 0xA438, 0xd718); + re_real_ocp_phy_write(sc, 0xA438, 0x5fac); + re_real_ocp_phy_write(sc, 0xA438, 0xc48f); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x141b); + re_real_ocp_phy_write(sc, 0xA438, 0xd504); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x121a); + re_real_ocp_phy_write(sc, 0xA438, 0xd0b4); + re_real_ocp_phy_write(sc, 0xA438, 0xd1bb); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0898); + re_real_ocp_phy_write(sc, 0xA438, 0xd0b4); + re_real_ocp_phy_write(sc, 0xA438, 0xd1bb); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0a0e); + re_real_ocp_phy_write(sc, 0xA438, 0xd064); + re_real_ocp_phy_write(sc, 0xA438, 0xd18a); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0b7e); + re_real_ocp_phy_write(sc, 0xA438, 0x401c); + re_real_ocp_phy_write(sc, 0xA438, 0xd501); + re_real_ocp_phy_write(sc, 0xA438, 0xa804); + re_real_ocp_phy_write(sc, 0xA438, 0x8804); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x053b); + re_real_ocp_phy_write(sc, 0xA438, 0xd500); + re_real_ocp_phy_write(sc, 0xA438, 0xa301); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0648); + re_real_ocp_phy_write(sc, 0xA438, 0xc520); + re_real_ocp_phy_write(sc, 0xA438, 0xa201); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x252d); + re_real_ocp_phy_write(sc, 0xA438, 0x1646); + re_real_ocp_phy_write(sc, 0xA438, 0xd708); + re_real_ocp_phy_write(sc, 0xA438, 0x4006); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x1646); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0308); + re_real_ocp_phy_write(sc, 0xA436, 0xA026); + re_real_ocp_phy_write(sc, 0xA438, 0x0307); + re_real_ocp_phy_write(sc, 0xA436, 0xA024); + re_real_ocp_phy_write(sc, 0xA438, 0x1645); + re_real_ocp_phy_write(sc, 0xA436, 0xA022); + re_real_ocp_phy_write(sc, 0xA438, 0x0647); + re_real_ocp_phy_write(sc, 0xA436, 0xA020); + re_real_ocp_phy_write(sc, 0xA438, 0x053a); + re_real_ocp_phy_write(sc, 0xA436, 0xA006); + re_real_ocp_phy_write(sc, 0xA438, 0x0b7c); + re_real_ocp_phy_write(sc, 0xA436, 0xA004); + re_real_ocp_phy_write(sc, 0xA438, 0x0a0c); + re_real_ocp_phy_write(sc, 0xA436, 0xA002); + re_real_ocp_phy_write(sc, 0xA438, 0x0896); + re_real_ocp_phy_write(sc, 0xA436, 0xA000); + re_real_ocp_phy_write(sc, 0xA438, 0x11a1); + re_real_ocp_phy_write(sc, 0xA436, 0xA008); + re_real_ocp_phy_write(sc, 0xA438, 0xff00); + + + re_real_ocp_phy_write(sc, 0xA436, 0xA016); + re_real_ocp_phy_write(sc, 0xA438, 0x0010); + re_real_ocp_phy_write(sc, 0xA436, 0xA012); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA014); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8015); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x801a); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x801a); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x801a); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x801a); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x801a); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x801a); + re_real_ocp_phy_write(sc, 0xA438, 0xad02); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x02d7); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x00ed); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0509); + re_real_ocp_phy_write(sc, 0xA438, 0xc100); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x008f); + re_real_ocp_phy_write(sc, 0xA436, 0xA08E); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xA08C); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xA08A); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xA088); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xA086); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xA084); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xA082); + re_real_ocp_phy_write(sc, 0xA438, 0x008d); + re_real_ocp_phy_write(sc, 0xA436, 0xA080); + re_real_ocp_phy_write(sc, 0xA438, 0x00eb); + re_real_ocp_phy_write(sc, 0xA436, 0xA090); + re_real_ocp_phy_write(sc, 0xA438, 0x0103); + + + re_real_ocp_phy_write(sc, 0xA436, 0xA016); + re_real_ocp_phy_write(sc, 0xA438, 0x0020); + re_real_ocp_phy_write(sc, 0xA436, 0xA012); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA014); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8014); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8018); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8024); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8051); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8055); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x8072); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x80dc); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0xfffd); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0xfffd); + re_real_ocp_phy_write(sc, 0xA438, 0x8301); + re_real_ocp_phy_write(sc, 0xA438, 0x800a); + re_real_ocp_phy_write(sc, 0xA438, 0x8190); + re_real_ocp_phy_write(sc, 0xA438, 0x82a0); + re_real_ocp_phy_write(sc, 0xA438, 0x8404); + re_real_ocp_phy_write(sc, 0xA438, 0xa70c); + re_real_ocp_phy_write(sc, 0xA438, 0x9402); + re_real_ocp_phy_write(sc, 0xA438, 0x890c); + re_real_ocp_phy_write(sc, 0xA438, 0x8840); + re_real_ocp_phy_write(sc, 0xA438, 0xa380); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x066e); + re_real_ocp_phy_write(sc, 0xA438, 0xcb91); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x4063); + re_real_ocp_phy_write(sc, 0xA438, 0xd139); + re_real_ocp_phy_write(sc, 0xA438, 0xf002); + re_real_ocp_phy_write(sc, 0xA438, 0xd140); + re_real_ocp_phy_write(sc, 0xA438, 0xd040); + re_real_ocp_phy_write(sc, 0xA438, 0xb404); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0d00); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07e0); + re_real_ocp_phy_write(sc, 0xA438, 0xa610); + re_real_ocp_phy_write(sc, 0xA438, 0xa110); + re_real_ocp_phy_write(sc, 0xA438, 0xa2a0); + re_real_ocp_phy_write(sc, 0xA438, 0xa404); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x4085); + re_real_ocp_phy_write(sc, 0xA438, 0xa180); + re_real_ocp_phy_write(sc, 0xA438, 0xa404); + re_real_ocp_phy_write(sc, 0xA438, 0x8280); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x405d); + re_real_ocp_phy_write(sc, 0xA438, 0xa720); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x0743); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07f0); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x5f74); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x0743); + re_real_ocp_phy_write(sc, 0xA438, 0xd702); + re_real_ocp_phy_write(sc, 0xA438, 0x7fb6); + re_real_ocp_phy_write(sc, 0xA438, 0x8190); + re_real_ocp_phy_write(sc, 0xA438, 0x82a0); + re_real_ocp_phy_write(sc, 0xA438, 0x8404); + re_real_ocp_phy_write(sc, 0xA438, 0x8610); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0c0f); + re_real_ocp_phy_write(sc, 0xA438, 0x0d01); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07e0); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x066e); + re_real_ocp_phy_write(sc, 0xA438, 0xd158); + re_real_ocp_phy_write(sc, 0xA438, 0xd04d); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x03d4); + re_real_ocp_phy_write(sc, 0xA438, 0x94bc); + re_real_ocp_phy_write(sc, 0xA438, 0x870c); + re_real_ocp_phy_write(sc, 0xA438, 0x8380); + re_real_ocp_phy_write(sc, 0xA438, 0xd10d); + re_real_ocp_phy_write(sc, 0xA438, 0xd040); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07c4); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x5fb4); + re_real_ocp_phy_write(sc, 0xA438, 0xa190); + re_real_ocp_phy_write(sc, 0xA438, 0xa00a); + re_real_ocp_phy_write(sc, 0xA438, 0xa280); + re_real_ocp_phy_write(sc, 0xA438, 0xa404); + re_real_ocp_phy_write(sc, 0xA438, 0xa220); + re_real_ocp_phy_write(sc, 0xA438, 0xd130); + re_real_ocp_phy_write(sc, 0xA438, 0xd040); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07c4); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x5fb4); + re_real_ocp_phy_write(sc, 0xA438, 0xbb80); + re_real_ocp_phy_write(sc, 0xA438, 0xd1c4); + re_real_ocp_phy_write(sc, 0xA438, 0xd074); + re_real_ocp_phy_write(sc, 0xA438, 0xa301); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x604b); + re_real_ocp_phy_write(sc, 0xA438, 0xa90c); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x0556); + re_real_ocp_phy_write(sc, 0xA438, 0xcb92); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x4063); + re_real_ocp_phy_write(sc, 0xA438, 0xd116); + re_real_ocp_phy_write(sc, 0xA438, 0xf002); + re_real_ocp_phy_write(sc, 0xA438, 0xd119); + re_real_ocp_phy_write(sc, 0xA438, 0xd040); + re_real_ocp_phy_write(sc, 0xA438, 0xd703); + re_real_ocp_phy_write(sc, 0xA438, 0x60a0); + re_real_ocp_phy_write(sc, 0xA438, 0x6241); + re_real_ocp_phy_write(sc, 0xA438, 0x63e2); + re_real_ocp_phy_write(sc, 0xA438, 0x6583); + re_real_ocp_phy_write(sc, 0xA438, 0xf054); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x611e); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x40da); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d10); + re_real_ocp_phy_write(sc, 0xA438, 0xa010); + re_real_ocp_phy_write(sc, 0xA438, 0x8740); + re_real_ocp_phy_write(sc, 0xA438, 0xf02f); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d50); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0xf02a); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x611e); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x40da); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d20); + re_real_ocp_phy_write(sc, 0xA438, 0xa010); + re_real_ocp_phy_write(sc, 0xA438, 0x8740); + re_real_ocp_phy_write(sc, 0xA438, 0xf021); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d60); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0xf01c); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x611e); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x40da); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d30); + re_real_ocp_phy_write(sc, 0xA438, 0xa010); + re_real_ocp_phy_write(sc, 0xA438, 0x8740); + re_real_ocp_phy_write(sc, 0xA438, 0xf013); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d70); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0xf00e); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x611e); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x40da); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d40); + re_real_ocp_phy_write(sc, 0xA438, 0xa010); + re_real_ocp_phy_write(sc, 0xA438, 0x8740); + re_real_ocp_phy_write(sc, 0xA438, 0xf005); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d80); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07e8); + re_real_ocp_phy_write(sc, 0xA438, 0xa610); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x405d); + re_real_ocp_phy_write(sc, 0xA438, 0xa720); + re_real_ocp_phy_write(sc, 0xA438, 0xd700); + re_real_ocp_phy_write(sc, 0xA438, 0x5ff4); + re_real_ocp_phy_write(sc, 0xA438, 0xa008); + re_real_ocp_phy_write(sc, 0xA438, 0xd704); + re_real_ocp_phy_write(sc, 0xA438, 0x4046); + re_real_ocp_phy_write(sc, 0xA438, 0xa002); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x0743); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07fb); + re_real_ocp_phy_write(sc, 0xA438, 0xd703); + re_real_ocp_phy_write(sc, 0xA438, 0x7f6f); + re_real_ocp_phy_write(sc, 0xA438, 0x7f4e); + re_real_ocp_phy_write(sc, 0xA438, 0x7f2d); + re_real_ocp_phy_write(sc, 0xA438, 0x7f0c); + re_real_ocp_phy_write(sc, 0xA438, 0x800a); + re_real_ocp_phy_write(sc, 0xA438, 0x0cf0); + re_real_ocp_phy_write(sc, 0xA438, 0x0d00); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x07e8); + re_real_ocp_phy_write(sc, 0xA438, 0x8010); + re_real_ocp_phy_write(sc, 0xA438, 0xa740); + re_real_ocp_phy_write(sc, 0xA438, 0x1000); + re_real_ocp_phy_write(sc, 0xA438, 0x0743); + re_real_ocp_phy_write(sc, 0xA438, 0xd702); + re_real_ocp_phy_write(sc, 0xA438, 0x7fb5); + re_real_ocp_phy_write(sc, 0xA438, 0xd701); + re_real_ocp_phy_write(sc, 0xA438, 0x3ad4); + re_real_ocp_phy_write(sc, 0xA438, 0x0556); + re_real_ocp_phy_write(sc, 0xA438, 0x8610); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x066e); + re_real_ocp_phy_write(sc, 0xA438, 0xd1f5); + re_real_ocp_phy_write(sc, 0xA438, 0xd049); + re_real_ocp_phy_write(sc, 0xA438, 0x1800); + re_real_ocp_phy_write(sc, 0xA438, 0x01ec); + re_real_ocp_phy_write(sc, 0xA436, 0xA10E); + re_real_ocp_phy_write(sc, 0xA438, 0x01ea); + re_real_ocp_phy_write(sc, 0xA436, 0xA10C); + re_real_ocp_phy_write(sc, 0xA438, 0x06a9); + re_real_ocp_phy_write(sc, 0xA436, 0xA10A); + re_real_ocp_phy_write(sc, 0xA438, 0x078a); + re_real_ocp_phy_write(sc, 0xA436, 0xA108); + re_real_ocp_phy_write(sc, 0xA438, 0x03d2); + re_real_ocp_phy_write(sc, 0xA436, 0xA106); + re_real_ocp_phy_write(sc, 0xA438, 0x067f); + re_real_ocp_phy_write(sc, 0xA436, 0xA104); + re_real_ocp_phy_write(sc, 0xA438, 0x0665); + re_real_ocp_phy_write(sc, 0xA436, 0xA102); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA100); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA436, 0xA110); + re_real_ocp_phy_write(sc, 0xA438, 0x00fc); + + + re_real_ocp_phy_write(sc, 0xA436, 0xb87c); + re_real_ocp_phy_write(sc, 0xA438, 0x8530); + re_real_ocp_phy_write(sc, 0xA436, 0xb87e); + re_real_ocp_phy_write(sc, 0xA438, 0xaf85); + re_real_ocp_phy_write(sc, 0xA438, 0x3caf); + re_real_ocp_phy_write(sc, 0xA438, 0x8545); + re_real_ocp_phy_write(sc, 0xA438, 0xaf85); + re_real_ocp_phy_write(sc, 0xA438, 0x45af); + re_real_ocp_phy_write(sc, 0xA438, 0x8545); + re_real_ocp_phy_write(sc, 0xA438, 0xee82); + re_real_ocp_phy_write(sc, 0xA438, 0xf900); + re_real_ocp_phy_write(sc, 0xA438, 0x0103); + re_real_ocp_phy_write(sc, 0xA438, 0xaf03); + re_real_ocp_phy_write(sc, 0xA438, 0xb7f8); + re_real_ocp_phy_write(sc, 0xA438, 0xe0a6); + re_real_ocp_phy_write(sc, 0xA438, 0x00e1); + re_real_ocp_phy_write(sc, 0xA438, 0xa601); + re_real_ocp_phy_write(sc, 0xA438, 0xef01); + re_real_ocp_phy_write(sc, 0xA438, 0x58f0); + re_real_ocp_phy_write(sc, 0xA438, 0xa080); + re_real_ocp_phy_write(sc, 0xA438, 0x37a1); + re_real_ocp_phy_write(sc, 0xA438, 0x8402); + re_real_ocp_phy_write(sc, 0xA438, 0xae16); + re_real_ocp_phy_write(sc, 0xA438, 0xa185); + re_real_ocp_phy_write(sc, 0xA438, 0x02ae); + re_real_ocp_phy_write(sc, 0xA438, 0x11a1); + re_real_ocp_phy_write(sc, 0xA438, 0x8702); + re_real_ocp_phy_write(sc, 0xA438, 0xae0c); + re_real_ocp_phy_write(sc, 0xA438, 0xa188); + re_real_ocp_phy_write(sc, 0xA438, 0x02ae); + re_real_ocp_phy_write(sc, 0xA438, 0x07a1); + re_real_ocp_phy_write(sc, 0xA438, 0x8902); + re_real_ocp_phy_write(sc, 0xA438, 0xae02); + re_real_ocp_phy_write(sc, 0xA438, 0xae1c); + re_real_ocp_phy_write(sc, 0xA438, 0xe0b4); + re_real_ocp_phy_write(sc, 0xA438, 0x62e1); + re_real_ocp_phy_write(sc, 0xA438, 0xb463); + re_real_ocp_phy_write(sc, 0xA438, 0x6901); + re_real_ocp_phy_write(sc, 0xA438, 0xe4b4); + re_real_ocp_phy_write(sc, 0xA438, 0x62e5); + re_real_ocp_phy_write(sc, 0xA438, 0xb463); + re_real_ocp_phy_write(sc, 0xA438, 0xe0b4); + re_real_ocp_phy_write(sc, 0xA438, 0x62e1); + re_real_ocp_phy_write(sc, 0xA438, 0xb463); + re_real_ocp_phy_write(sc, 0xA438, 0x6901); + re_real_ocp_phy_write(sc, 0xA438, 0xe4b4); + re_real_ocp_phy_write(sc, 0xA438, 0x62e5); + re_real_ocp_phy_write(sc, 0xA438, 0xb463); + re_real_ocp_phy_write(sc, 0xA438, 0xfc04); + re_real_ocp_phy_write(sc, 0xA436, 0xb85e); + re_real_ocp_phy_write(sc, 0xA438, 0x03b3); + re_real_ocp_phy_write(sc, 0xA436, 0xb860); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xb862); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xb864); + re_real_ocp_phy_write(sc, 0xA438, 0xffff); + re_real_ocp_phy_write(sc, 0xA436, 0xb878); + re_real_ocp_phy_write(sc, 0xA438, 0x0001); + + + re_clear_eth_ocp_phy_bit(sc, 0xB820, BIT_7); + + + re_release_phy_mcu_patch_key_lock(sc); } static void -re_set_phy_mcu_8125a_2(struct re_softc* sc) +re_set_phy_mcu_8125a_2(struct re_softc *sc) { - re_set_phy_mcu_patch_request(sc); + re_set_phy_mcu_patch_request(sc); - re_real_set_phy_mcu_8125a_2(sc); + re_real_set_phy_mcu_8125a_2(sc); - re_clear_phy_mcu_patch_request(sc); + re_clear_phy_mcu_patch_request(sc); } static const u_int16_t phy_mcu_ram_code_8125b_1[] = { @@ -21964,8 +26918,8 @@ static const u_int16_t phy_mcu_ram_code_8125b_2[] = { 0xa438, 0x077e, 0xa436, 0xA110, 0xa438, 0x000f, 0xa436, 0xb87c, 0xa438, 0x8625, 0xa436, 0xb87e, 0xa438, 0xaf86, 0xa438, 0x3daf, 0xa438, 0x8689, 0xa438, 0xaf88, 0xa438, 0x69af, 0xa438, 0x8887, - 0xa438, 0xaf88, 0xa438, 0x9caf, 0xa438, 0x889c, 0xa438, 0xaf88, - 0xa438, 0x9caf, 0xa438, 0x889c, 0xa438, 0xbf86, 0xa438, 0x49d7, + 0xa438, 0xaf88, 0xa438, 0x9caf, 0xa438, 0x88be, 0xa438, 0xaf88, + 0xa438, 0xbeaf, 0xa438, 0x88be, 0xa438, 0xbf86, 0xa438, 0x49d7, 0xa438, 0x0040, 0xa438, 0x0277, 0xa438, 0x7daf, 0xa438, 0x2727, 0xa438, 0x0000, 0xa438, 0x7205, 0xa438, 0x0000, 0xa438, 0x7208, 0xa438, 0x0000, 0xa438, 0x71f3, 0xa438, 0x0000, 0xa438, 0x71f6, @@ -22041,97 +26995,720 @@ static const u_int16_t phy_mcu_ram_code_8125b_2[] = { 0xa438, 0xaf26, 0xa438, 0xf520, 0xa438, 0xac86, 0xa438, 0xbf88, 0xa438, 0x3f02, 0xa438, 0x6e9c, 0xa438, 0xad28, 0xa438, 0x03af, 0xa438, 0x3324, 0xa438, 0xad38, 0xa438, 0x03af, 0xa438, 0x32e6, - 0xa438, 0xaf32, 0xa438, 0xfb00, 0xa436, 0xb87c, 0xa438, 0x8ff6, - 0xa436, 0xb87e, 0xa438, 0x0705, 0xa436, 0xb87c, 0xa438, 0x8ff8, - 0xa436, 0xb87e, 0xa438, 0x19cc, 0xa436, 0xb87c, 0xa438, 0x8ffa, - 0xa436, 0xb87e, 0xa438, 0x28e3, 0xa436, 0xb87c, 0xa438, 0x8ffc, - 0xa436, 0xb87e, 0xa438, 0x1047, 0xa436, 0xb87c, 0xa438, 0x8ffe, - 0xa436, 0xb87e, 0xa438, 0x0a45, 0xa436, 0xb85e, 0xa438, 0x271E, - 0xa436, 0xb860, 0xa438, 0x3846, 0xa436, 0xb862, 0xa438, 0x26E6, - 0xa436, 0xb864, 0xa438, 0x32E3, 0xa436, 0xb886, 0xa438, 0xffff, - 0xa436, 0xb888, 0xa438, 0xffff, 0xa436, 0xb88a, 0xa438, 0xffff, - 0xa436, 0xb88c, 0xa438, 0xffff, 0xa436, 0xb838, 0xa438, 0x000f, - 0xb820, 0x0010, 0xa436, 0x846e, 0xa438, 0xaf84, 0xa438, 0x86af, - 0xa438, 0x8690, 0xa438, 0xaf86, 0xa438, 0xa4af, 0xa438, 0x86a4, - 0xa438, 0xaf86, 0xa438, 0xa4af, 0xa438, 0x86a4, 0xa438, 0xaf86, - 0xa438, 0xa4af, 0xa438, 0x86a4, 0xa438, 0xee82, 0xa438, 0x5f00, - 0xa438, 0x0284, 0xa438, 0x90af, 0xa438, 0x0441, 0xa438, 0xf8e0, - 0xa438, 0x8ff3, 0xa438, 0xa000, 0xa438, 0x0502, 0xa438, 0x84a4, - 0xa438, 0xae06, 0xa438, 0xa001, 0xa438, 0x0302, 0xa438, 0x84c8, - 0xa438, 0xfc04, 0xa438, 0xf8f9, 0xa438, 0xef59, 0xa438, 0xe080, - 0xa438, 0x15ad, 0xa438, 0x2702, 0xa438, 0xae03, 0xa438, 0xaf84, - 0xa438, 0xc3bf, 0xa438, 0x53ca, 0xa438, 0x0252, 0xa438, 0xc8ad, - 0xa438, 0x2807, 0xa438, 0x0285, 0xa438, 0x2cee, 0xa438, 0x8ff3, - 0xa438, 0x01ef, 0xa438, 0x95fd, 0xa438, 0xfc04, 0xa438, 0xf8f9, - 0xa438, 0xfaef, 0xa438, 0x69bf, 0xa438, 0x53ca, 0xa438, 0x0252, - 0xa438, 0xc8ac, 0xa438, 0x2822, 0xa438, 0xd480, 0xa438, 0x00bf, + 0xa438, 0xaf32, 0xa438, 0xfbee, 0xa438, 0x826a, 0xa438, 0x0002, + 0xa438, 0x88a6, 0xa438, 0xaf04, 0xa438, 0x78f8, 0xa438, 0xfaef, + 0xa438, 0x69e0, 0xa438, 0x8015, 0xa438, 0xad20, 0xa438, 0x06bf, + 0xa438, 0x88bb, 0xa438, 0x0275, 0xa438, 0xb1ef, 0xa438, 0x96fe, + 0xa438, 0xfc04, 0xa438, 0x00b8, 0xa438, 0x7a00, 0xa436, 0xb87c, + 0xa438, 0x8ff6, 0xa436, 0xb87e, 0xa438, 0x0705, 0xa436, 0xb87c, + 0xa438, 0x8ff8, 0xa436, 0xb87e, 0xa438, 0x19cc, 0xa436, 0xb87c, + 0xa438, 0x8ffa, 0xa436, 0xb87e, 0xa438, 0x28e3, 0xa436, 0xb87c, + 0xa438, 0x8ffc, 0xa436, 0xb87e, 0xa438, 0x1047, 0xa436, 0xb87c, + 0xa438, 0x8ffe, 0xa436, 0xb87e, 0xa438, 0x0a45, 0xa436, 0xb85e, + 0xa438, 0x271E, 0xa436, 0xb860, 0xa438, 0x3846, 0xa436, 0xb862, + 0xa438, 0x26E6, 0xa436, 0xb864, 0xa438, 0x32E3, 0xa436, 0xb886, + 0xa438, 0x0474, 0xa436, 0xb888, 0xa438, 0xffff, 0xa436, 0xb88a, + 0xa438, 0xffff, 0xa436, 0xb88c, 0xa438, 0xffff, 0xa436, 0xb838, + 0xa438, 0x001f, 0xb820, 0x0010, 0xa436, 0x846e, 0xa438, 0xaf84, + 0xa438, 0x86af, 0xa438, 0x8690, 0xa438, 0xaf86, 0xa438, 0xa4af, + 0xa438, 0x8934, 0xa438, 0xaf89, 0xa438, 0x60af, 0xa438, 0x897e, + 0xa438, 0xaf89, 0xa438, 0xa9af, 0xa438, 0x89a9, 0xa438, 0xee82, + 0xa438, 0x5f00, 0xa438, 0x0284, 0xa438, 0x90af, 0xa438, 0x0441, + 0xa438, 0xf8e0, 0xa438, 0x8ff3, 0xa438, 0xa000, 0xa438, 0x0502, + 0xa438, 0x84a4, 0xa438, 0xae06, 0xa438, 0xa001, 0xa438, 0x0302, + 0xa438, 0x84c8, 0xa438, 0xfc04, 0xa438, 0xf8f9, 0xa438, 0xef59, + 0xa438, 0xe080, 0xa438, 0x15ad, 0xa438, 0x2702, 0xa438, 0xae03, + 0xa438, 0xaf84, 0xa438, 0xc3bf, 0xa438, 0x53ca, 0xa438, 0x0252, + 0xa438, 0xc8ad, 0xa438, 0x2807, 0xa438, 0x0285, 0xa438, 0x2cee, + 0xa438, 0x8ff3, 0xa438, 0x01ef, 0xa438, 0x95fd, 0xa438, 0xfc04, + 0xa438, 0xf8f9, 0xa438, 0xfaef, 0xa438, 0x69bf, 0xa438, 0x53ca, + 0xa438, 0x0252, 0xa438, 0xc8ac, 0xa438, 0x2822, 0xa438, 0xd480, + 0xa438, 0x00bf, 0xa438, 0x8684, 0xa438, 0x0252, 0xa438, 0xa9bf, + 0xa438, 0x8687, 0xa438, 0x0252, 0xa438, 0xa9bf, 0xa438, 0x868a, + 0xa438, 0x0252, 0xa438, 0xa9bf, 0xa438, 0x868d, 0xa438, 0x0252, + 0xa438, 0xa9ee, 0xa438, 0x8ff3, 0xa438, 0x00af, 0xa438, 0x8526, + 0xa438, 0xe08f, 0xa438, 0xf4e1, 0xa438, 0x8ff5, 0xa438, 0xe28f, + 0xa438, 0xf6e3, 0xa438, 0x8ff7, 0xa438, 0x1b45, 0xa438, 0xac27, + 0xa438, 0x0eee, 0xa438, 0x8ff4, 0xa438, 0x00ee, 0xa438, 0x8ff5, + 0xa438, 0x0002, 0xa438, 0x852c, 0xa438, 0xaf85, 0xa438, 0x26e0, + 0xa438, 0x8ff4, 0xa438, 0xe18f, 0xa438, 0xf52c, 0xa438, 0x0001, + 0xa438, 0xe48f, 0xa438, 0xf4e5, 0xa438, 0x8ff5, 0xa438, 0xef96, + 0xa438, 0xfefd, 0xa438, 0xfc04, 0xa438, 0xf8f9, 0xa438, 0xef59, + 0xa438, 0xbf53, 0xa438, 0x2202, 0xa438, 0x52c8, 0xa438, 0xa18b, + 0xa438, 0x02ae, 0xa438, 0x03af, 0xa438, 0x85da, 0xa438, 0xbf57, + 0xa438, 0x7202, 0xa438, 0x52c8, 0xa438, 0xe48f, 0xa438, 0xf8e5, + 0xa438, 0x8ff9, 0xa438, 0xbf57, 0xa438, 0x7502, 0xa438, 0x52c8, + 0xa438, 0xe48f, 0xa438, 0xfae5, 0xa438, 0x8ffb, 0xa438, 0xbf57, + 0xa438, 0x7802, 0xa438, 0x52c8, 0xa438, 0xe48f, 0xa438, 0xfce5, + 0xa438, 0x8ffd, 0xa438, 0xbf57, 0xa438, 0x7b02, 0xa438, 0x52c8, + 0xa438, 0xe48f, 0xa438, 0xfee5, 0xa438, 0x8fff, 0xa438, 0xbf57, + 0xa438, 0x6c02, 0xa438, 0x52c8, 0xa438, 0xa102, 0xa438, 0x13ee, + 0xa438, 0x8ffc, 0xa438, 0x80ee, 0xa438, 0x8ffd, 0xa438, 0x00ee, + 0xa438, 0x8ffe, 0xa438, 0x80ee, 0xa438, 0x8fff, 0xa438, 0x00af, + 0xa438, 0x8599, 0xa438, 0xa101, 0xa438, 0x0cbf, 0xa438, 0x534c, + 0xa438, 0x0252, 0xa438, 0xc8a1, 0xa438, 0x0303, 0xa438, 0xaf85, + 0xa438, 0x77bf, 0xa438, 0x5322, 0xa438, 0x0252, 0xa438, 0xc8a1, + 0xa438, 0x8b02, 0xa438, 0xae03, 0xa438, 0xaf86, 0xa438, 0x64e0, + 0xa438, 0x8ff8, 0xa438, 0xe18f, 0xa438, 0xf9bf, 0xa438, 0x8684, + 0xa438, 0x0252, 0xa438, 0xa9e0, 0xa438, 0x8ffa, 0xa438, 0xe18f, + 0xa438, 0xfbbf, 0xa438, 0x8687, 0xa438, 0x0252, 0xa438, 0xa9e0, + 0xa438, 0x8ffc, 0xa438, 0xe18f, 0xa438, 0xfdbf, 0xa438, 0x868a, + 0xa438, 0x0252, 0xa438, 0xa9e0, 0xa438, 0x8ffe, 0xa438, 0xe18f, + 0xa438, 0xffbf, 0xa438, 0x868d, 0xa438, 0x0252, 0xa438, 0xa9af, + 0xa438, 0x867f, 0xa438, 0xbf53, 0xa438, 0x2202, 0xa438, 0x52c8, + 0xa438, 0xa144, 0xa438, 0x3cbf, 0xa438, 0x547b, 0xa438, 0x0252, + 0xa438, 0xc8e4, 0xa438, 0x8ff8, 0xa438, 0xe58f, 0xa438, 0xf9bf, + 0xa438, 0x547e, 0xa438, 0x0252, 0xa438, 0xc8e4, 0xa438, 0x8ffa, + 0xa438, 0xe58f, 0xa438, 0xfbbf, 0xa438, 0x5481, 0xa438, 0x0252, + 0xa438, 0xc8e4, 0xa438, 0x8ffc, 0xa438, 0xe58f, 0xa438, 0xfdbf, + 0xa438, 0x5484, 0xa438, 0x0252, 0xa438, 0xc8e4, 0xa438, 0x8ffe, + 0xa438, 0xe58f, 0xa438, 0xffbf, 0xa438, 0x5322, 0xa438, 0x0252, + 0xa438, 0xc8a1, 0xa438, 0x4448, 0xa438, 0xaf85, 0xa438, 0xa7bf, + 0xa438, 0x5322, 0xa438, 0x0252, 0xa438, 0xc8a1, 0xa438, 0x313c, + 0xa438, 0xbf54, 0xa438, 0x7b02, 0xa438, 0x52c8, 0xa438, 0xe48f, + 0xa438, 0xf8e5, 0xa438, 0x8ff9, 0xa438, 0xbf54, 0xa438, 0x7e02, + 0xa438, 0x52c8, 0xa438, 0xe48f, 0xa438, 0xfae5, 0xa438, 0x8ffb, + 0xa438, 0xbf54, 0xa438, 0x8102, 0xa438, 0x52c8, 0xa438, 0xe48f, + 0xa438, 0xfce5, 0xa438, 0x8ffd, 0xa438, 0xbf54, 0xa438, 0x8402, + 0xa438, 0x52c8, 0xa438, 0xe48f, 0xa438, 0xfee5, 0xa438, 0x8fff, + 0xa438, 0xbf53, 0xa438, 0x2202, 0xa438, 0x52c8, 0xa438, 0xa131, + 0xa438, 0x03af, 0xa438, 0x85a7, 0xa438, 0xd480, 0xa438, 0x00bf, 0xa438, 0x8684, 0xa438, 0x0252, 0xa438, 0xa9bf, 0xa438, 0x8687, 0xa438, 0x0252, 0xa438, 0xa9bf, 0xa438, 0x868a, 0xa438, 0x0252, - 0xa438, 0xa9bf, 0xa438, 0x868d, 0xa438, 0x0252, 0xa438, 0xa9ee, - 0xa438, 0x8ff3, 0xa438, 0x00af, 0xa438, 0x8526, 0xa438, 0xe08f, - 0xa438, 0xf4e1, 0xa438, 0x8ff5, 0xa438, 0xe28f, 0xa438, 0xf6e3, - 0xa438, 0x8ff7, 0xa438, 0x1b45, 0xa438, 0xac27, 0xa438, 0x0eee, - 0xa438, 0x8ff4, 0xa438, 0x00ee, 0xa438, 0x8ff5, 0xa438, 0x0002, - 0xa438, 0x852c, 0xa438, 0xaf85, 0xa438, 0x26e0, 0xa438, 0x8ff4, - 0xa438, 0xe18f, 0xa438, 0xf52c, 0xa438, 0x0001, 0xa438, 0xe48f, - 0xa438, 0xf4e5, 0xa438, 0x8ff5, 0xa438, 0xef96, 0xa438, 0xfefd, - 0xa438, 0xfc04, 0xa438, 0xf8f9, 0xa438, 0xef59, 0xa438, 0xbf53, - 0xa438, 0x2202, 0xa438, 0x52c8, 0xa438, 0xa18b, 0xa438, 0x02ae, - 0xa438, 0x03af, 0xa438, 0x85da, 0xa438, 0xbf57, 0xa438, 0x7202, - 0xa438, 0x52c8, 0xa438, 0xe48f, 0xa438, 0xf8e5, 0xa438, 0x8ff9, - 0xa438, 0xbf57, 0xa438, 0x7502, 0xa438, 0x52c8, 0xa438, 0xe48f, - 0xa438, 0xfae5, 0xa438, 0x8ffb, 0xa438, 0xbf57, 0xa438, 0x7802, - 0xa438, 0x52c8, 0xa438, 0xe48f, 0xa438, 0xfce5, 0xa438, 0x8ffd, - 0xa438, 0xbf57, 0xa438, 0x7b02, 0xa438, 0x52c8, 0xa438, 0xe48f, - 0xa438, 0xfee5, 0xa438, 0x8fff, 0xa438, 0xbf57, 0xa438, 0x6c02, - 0xa438, 0x52c8, 0xa438, 0xa102, 0xa438, 0x13ee, 0xa438, 0x8ffc, - 0xa438, 0x80ee, 0xa438, 0x8ffd, 0xa438, 0x00ee, 0xa438, 0x8ffe, - 0xa438, 0x80ee, 0xa438, 0x8fff, 0xa438, 0x00af, 0xa438, 0x8599, - 0xa438, 0xa101, 0xa438, 0x0cbf, 0xa438, 0x534c, 0xa438, 0x0252, - 0xa438, 0xc8a1, 0xa438, 0x0303, 0xa438, 0xaf85, 0xa438, 0x77bf, - 0xa438, 0x5322, 0xa438, 0x0252, 0xa438, 0xc8a1, 0xa438, 0x8b02, - 0xa438, 0xae03, 0xa438, 0xaf86, 0xa438, 0x64e0, 0xa438, 0x8ff8, - 0xa438, 0xe18f, 0xa438, 0xf9bf, 0xa438, 0x8684, 0xa438, 0x0252, - 0xa438, 0xa9e0, 0xa438, 0x8ffa, 0xa438, 0xe18f, 0xa438, 0xfbbf, - 0xa438, 0x8687, 0xa438, 0x0252, 0xa438, 0xa9e0, 0xa438, 0x8ffc, - 0xa438, 0xe18f, 0xa438, 0xfdbf, 0xa438, 0x868a, 0xa438, 0x0252, - 0xa438, 0xa9e0, 0xa438, 0x8ffe, 0xa438, 0xe18f, 0xa438, 0xffbf, - 0xa438, 0x868d, 0xa438, 0x0252, 0xa438, 0xa9af, 0xa438, 0x867f, - 0xa438, 0xbf53, 0xa438, 0x2202, 0xa438, 0x52c8, 0xa438, 0xa144, - 0xa438, 0x3cbf, 0xa438, 0x547b, 0xa438, 0x0252, 0xa438, 0xc8e4, - 0xa438, 0x8ff8, 0xa438, 0xe58f, 0xa438, 0xf9bf, 0xa438, 0x547e, - 0xa438, 0x0252, 0xa438, 0xc8e4, 0xa438, 0x8ffa, 0xa438, 0xe58f, - 0xa438, 0xfbbf, 0xa438, 0x5481, 0xa438, 0x0252, 0xa438, 0xc8e4, - 0xa438, 0x8ffc, 0xa438, 0xe58f, 0xa438, 0xfdbf, 0xa438, 0x5484, - 0xa438, 0x0252, 0xa438, 0xc8e4, 0xa438, 0x8ffe, 0xa438, 0xe58f, - 0xa438, 0xffbf, 0xa438, 0x5322, 0xa438, 0x0252, 0xa438, 0xc8a1, - 0xa438, 0x4448, 0xa438, 0xaf85, 0xa438, 0xa7bf, 0xa438, 0x5322, - 0xa438, 0x0252, 0xa438, 0xc8a1, 0xa438, 0x313c, 0xa438, 0xbf54, - 0xa438, 0x7b02, 0xa438, 0x52c8, 0xa438, 0xe48f, 0xa438, 0xf8e5, - 0xa438, 0x8ff9, 0xa438, 0xbf54, 0xa438, 0x7e02, 0xa438, 0x52c8, - 0xa438, 0xe48f, 0xa438, 0xfae5, 0xa438, 0x8ffb, 0xa438, 0xbf54, - 0xa438, 0x8102, 0xa438, 0x52c8, 0xa438, 0xe48f, 0xa438, 0xfce5, - 0xa438, 0x8ffd, 0xa438, 0xbf54, 0xa438, 0x8402, 0xa438, 0x52c8, - 0xa438, 0xe48f, 0xa438, 0xfee5, 0xa438, 0x8fff, 0xa438, 0xbf53, - 0xa438, 0x2202, 0xa438, 0x52c8, 0xa438, 0xa131, 0xa438, 0x03af, - 0xa438, 0x85a7, 0xa438, 0xd480, 0xa438, 0x00bf, 0xa438, 0x8684, - 0xa438, 0x0252, 0xa438, 0xa9bf, 0xa438, 0x8687, 0xa438, 0x0252, - 0xa438, 0xa9bf, 0xa438, 0x868a, 0xa438, 0x0252, 0xa438, 0xa9bf, - 0xa438, 0x868d, 0xa438, 0x0252, 0xa438, 0xa9ef, 0xa438, 0x95fd, - 0xa438, 0xfc04, 0xa438, 0xf0d1, 0xa438, 0x2af0, 0xa438, 0xd12c, - 0xa438, 0xf0d1, 0xa438, 0x44f0, 0xa438, 0xd146, 0xa438, 0xbf86, - 0xa438, 0xa102, 0xa438, 0x52c8, 0xa438, 0xbf86, 0xa438, 0xa102, - 0xa438, 0x52c8, 0xa438, 0xd101, 0xa438, 0xaf06, 0xa438, 0xa570, - 0xa438, 0xce42, 0xa436, 0xb818, 0xa438, 0x043d, 0xa436, 0xb81a, - 0xa438, 0x06a3, 0xa436, 0xb81c, 0xa438, 0xffff, 0xa436, 0xb81e, - 0xa438, 0xffff, 0xa436, 0xb850, 0xa438, 0xffff, 0xa436, 0xb852, - 0xa438, 0xffff, 0xa436, 0xb878, 0xa438, 0xffff, 0xa436, 0xb884, - 0xa438, 0xffff, 0xa436, 0xb832, 0xa438, 0x0003, 0xa436, 0x0000, - 0xa438, 0x0000, 0xa436, 0xB82E, 0xa438, 0x0000, 0xa436, 0x8024, - 0xa438, 0x0000, 0xa436, 0x801E, 0xa438, 0x0021, 0xb820, 0x0000, + 0xa438, 0xa9bf, 0xa438, 0x868d, 0xa438, 0x0252, 0xa438, 0xa9ef, + 0xa438, 0x95fd, 0xa438, 0xfc04, 0xa438, 0xf0d1, 0xa438, 0x2af0, + 0xa438, 0xd12c, 0xa438, 0xf0d1, 0xa438, 0x44f0, 0xa438, 0xd146, + 0xa438, 0xbf86, 0xa438, 0xa102, 0xa438, 0x52c8, 0xa438, 0xbf86, + 0xa438, 0xa102, 0xa438, 0x52c8, 0xa438, 0xd101, 0xa438, 0xaf06, + 0xa438, 0xa570, 0xa438, 0xce42, 0xa438, 0xee83, 0xa438, 0xc800, + 0xa438, 0x0286, 0xa438, 0xba02, 0xa438, 0x8728, 0xa438, 0x0287, + 0xa438, 0xbe02, 0xa438, 0x87f9, 0xa438, 0x0288, 0xa438, 0xc3af, + 0xa438, 0x4771, 0xa438, 0xf8f9, 0xa438, 0xfafb, 0xa438, 0xef69, + 0xa438, 0xfae0, 0xa438, 0x8015, 0xa438, 0xad25, 0xa438, 0x45d2, + 0xa438, 0x0002, 0xa438, 0x8714, 0xa438, 0xac4f, 0xa438, 0x02ae, + 0xa438, 0x0bef, 0xa438, 0x46f6, 0xa438, 0x273c, 0xa438, 0x0400, + 0xa438, 0xab26, 0xa438, 0xae30, 0xa438, 0xe08f, 0xa438, 0xe9e1, + 0xa438, 0x8fea, 0xa438, 0x1b46, 0xa438, 0xab26, 0xa438, 0xef32, + 0xa438, 0x0c31, 0xa438, 0xbf8f, 0xa438, 0xe91a, 0xa438, 0x93d8, + 0xa438, 0x19d9, 0xa438, 0x1b46, 0xa438, 0xab0a, 0xa438, 0x19d8, + 0xa438, 0x19d9, 0xa438, 0x1b46, 0xa438, 0xaa02, 0xa438, 0xae0c, + 0xa438, 0xbf57, 0xa438, 0x1202, 0xa438, 0x58b1, 0xa438, 0xbf57, + 0xa438, 0x1202, 0xa438, 0x58a8, 0xa438, 0xfeef, 0xa438, 0x96ff, + 0xa438, 0xfefd, 0xa438, 0xfc04, 0xa438, 0xf8fb, 0xa438, 0xef79, + 0xa438, 0xa200, 0xa438, 0x08bf, 0xa438, 0x892e, 0xa438, 0x0252, + 0xa438, 0xc8ef, 0xa438, 0x64ef, 0xa438, 0x97ff, 0xa438, 0xfc04, + 0xa438, 0xf8f9, 0xa438, 0xfafb, 0xa438, 0xef69, 0xa438, 0xfae0, + 0xa438, 0x8015, 0xa438, 0xad25, 0xa438, 0x50d2, 0xa438, 0x0002, + 0xa438, 0x878d, 0xa438, 0xac4f, 0xa438, 0x02ae, 0xa438, 0x0bef, + 0xa438, 0x46f6, 0xa438, 0x273c, 0xa438, 0x1000, 0xa438, 0xab31, + 0xa438, 0xae29, 0xa438, 0xe08f, 0xa438, 0xede1, 0xa438, 0x8fee, + 0xa438, 0x1b46, 0xa438, 0xab1f, 0xa438, 0xa200, 0xa438, 0x04ef, + 0xa438, 0x32ae, 0xa438, 0x02d3, 0xa438, 0x010c, 0xa438, 0x31bf, + 0xa438, 0x8fed, 0xa438, 0x1a93, 0xa438, 0xd819, 0xa438, 0xd91b, + 0xa438, 0x46ab, 0xa438, 0x0e19, 0xa438, 0xd819, 0xa438, 0xd91b, + 0xa438, 0x46aa, 0xa438, 0x0612, 0xa438, 0xa205, 0xa438, 0xc0ae, + 0xa438, 0x0cbf, 0xa438, 0x5712, 0xa438, 0x0258, 0xa438, 0xb1bf, + 0xa438, 0x5712, 0xa438, 0x0258, 0xa438, 0xa8fe, 0xa438, 0xef96, + 0xa438, 0xfffe, 0xa438, 0xfdfc, 0xa438, 0x04f8, 0xa438, 0xfbef, + 0xa438, 0x79a2, 0xa438, 0x0005, 0xa438, 0xbf89, 0xa438, 0x1fae, + 0xa438, 0x1ba2, 0xa438, 0x0105, 0xa438, 0xbf89, 0xa438, 0x22ae, + 0xa438, 0x13a2, 0xa438, 0x0205, 0xa438, 0xbf89, 0xa438, 0x25ae, + 0xa438, 0x0ba2, 0xa438, 0x0305, 0xa438, 0xbf89, 0xa438, 0x28ae, + 0xa438, 0x03bf, 0xa438, 0x892b, 0xa438, 0x0252, 0xa438, 0xc8ef, + 0xa438, 0x64ef, 0xa438, 0x97ff, 0xa438, 0xfc04, 0xa438, 0xf8f9, + 0xa438, 0xfaef, 0xa438, 0x69fa, 0xa438, 0xe080, 0xa438, 0x15ad, + 0xa438, 0x2628, 0xa438, 0xe081, 0xa438, 0xabe1, 0xa438, 0x81ac, + 0xa438, 0xef64, 0xa438, 0xbf57, 0xa438, 0x1802, 0xa438, 0x52c8, + 0xa438, 0x1b46, 0xa438, 0xaa0a, 0xa438, 0xbf57, 0xa438, 0x1b02, + 0xa438, 0x52c8, 0xa438, 0x1b46, 0xa438, 0xab0c, 0xa438, 0xbf57, + 0xa438, 0x1502, 0xa438, 0x58b1, 0xa438, 0xbf57, 0xa438, 0x1502, + 0xa438, 0x58a8, 0xa438, 0xfeef, 0xa438, 0x96fe, 0xa438, 0xfdfc, + 0xa438, 0x04f8, 0xa438, 0xf9ef, 0xa438, 0x59f9, 0xa438, 0xe080, + 0xa438, 0x15ad, 0xa438, 0x2622, 0xa438, 0xbf53, 0xa438, 0x2202, + 0xa438, 0x52c8, 0xa438, 0x3972, 0xa438, 0x9e10, 0xa438, 0xe083, + 0xa438, 0xc9ac, 0xa438, 0x2605, 0xa438, 0x0288, 0xa438, 0x2cae, + 0xa438, 0x0d02, 0xa438, 0x8870, 0xa438, 0xae08, 0xa438, 0xe283, + 0xa438, 0xc9f6, 0xa438, 0x36e6, 0xa438, 0x83c9, 0xa438, 0xfdef, + 0xa438, 0x95fd, 0xa438, 0xfc04, 0xa438, 0xf8f9, 0xa438, 0xfafb, + 0xa438, 0xef79, 0xa438, 0xfbbf, 0xa438, 0x5718, 0xa438, 0x0252, + 0xa438, 0xc8ef, 0xa438, 0x64e2, 0xa438, 0x8fe5, 0xa438, 0xe38f, + 0xa438, 0xe61b, 0xa438, 0x659e, 0xa438, 0x10e4, 0xa438, 0x8fe5, + 0xa438, 0xe58f, 0xa438, 0xe6e2, 0xa438, 0x83c9, 0xa438, 0xf636, + 0xa438, 0xe683, 0xa438, 0xc9ae, 0xa438, 0x13e2, 0xa438, 0x83c9, + 0xa438, 0xf736, 0xa438, 0xe683, 0xa438, 0xc902, 0xa438, 0x5820, + 0xa438, 0xef57, 0xa438, 0xe68f, 0xa438, 0xe7e7, 0xa438, 0x8fe8, + 0xa438, 0xffef, 0xa438, 0x97ff, 0xa438, 0xfefd, 0xa438, 0xfc04, + 0xa438, 0xf8f9, 0xa438, 0xfafb, 0xa438, 0xef79, 0xa438, 0xfbe2, + 0xa438, 0x8fe7, 0xa438, 0xe38f, 0xa438, 0xe8ef, 0xa438, 0x65e2, + 0xa438, 0x81b8, 0xa438, 0xe381, 0xa438, 0xb9ef, 0xa438, 0x7502, + 0xa438, 0x583b, 0xa438, 0xac50, 0xa438, 0x1abf, 0xa438, 0x5718, + 0xa438, 0x0252, 0xa438, 0xc8ef, 0xa438, 0x64e2, 0xa438, 0x8fe5, + 0xa438, 0xe38f, 0xa438, 0xe61b, 0xa438, 0x659e, 0xa438, 0x1ce4, + 0xa438, 0x8fe5, 0xa438, 0xe58f, 0xa438, 0xe6ae, 0xa438, 0x0cbf, + 0xa438, 0x5715, 0xa438, 0x0258, 0xa438, 0xb1bf, 0xa438, 0x5715, + 0xa438, 0x0258, 0xa438, 0xa8e2, 0xa438, 0x83c9, 0xa438, 0xf636, + 0xa438, 0xe683, 0xa438, 0xc9ff, 0xa438, 0xef97, 0xa438, 0xfffe, + 0xa438, 0xfdfc, 0xa438, 0x04f8, 0xa438, 0xf9fa, 0xa438, 0xef69, + 0xa438, 0xe080, 0xa438, 0x15ad, 0xa438, 0x264b, 0xa438, 0xbf53, + 0xa438, 0xca02, 0xa438, 0x52c8, 0xa438, 0xad28, 0xa438, 0x42bf, + 0xa438, 0x8931, 0xa438, 0x0252, 0xa438, 0xc8ef, 0xa438, 0x54bf, + 0xa438, 0x576c, 0xa438, 0x0252, 0xa438, 0xc8a1, 0xa438, 0x001b, + 0xa438, 0xbf53, 0xa438, 0x4c02, 0xa438, 0x52c8, 0xa438, 0xac29, + 0xa438, 0x0dac, 0xa438, 0x2805, 0xa438, 0xa302, 0xa438, 0x16ae, + 0xa438, 0x20a3, 0xa438, 0x0311, 0xa438, 0xae1b, 0xa438, 0xa304, + 0xa438, 0x0cae, 0xa438, 0x16a3, 0xa438, 0x0802, 0xa438, 0xae11, + 0xa438, 0xa309, 0xa438, 0x02ae, 0xa438, 0x0cbf, 0xa438, 0x5715, + 0xa438, 0x0258, 0xa438, 0xb1bf, 0xa438, 0x5715, 0xa438, 0x0258, + 0xa438, 0xa8ef, 0xa438, 0x96fe, 0xa438, 0xfdfc, 0xa438, 0x04f0, + 0xa438, 0xa300, 0xa438, 0xf0a3, 0xa438, 0x02f0, 0xa438, 0xa304, + 0xa438, 0xf0a3, 0xa438, 0x06f0, 0xa438, 0xa308, 0xa438, 0xf0a2, + 0xa438, 0x8074, 0xa438, 0xa600, 0xa438, 0xac4f, 0xa438, 0x02ae, + 0xa438, 0x0bef, 0xa438, 0x46f6, 0xa438, 0x273c, 0xa438, 0x1000, + 0xa438, 0xab1b, 0xa438, 0xae16, 0xa438, 0xe081, 0xa438, 0xabe1, + 0xa438, 0x81ac, 0xa438, 0x1b46, 0xa438, 0xab0c, 0xa438, 0xac32, + 0xa438, 0x04ef, 0xa438, 0x32ae, 0xa438, 0x02d3, 0xa438, 0x04af, + 0xa438, 0x486c, 0xa438, 0xaf48, 0xa438, 0x82af, 0xa438, 0x4888, + 0xa438, 0xe081, 0xa438, 0x9be1, 0xa438, 0x819c, 0xa438, 0xe28f, + 0xa438, 0xe3ad, 0xa438, 0x3009, 0xa438, 0x1f55, 0xa438, 0xe38f, + 0xa438, 0xe20c, 0xa438, 0x581a, 0xa438, 0x45e4, 0xa438, 0x83a6, + 0xa438, 0xe583, 0xa438, 0xa7af, 0xa438, 0x2a75, 0xa438, 0xe08f, + 0xa438, 0xe3ad, 0xa438, 0x201c, 0xa438, 0x1f44, 0xa438, 0xe18f, + 0xa438, 0xe10c, 0xa438, 0x44ef, 0xa438, 0x64e0, 0xa438, 0x8232, + 0xa438, 0xe182, 0xa438, 0x331b, 0xa438, 0x649f, 0xa438, 0x091f, + 0xa438, 0x44e1, 0xa438, 0x8fe2, 0xa438, 0x0c48, 0xa438, 0x1b54, + 0xa438, 0xe683, 0xa438, 0xa6e7, 0xa438, 0x83a7, 0xa438, 0xaf2b, + 0xa438, 0xd900, 0xa436, 0xb818, 0xa438, 0x043d, 0xa436, 0xb81a, + 0xa438, 0x06a3, 0xa436, 0xb81c, 0xa438, 0x476d, 0xa436, 0xb81e, + 0xa438, 0x4852, 0xa436, 0xb850, 0xa438, 0x2A69, 0xa436, 0xb852, + 0xa438, 0x2BD3, 0xa436, 0xb878, 0xa438, 0xffff, 0xa436, 0xb884, + 0xa438, 0xffff, 0xa436, 0xb832, 0xa438, 0x003f, 0xb844, 0xffff, + 0xa436, 0x8fe9, 0xa438, 0x0000, 0xa436, 0x8feb, 0xa438, 0x02fe, + 0xa436, 0x8fed, 0xa438, 0x0019, 0xa436, 0x8fef, 0xa438, 0x0bdb, + 0xa436, 0x8ff1, 0xa438, 0x0ca4, 0xa436, 0x0000, 0xa438, 0x0000, + 0xa436, 0xB82E, 0xa438, 0x0000, 0xa436, 0x8024, 0xa438, 0x0000, + 0xa436, 0x801E, 0xa438, 0x0024, 0xb820, 0x0000, 0xFFFF, 0xFFFF +}; + +static const u_int16_t phy_mcu_ram_code_8125d_1_1[] = { + 0xa436, 0x8023, 0xa438, 0x3800, 0xa436, 0xB82E, 0xa438, 0x0001, + 0xb820, 0x0090, 0xa436, 0xA016, 0xa438, 0x0000, 0xa436, 0xA012, + 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, + 0xa438, 0x1800, 0xa438, 0x8018, 0xa438, 0x1800, 0xa438, 0x8021, + 0xa438, 0x1800, 0xa438, 0x8029, 0xa438, 0x1800, 0xa438, 0x8031, + 0xa438, 0x1800, 0xa438, 0x8035, 0xa438, 0x1800, 0xa438, 0x8035, + 0xa438, 0x1800, 0xa438, 0x8035, 0xa438, 0xd711, 0xa438, 0x6081, + 0xa438, 0x8904, 0xa438, 0x1800, 0xa438, 0x2021, 0xa438, 0xa904, + 0xa438, 0x1800, 0xa438, 0x2021, 0xa438, 0xd75f, 0xa438, 0x4083, + 0xa438, 0xd503, 0xa438, 0xa908, 0xa438, 0x87f0, 0xa438, 0x1000, + 0xa438, 0x17e0, 0xa438, 0x1800, 0xa438, 0x13c3, 0xa438, 0xd707, + 0xa438, 0x2005, 0xa438, 0x8027, 0xa438, 0xd75e, 0xa438, 0x1800, + 0xa438, 0x1434, 0xa438, 0x1800, 0xa438, 0x14a5, 0xa438, 0xc504, + 0xa438, 0xce20, 0xa438, 0xcf01, 0xa438, 0xd70a, 0xa438, 0x4005, + 0xa438, 0xcf02, 0xa438, 0x1800, 0xa438, 0x1c50, 0xa438, 0xa980, + 0xa438, 0xd500, 0xa438, 0x1800, 0xa438, 0x14f3, 0xa436, 0xA026, + 0xa438, 0xffff, 0xa436, 0xA024, 0xa438, 0xffff, 0xa436, 0xA022, + 0xa438, 0xffff, 0xa436, 0xA020, 0xa438, 0x14f2, 0xa436, 0xA006, + 0xa438, 0x1c4f, 0xa436, 0xA004, 0xa438, 0x1433, 0xa436, 0xA002, + 0xa438, 0x13c1, 0xa436, 0xA000, 0xa438, 0x2020, 0xa436, 0xA008, + 0xa438, 0x1f00, 0xa436, 0xA016, 0xa438, 0x0000, 0xa436, 0xA012, + 0xa438, 0x07f8, 0xa436, 0xA014, 0xa438, 0xd04d, 0xa438, 0x8904, + 0xa438, 0x813C, 0xa438, 0xA13D, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa436, 0xA152, 0xa438, 0x1384, + 0xa436, 0xA154, 0xa438, 0x1fa8, 0xa436, 0xA156, 0xa438, 0x218B, + 0xa436, 0xA158, 0xa438, 0x21B8, 0xa436, 0xA15A, 0xa438, 0x3fff, + 0xa436, 0xA15C, 0xa438, 0x3fff, 0xa436, 0xA15E, 0xa438, 0x3fff, + 0xa436, 0xA160, 0xa438, 0x3fff, 0xa436, 0xA150, 0xa438, 0x000f, + 0xa436, 0xA016, 0xa438, 0x0020, 0xa436, 0xA012, 0xa438, 0x1ff8, + 0xa436, 0xA014, 0xa438, 0x001c, 0xa438, 0xce15, 0xa438, 0xd105, + 0xa438, 0xa410, 0xa438, 0x8320, 0xa438, 0xFFD7, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa436, 0xA164, 0xa438, 0x0260, 0xa436, 0xA166, + 0xa438, 0x0add, 0xa436, 0xA168, 0xa438, 0x05CC, 0xa436, 0xA16A, + 0xa438, 0x05C5, 0xa436, 0xA16C, 0xa438, 0x0429, 0xa436, 0xA16E, + 0xa438, 0x07B6, 0xa436, 0xA170, 0xa438, 0x0259, 0xa436, 0xA172, + 0xa438, 0x3fff, 0xa436, 0xA162, 0xa438, 0x003f, 0xa436, 0xA016, + 0xa438, 0x0020, 0xa436, 0xA012, 0xa438, 0x0000, 0xa436, 0xA014, + 0xa438, 0x1800, 0xa438, 0x8010, 0xa438, 0x1800, 0xa438, 0x8023, + 0xa438, 0x1800, 0xa438, 0x80e6, 0xa438, 0x1800, 0xa438, 0x80f0, + 0xa438, 0x1800, 0xa438, 0x80f8, 0xa438, 0x1800, 0xa438, 0x816c, + 0xa438, 0x1800, 0xa438, 0x817d, 0xa438, 0x1800, 0xa438, 0x818b, + 0xa438, 0xa801, 0xa438, 0x9308, 0xa438, 0xb201, 0xa438, 0xb301, + 0xa438, 0xd701, 0xa438, 0x4000, 0xa438, 0xd2ff, 0xa438, 0xb302, + 0xa438, 0xd200, 0xa438, 0xb201, 0xa438, 0xb309, 0xa438, 0xd701, + 0xa438, 0x4000, 0xa438, 0xd2ff, 0xa438, 0xb302, 0xa438, 0xd200, + 0xa438, 0xa800, 0xa438, 0x1800, 0xa438, 0x0031, 0xa438, 0xd700, + 0xa438, 0x4543, 0xa438, 0xd71f, 0xa438, 0x40fe, 0xa438, 0xd1b7, + 0xa438, 0xd049, 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0xd700, + 0xa438, 0x5fbb, 0xa438, 0xa220, 0xa438, 0x8501, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0x0c70, 0xa438, 0x0b00, 0xa438, 0x0c07, + 0xa438, 0x0604, 0xa438, 0x9503, 0xa438, 0xa510, 0xa438, 0xce49, + 0xa438, 0x1000, 0xa438, 0x10be, 0xa438, 0x8520, 0xa438, 0xa520, + 0xa438, 0xa501, 0xa438, 0xd105, 0xa438, 0xd047, 0xa438, 0x1000, + 0xa438, 0x109e, 0xa438, 0xd707, 0xa438, 0x6087, 0xa438, 0xd700, + 0xa438, 0x5f7b, 0xa438, 0xffe9, 0xa438, 0x1000, 0xa438, 0x109e, + 0xa438, 0x8501, 0xa438, 0xd707, 0xa438, 0x5e08, 0xa438, 0x8530, + 0xa438, 0xba20, 0xa438, 0xf00c, 0xa438, 0xd700, 0xa438, 0x4098, + 0xa438, 0xd1ef, 0xa438, 0xd047, 0xa438, 0xf003, 0xa438, 0xd1db, + 0xa438, 0xd040, 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0xd700, + 0xa438, 0x5fbb, 0xa438, 0x8980, 0xa438, 0xd704, 0xa438, 0x40a3, + 0xa438, 0xd702, 0xa438, 0x4060, 0xa438, 0x8410, 0xa438, 0xf002, + 0xa438, 0xa410, 0xa438, 0xce02, 0xa438, 0x1000, 0xa438, 0x10be, + 0xa438, 0xcd81, 0xa438, 0xd412, 0xa438, 0x1000, 0xa438, 0x1069, + 0xa438, 0xcd82, 0xa438, 0xd40e, 0xa438, 0x1000, 0xa438, 0x1069, + 0xa438, 0xcd83, 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0xd71f, + 0xa438, 0x5fb4, 0xa438, 0xa00a, 0xa438, 0xa340, 0xa438, 0x0c06, + 0xa438, 0x0102, 0xa438, 0xa240, 0xa438, 0xa290, 0xa438, 0xa324, + 0xa438, 0xab02, 0xa438, 0xd13e, 0xa438, 0xd05a, 0xa438, 0xd13e, + 0xa438, 0xd06b, 0xa438, 0xcd84, 0xa438, 0x1000, 0xa438, 0x109e, + 0xa438, 0xd706, 0xa438, 0x6079, 0xa438, 0xd700, 0xa438, 0x5f5c, + 0xa438, 0xcd8a, 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0xd706, + 0xa438, 0x6079, 0xa438, 0xd700, 0xa438, 0x5f5d, 0xa438, 0xcd8b, + 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0xcd8c, 0xa438, 0xd700, + 0xa438, 0x6050, 0xa438, 0xab04, 0xa438, 0xd700, 0xa438, 0x4083, + 0xa438, 0xd160, 0xa438, 0xd04b, 0xa438, 0xf003, 0xa438, 0xd193, + 0xa438, 0xd047, 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0xd700, + 0xa438, 0x5fbb, 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0x8410, + 0xa438, 0xd71f, 0xa438, 0x5f94, 0xa438, 0xb920, 0xa438, 0x1000, + 0xa438, 0x109e, 0xa438, 0xd71f, 0xa438, 0x7fb4, 0xa438, 0x9920, + 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0xd71f, 0xa438, 0x6105, + 0xa438, 0x6054, 0xa438, 0xfffb, 0xa438, 0x1000, 0xa438, 0x109e, + 0xa438, 0xd706, 0xa438, 0x5fb9, 0xa438, 0xfff0, 0xa438, 0xa410, + 0xa438, 0xb820, 0xa438, 0xcd85, 0xa438, 0x1000, 0xa438, 0x109e, + 0xa438, 0xd71f, 0xa438, 0x7fa5, 0xa438, 0x9820, 0xa438, 0xbb20, + 0xa438, 0xd105, 0xa438, 0xd042, 0xa438, 0x1000, 0xa438, 0x109e, + 0xa438, 0xd706, 0xa438, 0x5fbb, 0xa438, 0x5f85, 0xa438, 0xd700, + 0xa438, 0x5f5b, 0xa438, 0xd700, 0xa438, 0x6090, 0xa438, 0xd700, + 0xa438, 0x4043, 0xa438, 0xaa20, 0xa438, 0xcd86, 0xa438, 0xd700, + 0xa438, 0x6083, 0xa438, 0xd1c7, 0xa438, 0xd045, 0xa438, 0xf003, + 0xa438, 0xd17a, 0xa438, 0xd04b, 0xa438, 0x1000, 0xa438, 0x109e, + 0xa438, 0xd700, 0xa438, 0x5fbb, 0xa438, 0x0c18, 0xa438, 0x0108, + 0xa438, 0x0c3f, 0xa438, 0x0609, 0xa438, 0x0cfb, 0xa438, 0x0729, + 0xa438, 0xa308, 0xa438, 0x8320, 0xa438, 0xd105, 0xa438, 0xd042, + 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0xd700, 0xa438, 0x5fbb, + 0xa438, 0x1800, 0xa438, 0x08f7, 0xa438, 0x1000, 0xa438, 0x109e, + 0xa438, 0x1000, 0xa438, 0x10a3, 0xa438, 0xd700, 0xa438, 0x607b, + 0xa438, 0xd700, 0xa438, 0x5f2b, 0xa438, 0x1800, 0xa438, 0x0a81, + 0xa438, 0xd700, 0xa438, 0x40bd, 0xa438, 0xd707, 0xa438, 0x4065, + 0xa438, 0x1800, 0xa438, 0x1121, 0xa438, 0x1800, 0xa438, 0x1124, + 0xa438, 0xd705, 0xa438, 0x627d, 0xa438, 0xd704, 0xa438, 0x6192, + 0xa438, 0xa00a, 0xa438, 0xd704, 0xa438, 0x41c7, 0xa438, 0xd700, + 0xa438, 0x3691, 0xa438, 0x810c, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa570, 0xa438, 0x9503, 0xa438, 0xf006, 0xa438, 0x800a, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8570, 0xa438, 0x9503, + 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0x1000, 0xa438, 0x1108, + 0xa438, 0xcd64, 0xa438, 0xd704, 0xa438, 0x3398, 0xa438, 0x8166, + 0xa438, 0xd71f, 0xa438, 0x620e, 0xa438, 0xd704, 0xa438, 0x6096, + 0xa438, 0xd705, 0xa438, 0x6051, 0xa438, 0xf004, 0xa438, 0xd705, + 0xa438, 0x605d, 0xa438, 0xf008, 0xa438, 0xd706, 0xa438, 0x609d, + 0xa438, 0xd705, 0xa438, 0x405f, 0xa438, 0xf003, 0xa438, 0xd700, + 0xa438, 0x5a9b, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xc7aa, + 0xa438, 0x9503, 0xa438, 0xd71f, 0xa438, 0x674e, 0xa438, 0xd704, + 0xa438, 0x6096, 0xa438, 0xd705, 0xa438, 0x6051, 0xa438, 0xf005, + 0xa438, 0xd705, 0xa438, 0x607d, 0xa438, 0x1800, 0xa438, 0x0cc7, + 0xa438, 0xd706, 0xa438, 0x60bd, 0xa438, 0xd705, 0xa438, 0x407f, + 0xa438, 0x1800, 0xa438, 0x0e42, 0xa438, 0xce04, 0xa438, 0x1000, + 0xa438, 0x10be, 0xa438, 0xd702, 0xa438, 0x40a4, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0x8e20, 0xa438, 0x9503, 0xa438, 0xd702, + 0xa438, 0x40a5, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8e40, + 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x11a4, 0xa438, 0x1000, + 0xa438, 0x109e, 0xa438, 0x1000, 0xa438, 0x1108, 0xa438, 0xcd61, + 0xa438, 0xd704, 0xa438, 0x3398, 0xa438, 0x8166, 0xa438, 0xd704, + 0xa438, 0x6096, 0xa438, 0xd705, 0xa438, 0x6051, 0xa438, 0xf005, + 0xa438, 0xd705, 0xa438, 0x607d, 0xa438, 0x1800, 0xa438, 0x0cc7, + 0xa438, 0xd71f, 0xa438, 0x60ee, 0xa438, 0xd706, 0xa438, 0x7bdd, + 0xa438, 0xd705, 0xa438, 0x5b9f, 0xa438, 0x1800, 0xa438, 0x0e42, + 0xa438, 0x1800, 0xa438, 0x0b5f, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xae40, 0xa438, 0x9503, 0xa438, 0x1800, 0xa438, 0x0c47, + 0xa438, 0x607c, 0xa438, 0x1800, 0xa438, 0x027a, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0xae01, 0xa438, 0x9503, 0xa438, 0x1000, + 0xa438, 0x109e, 0xa438, 0xd702, 0xa438, 0x5fa3, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0x8e01, 0xa438, 0x9503, 0xa438, 0x1800, + 0xa438, 0x027d, 0xa438, 0x1000, 0xa438, 0x10be, 0xa438, 0xd702, + 0xa438, 0x40a5, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8e40, + 0xa438, 0x9503, 0xa438, 0xd73e, 0xa438, 0x6065, 0xa438, 0x1800, + 0xa438, 0x0cea, 0xa438, 0x1800, 0xa438, 0x0cf4, 0xa438, 0xa290, + 0xa438, 0xa304, 0xa438, 0xab02, 0xa438, 0xd700, 0xa438, 0x6050, + 0xa438, 0xab04, 0xa438, 0x0c38, 0xa438, 0x0608, 0xa438, 0xaa0b, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8d01, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0xae40, 0xa438, 0x9503, 0xa438, 0xd702, + 0xa438, 0x40a4, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8e20, + 0xa438, 0x9503, 0xa438, 0xd700, 0xa438, 0x6078, 0xa438, 0xd700, + 0xa438, 0x609a, 0xa438, 0xd109, 0xa438, 0xd074, 0xa438, 0xf003, + 0xa438, 0xd109, 0xa438, 0xd075, 0xa438, 0xd704, 0xa438, 0x6192, + 0xa438, 0xa00a, 0xa438, 0xd704, 0xa438, 0x41c7, 0xa438, 0xd700, + 0xa438, 0x3691, 0xa438, 0x81bc, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa570, 0xa438, 0x9503, 0xa438, 0xf006, 0xa438, 0x800a, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8570, 0xa438, 0x9503, + 0xa438, 0x1000, 0xa438, 0x109e, 0xa438, 0xd704, 0xa438, 0x60f3, + 0xa438, 0xd71f, 0xa438, 0x60ee, 0xa438, 0xd700, 0xa438, 0x5cfe, + 0xa438, 0x1800, 0xa438, 0x0deb, 0xa438, 0x1800, 0xa438, 0x0c47, + 0xa438, 0x1800, 0xa438, 0x0df8, 0xa436, 0xA10E, 0xa438, 0x0dc5, + 0xa436, 0xA10C, 0xa438, 0x0ce8, 0xa436, 0xA10A, 0xa438, 0x0279, + 0xa436, 0xA108, 0xa438, 0x0b19, 0xa436, 0xA106, 0xa438, 0x111f, + 0xa436, 0xA104, 0xa438, 0x0a7b, 0xa436, 0xA102, 0xa438, 0x0ba3, + 0xa436, 0xA100, 0xa438, 0x0022, 0xa436, 0xA110, 0xa438, 0x00ff, + 0xa436, 0xb87c, 0xa438, 0x859b, 0xa436, 0xb87e, 0xa438, 0xaf85, + 0xa438, 0xb3af, 0xa438, 0x863b, 0xa438, 0xaf86, 0xa438, 0x4caf, + 0xa438, 0x8688, 0xa438, 0xaf86, 0xa438, 0xceaf, 0xa438, 0x8744, + 0xa438, 0xaf87, 0xa438, 0x68af, 0xa438, 0x8781, 0xa438, 0xbf5e, + 0xa438, 0x7202, 0xa438, 0x5f7e, 0xa438, 0xac28, 0xa438, 0x68e1, + 0xa438, 0x84e6, 0xa438, 0xad28, 0xa438, 0x09bf, 0xa438, 0x5e75, + 0xa438, 0x025f, 0xa438, 0x7eac, 0xa438, 0x2d59, 0xa438, 0xe18f, + 0xa438, 0xebad, 0xa438, 0x2809, 0xa438, 0xbf5e, 0xa438, 0x7502, + 0xa438, 0x5f7e, 0xa438, 0xac2e, 0xa438, 0x50e1, 0xa438, 0x84e6, + 0xa438, 0xac28, 0xa438, 0x08bf, 0xa438, 0x873e, 0xa438, 0x025f, + 0xa438, 0x3cae, 0xa438, 0x06bf, 0xa438, 0x873e, 0xa438, 0x025f, + 0xa438, 0x33bf, 0xa438, 0x8741, 0xa438, 0x025f, 0xa438, 0x33ee, + 0xa438, 0x8fea, 0xa438, 0x02e1, 0xa438, 0x84e4, 0xa438, 0xad28, + 0xa438, 0x14e1, 0xa438, 0x8fe8, 0xa438, 0xad28, 0xa438, 0x17e1, + 0xa438, 0x84e5, 0xa438, 0x11e5, 0xa438, 0x84e5, 0xa438, 0xa10c, + 0xa438, 0x04ee, 0xa438, 0x84e5, 0xa438, 0x0002, 0xa438, 0x4977, + 0xa438, 0xee84, 0xa438, 0xdc03, 0xa438, 0xae1d, 0xa438, 0xe18f, + 0xa438, 0xe811, 0xa438, 0xe58f, 0xa438, 0xe8ae, 0xa438, 0x14bf, + 0xa438, 0x873e, 0xa438, 0x025f, 0xa438, 0x3cbf, 0xa438, 0x8741, + 0xa438, 0x025f, 0xa438, 0x3cee, 0xa438, 0x8fea, 0xa438, 0x01ee, + 0xa438, 0x84e4, 0xa438, 0x00af, 0xa438, 0x50c1, 0xa438, 0x1f00, + 0xa438, 0xbf5a, 0xa438, 0x6102, 0xa438, 0x5f5f, 0xa438, 0xbf5a, + 0xa438, 0x5e02, 0xa438, 0x5f3c, 0xa438, 0xaf45, 0xa438, 0x7be0, + 0xa438, 0x8012, 0xa438, 0xad23, 0xa438, 0x141f, 0xa438, 0x001f, + 0xa438, 0x22d1, 0xa438, 0x00bf, 0xa438, 0x3fcf, 0xa438, 0x0261, + 0xa438, 0x3412, 0xa438, 0xa204, 0xa438, 0xf6ee, 0xa438, 0x8317, + 0xa438, 0x00e0, 0xa438, 0x8012, 0xa438, 0xad24, 0xa438, 0x141f, + 0xa438, 0x001f, 0xa438, 0x22d1, 0xa438, 0x00bf, 0xa438, 0x3fd7, + 0xa438, 0x0261, 0xa438, 0x3412, 0xa438, 0xa204, 0xa438, 0xf6ee, + 0xa438, 0x8317, 0xa438, 0x00ef, 0xa438, 0x96fe, 0xa438, 0xfdfc, + 0xa438, 0xaf42, 0xa438, 0x9802, 0xa438, 0x56ec, 0xa438, 0xf70b, + 0xa438, 0xac13, 0xa438, 0x0fbf, 0xa438, 0x5e75, 0xa438, 0x025f, + 0xa438, 0x7eac, 0xa438, 0x280c, 0xa438, 0xe2ff, 0xa438, 0xcfad, + 0xa438, 0x32ee, 0xa438, 0x0257, 0xa438, 0x05af, 0xa438, 0x00a4, + 0xa438, 0x0286, 0xa438, 0xaaae, 0xa438, 0xeff8, 0xa438, 0xf9ef, + 0xa438, 0x5902, 0xa438, 0x1fe1, 0xa438, 0xbf59, 0xa438, 0x4d02, + 0xa438, 0x5f3c, 0xa438, 0xac13, 0xa438, 0x09bf, 0xa438, 0x5e75, + 0xa438, 0x025f, 0xa438, 0x7ea1, 0xa438, 0x00f4, 0xa438, 0xbf59, + 0xa438, 0x4d02, 0xa438, 0x5f33, 0xa438, 0xef95, 0xa438, 0xfdfc, + 0xa438, 0x04bf, 0xa438, 0x5e72, 0xa438, 0x025f, 0xa438, 0x7eac, + 0xa438, 0x284a, 0xa438, 0xe184, 0xa438, 0xe6ad, 0xa438, 0x2809, + 0xa438, 0xbf5e, 0xa438, 0x7502, 0xa438, 0x5f7e, 0xa438, 0xac2d, + 0xa438, 0x3be1, 0xa438, 0x8feb, 0xa438, 0xad28, 0xa438, 0x09bf, + 0xa438, 0x5e75, 0xa438, 0x025f, 0xa438, 0x7eac, 0xa438, 0x2e32, + 0xa438, 0xe184, 0xa438, 0xe6ac, 0xa438, 0x2808, 0xa438, 0xbf87, + 0xa438, 0x3e02, 0xa438, 0x5f3c, 0xa438, 0xae06, 0xa438, 0xbf87, + 0xa438, 0x3e02, 0xa438, 0x5f33, 0xa438, 0xbf87, 0xa438, 0x4102, + 0xa438, 0x5f33, 0xa438, 0xee8f, 0xa438, 0xea04, 0xa438, 0xbf5e, + 0xa438, 0x4e02, 0xa438, 0x5f7e, 0xa438, 0xad28, 0xa438, 0x1f02, + 0xa438, 0x4b12, 0xa438, 0xae1a, 0xa438, 0xbf87, 0xa438, 0x3e02, + 0xa438, 0x5f3c, 0xa438, 0xbf87, 0xa438, 0x4102, 0xa438, 0x5f3c, + 0xa438, 0xee8f, 0xa438, 0xea03, 0xa438, 0xbf5e, 0xa438, 0x2a02, + 0xa438, 0x5f33, 0xa438, 0xee84, 0xa438, 0xe701, 0xa438, 0xaf4a, + 0xa438, 0x7444, 0xa438, 0xac0e, 0xa438, 0x55ac, 0xa438, 0x0ebf, + 0xa438, 0x5e75, 0xa438, 0x025f, 0xa438, 0x7ead, 0xa438, 0x2d0b, + 0xa438, 0xbf5e, 0xa438, 0x36e1, 0xa438, 0x8fe9, 0xa438, 0x025f, + 0xa438, 0x5fae, 0xa438, 0x09bf, 0xa438, 0x5e36, 0xa438, 0xe184, + 0xa438, 0xe102, 0xa438, 0x5f5f, 0xa438, 0xee8f, 0xa438, 0xe800, + 0xa438, 0xaf49, 0xa438, 0xcdbf, 0xa438, 0x595c, 0xa438, 0x025f, + 0xa438, 0x7ea1, 0xa438, 0x0203, 0xa438, 0xaf87, 0xa438, 0x79d1, + 0xa438, 0x00af, 0xa438, 0x877c, 0xa438, 0xe181, 0xa438, 0x941f, + 0xa438, 0x00af, 0xa438, 0x3ff7, 0xa438, 0xac4e, 0xa438, 0x06ac, + 0xa438, 0x4003, 0xa438, 0xaf24, 0xa438, 0x97af, 0xa438, 0x2467, + 0xa436, 0xb85e, 0xa438, 0x5082, 0xa436, 0xb860, 0xa438, 0x4575, + 0xa436, 0xb862, 0xa438, 0x425F, 0xa436, 0xb864, 0xa438, 0x0096, + 0xa436, 0xb886, 0xa438, 0x4A44, 0xa436, 0xb888, 0xa438, 0x49c4, + 0xa436, 0xb88a, 0xa438, 0x3FF2, 0xa436, 0xb88c, 0xa438, 0x245C, + 0xa436, 0xb838, 0xa438, 0x00ff, 0xb820, 0x0010, 0xa466, 0x0001, + 0xa436, 0x836a, 0xa438, 0x0001, 0xa436, 0x843d, 0xa438, 0xaf84, + 0xa438, 0xa6af, 0xa438, 0x8540, 0xa438, 0xaf85, 0xa438, 0xaeaf, + 0xa438, 0x85b5, 0xa438, 0xaf87, 0xa438, 0x7daf, 0xa438, 0x8784, + 0xa438, 0xaf87, 0xa438, 0x87af, 0xa438, 0x87e5, 0xa438, 0x0066, + 0xa438, 0x0a03, 0xa438, 0x6607, 0xa438, 0x2666, 0xa438, 0x1c00, + 0xa438, 0x660d, 0xa438, 0x0166, 0xa438, 0x1004, 0xa438, 0x6616, + 0xa438, 0x0566, 0xa438, 0x1f06, 0xa438, 0x6a5d, 0xa438, 0x2766, + 0xa438, 0x1900, 0xa438, 0x6625, 0xa438, 0x2466, 0xa438, 0x2820, + 0xa438, 0x662b, 0xa438, 0x2466, 0xa438, 0x4600, 0xa438, 0x664c, + 0xa438, 0x0166, 0xa438, 0x4902, 0xa438, 0x8861, 0xa438, 0x0388, + 0xa438, 0x5e05, 0xa438, 0x886d, 0xa438, 0x0588, 0xa438, 0x7005, + 0xa438, 0x8873, 0xa438, 0x0588, 0xa438, 0x7605, 0xa438, 0x8879, + 0xa438, 0x0588, 0xa438, 0x7c05, 0xa438, 0x887f, 0xa438, 0x0588, + 0xa438, 0x8205, 0xa438, 0x8885, 0xa438, 0x0588, 0xa438, 0x881e, + 0xa438, 0x13ad, 0xa438, 0x2841, 0xa438, 0xbf64, 0xa438, 0xf102, + 0xa438, 0x6b9d, 0xa438, 0xad28, 0xa438, 0x03af, 0xa438, 0x15fc, + 0xa438, 0xbf65, 0xa438, 0xcb02, 0xa438, 0x6b9d, 0xa438, 0x0d11, + 0xa438, 0xf62f, 0xa438, 0xef31, 0xa438, 0xd202, 0xa438, 0xbf88, + 0xa438, 0x6402, 0xa438, 0x6b52, 0xa438, 0xe082, 0xa438, 0x020d, + 0xa438, 0x01f6, 0xa438, 0x271b, 0xa438, 0x03aa, 0xa438, 0x0182, + 0xa438, 0xe082, 0xa438, 0x010d, 0xa438, 0x01f6, 0xa438, 0x271b, + 0xa438, 0x03aa, 0xa438, 0x0782, 0xa438, 0xbf88, 0xa438, 0x6402, + 0xa438, 0x6b5b, 0xa438, 0xaf15, 0xa438, 0xf9bf, 0xa438, 0x65cb, + 0xa438, 0x026b, 0xa438, 0x9d0d, 0xa438, 0x11f6, 0xa438, 0x2fef, + 0xa438, 0x31e0, 0xa438, 0x8ff7, 0xa438, 0x0d01, 0xa438, 0xf627, + 0xa438, 0x1b03, 0xa438, 0xaa20, 0xa438, 0xe18f, 0xa438, 0xf4d0, + 0xa438, 0x00bf, 0xa438, 0x6587, 0xa438, 0x026b, 0xa438, 0x7ee1, + 0xa438, 0x8ff5, 0xa438, 0xbf65, 0xa438, 0x8a02, 0xa438, 0x6b7e, + 0xa438, 0xe18f, 0xa438, 0xf6bf, 0xa438, 0x6584, 0xa438, 0x026b, + 0xa438, 0x7eaf, 0xa438, 0x15fc, 0xa438, 0xe18f, 0xa438, 0xf1d0, + 0xa438, 0x00bf, 0xa438, 0x6587, 0xa438, 0x026b, 0xa438, 0x7ee1, + 0xa438, 0x8ff2, 0xa438, 0xbf65, 0xa438, 0x8a02, 0xa438, 0x6b7e, + 0xa438, 0xe18f, 0xa438, 0xf3bf, 0xa438, 0x6584, 0xa438, 0xaf15, + 0xa438, 0xfcd1, 0xa438, 0x07bf, 0xa438, 0x65ce, 0xa438, 0x026b, + 0xa438, 0x7ed1, 0xa438, 0x0cbf, 0xa438, 0x65d1, 0xa438, 0x026b, + 0xa438, 0x7ed1, 0xa438, 0x03bf, 0xa438, 0x885e, 0xa438, 0x026b, + 0xa438, 0x7ed1, 0xa438, 0x05bf, 0xa438, 0x8867, 0xa438, 0x026b, + 0xa438, 0x7ed1, 0xa438, 0x07bf, 0xa438, 0x886a, 0xa438, 0x026b, + 0xa438, 0x7ebf, 0xa438, 0x6a6c, 0xa438, 0x026b, 0xa438, 0x5b02, + 0xa438, 0x62b5, 0xa438, 0xbf6a, 0xa438, 0x0002, 0xa438, 0x6b5b, + 0xa438, 0xbf64, 0xa438, 0x4e02, 0xa438, 0x6b9d, 0xa438, 0xac28, + 0xa438, 0x0bbf, 0xa438, 0x6412, 0xa438, 0x026b, 0xa438, 0x9da1, + 0xa438, 0x0502, 0xa438, 0xaeec, 0xa438, 0xd104, 0xa438, 0xbf65, + 0xa438, 0xce02, 0xa438, 0x6b7e, 0xa438, 0xd104, 0xa438, 0xbf65, + 0xa438, 0xd102, 0xa438, 0x6b7e, 0xa438, 0xd102, 0xa438, 0xbf88, + 0xa438, 0x6702, 0xa438, 0x6b7e, 0xa438, 0xd104, 0xa438, 0xbf88, + 0xa438, 0x6a02, 0xa438, 0x6b7e, 0xa438, 0xaf62, 0xa438, 0x72f6, + 0xa438, 0x0af6, 0xa438, 0x09af, 0xa438, 0x34e3, 0xa438, 0x0285, + 0xa438, 0xbe02, 0xa438, 0x106c, 0xa438, 0xaf10, 0xa438, 0x6bf8, + 0xa438, 0xfaef, 0xa438, 0x69e0, 0xa438, 0x804c, 0xa438, 0xac25, + 0xa438, 0x17e0, 0xa438, 0x8040, 0xa438, 0xad25, 0xa438, 0x1a02, + 0xa438, 0x85ed, 0xa438, 0xe080, 0xa438, 0x40ac, 0xa438, 0x2511, + 0xa438, 0xbf87, 0xa438, 0x6502, 0xa438, 0x6b5b, 0xa438, 0xae09, + 0xa438, 0x0287, 0xa438, 0x2402, 0xa438, 0x875a, 0xa438, 0x0287, + 0xa438, 0x4fef, 0xa438, 0x96fe, 0xa438, 0xfc04, 0xa438, 0xf8e0, + 0xa438, 0x8019, 0xa438, 0xad20, 0xa438, 0x11e0, 0xa438, 0x8fe3, + 0xa438, 0xac20, 0xa438, 0x0502, 0xa438, 0x860a, 0xa438, 0xae03, + 0xa438, 0x0286, 0xa438, 0x7802, 0xa438, 0x86c1, 0xa438, 0x0287, + 0xa438, 0x4ffc, 0xa438, 0x04f8, 0xa438, 0xf9ef, 0xa438, 0x79fb, + 0xa438, 0xbf87, 0xa438, 0x6802, 0xa438, 0x6b9d, 0xa438, 0x5c20, + 0xa438, 0x000d, 0xa438, 0x4da1, 0xa438, 0x0151, 0xa438, 0xbf87, + 0xa438, 0x6802, 0xa438, 0x6b9d, 0xa438, 0x5c07, 0xa438, 0xffe3, + 0xa438, 0x8fe4, 0xa438, 0x1b31, 0xa438, 0x9f41, 0xa438, 0x0d48, + 0xa438, 0xe38f, 0xa438, 0xe51b, 0xa438, 0x319f, 0xa438, 0x38bf, + 0xa438, 0x876b, 0xa438, 0x026b, 0xa438, 0x9d5c, 0xa438, 0x07ff, + 0xa438, 0xe38f, 0xa438, 0xe61b, 0xa438, 0x319f, 0xa438, 0x280d, + 0xa438, 0x48e3, 0xa438, 0x8fe7, 0xa438, 0x1b31, 0xa438, 0x9f1f, + 0xa438, 0xbf87, 0xa438, 0x6e02, 0xa438, 0x6b9d, 0xa438, 0x5c07, + 0xa438, 0xffe3, 0xa438, 0x8fe8, 0xa438, 0x1b31, 0xa438, 0x9f0f, + 0xa438, 0x0d48, 0xa438, 0xe38f, 0xa438, 0xe91b, 0xa438, 0x319f, + 0xa438, 0x06ee, 0xa438, 0x8fe3, 0xa438, 0x01ae, 0xa438, 0x04ee, + 0xa438, 0x8fe3, 0xa438, 0x00ff, 0xa438, 0xef97, 0xa438, 0xfdfc, + 0xa438, 0x04f8, 0xa438, 0xf9ef, 0xa438, 0x79fb, 0xa438, 0xbf87, + 0xa438, 0x6802, 0xa438, 0x6b9d, 0xa438, 0x5c20, 0xa438, 0x000d, + 0xa438, 0x4da1, 0xa438, 0x0020, 0xa438, 0xbf87, 0xa438, 0x6802, + 0xa438, 0x6b9d, 0xa438, 0x5c06, 0xa438, 0x000d, 0xa438, 0x49e3, + 0xa438, 0x8fea, 0xa438, 0x1b31, 0xa438, 0x9f0e, 0xa438, 0xbf87, + 0xa438, 0x7102, 0xa438, 0x6b5b, 0xa438, 0xbf87, 0xa438, 0x7702, + 0xa438, 0x6b5b, 0xa438, 0xae0c, 0xa438, 0xbf87, 0xa438, 0x7102, + 0xa438, 0x6b52, 0xa438, 0xbf87, 0xa438, 0x7702, 0xa438, 0x6b52, + 0xa438, 0xee8f, 0xa438, 0xe300, 0xa438, 0xffef, 0xa438, 0x97fd, + 0xa438, 0xfc04, 0xa438, 0xf8f9, 0xa438, 0xef79, 0xa438, 0xfbbf, + 0xa438, 0x8768, 0xa438, 0x026b, 0xa438, 0x9d5c, 0xa438, 0x2000, + 0xa438, 0x0d4d, 0xa438, 0xa101, 0xa438, 0x4abf, 0xa438, 0x8768, + 0xa438, 0x026b, 0xa438, 0x9d5c, 0xa438, 0x07ff, 0xa438, 0xe38f, + 0xa438, 0xeb1b, 0xa438, 0x319f, 0xa438, 0x3a0d, 0xa438, 0x48e3, + 0xa438, 0x8fec, 0xa438, 0x1b31, 0xa438, 0x9f31, 0xa438, 0xbf87, + 0xa438, 0x6b02, 0xa438, 0x6b9d, 0xa438, 0xe38f, 0xa438, 0xed1b, + 0xa438, 0x319f, 0xa438, 0x240d, 0xa438, 0x48e3, 0xa438, 0x8fee, + 0xa438, 0x1b31, 0xa438, 0x9f1b, 0xa438, 0xbf87, 0xa438, 0x6e02, + 0xa438, 0x6b9d, 0xa438, 0xe38f, 0xa438, 0xef1b, 0xa438, 0x319f, + 0xa438, 0x0ebf, 0xa438, 0x8774, 0xa438, 0x026b, 0xa438, 0x5bbf, + 0xa438, 0x877a, 0xa438, 0x026b, 0xa438, 0x5bae, 0xa438, 0x00ff, + 0xa438, 0xef97, 0xa438, 0xfdfc, 0xa438, 0x04f8, 0xa438, 0xef79, + 0xa438, 0xfbe0, 0xa438, 0x8019, 0xa438, 0xad20, 0xa438, 0x1cee, + 0xa438, 0x8fe3, 0xa438, 0x00bf, 0xa438, 0x8771, 0xa438, 0x026b, + 0xa438, 0x52bf, 0xa438, 0x8777, 0xa438, 0x026b, 0xa438, 0x52bf, + 0xa438, 0x8774, 0xa438, 0x026b, 0xa438, 0x52bf, 0xa438, 0x877a, + 0xa438, 0x026b, 0xa438, 0x52ff, 0xa438, 0xef97, 0xa438, 0xfc04, + 0xa438, 0xf8e0, 0xa438, 0x8040, 0xa438, 0xf625, 0xa438, 0xe480, + 0xa438, 0x40fc, 0xa438, 0x04f8, 0xa438, 0xe080, 0xa438, 0x4cf6, + 0xa438, 0x25e4, 0xa438, 0x804c, 0xa438, 0xfc04, 0xa438, 0x55a4, + 0xa438, 0xbaf0, 0xa438, 0xa64a, 0xa438, 0xf0a6, 0xa438, 0x4cf0, + 0xa438, 0xa64e, 0xa438, 0x66a4, 0xa438, 0xb655, 0xa438, 0xa4b6, + 0xa438, 0x00ac, 0xa438, 0x0e11, 0xa438, 0xac0e, 0xa438, 0xee80, + 0xa438, 0x4c3a, 0xa438, 0xaf07, 0xa438, 0xd0af, 0xa438, 0x26d0, + 0xa438, 0xa201, 0xa438, 0x0ebf, 0xa438, 0x663d, 0xa438, 0x026b, + 0xa438, 0x52bf, 0xa438, 0x6643, 0xa438, 0x026b, 0xa438, 0x52ae, + 0xa438, 0x11bf, 0xa438, 0x6643, 0xa438, 0x026b, 0xa438, 0x5bd4, + 0xa438, 0x0054, 0xa438, 0xb4fe, 0xa438, 0xbf66, 0xa438, 0x3d02, + 0xa438, 0x6b5b, 0xa438, 0xd300, 0xa438, 0x020d, 0xa438, 0xf6a2, + 0xa438, 0x0405, 0xa438, 0xe081, 0xa438, 0x47ae, 0xa438, 0x03e0, + 0xa438, 0x8148, 0xa438, 0xac23, 0xa438, 0x02ae, 0xa438, 0x0268, + 0xa438, 0xf01a, 0xa438, 0x10ad, 0xa438, 0x2f04, 0xa438, 0xd100, + 0xa438, 0xae05, 0xa438, 0xad2c, 0xa438, 0x02d1, 0xa438, 0x0f1f, + 0xa438, 0x00a2, 0xa438, 0x0407, 0xa438, 0x3908, 0xa438, 0xad2f, + 0xa438, 0x02d1, 0xa438, 0x0002, 0xa438, 0x0e1c, 0xa438, 0x2b01, + 0xa438, 0xad3a, 0xa438, 0xc9af, 0xa438, 0x0dee, 0xa438, 0xa000, + 0xa438, 0x2702, 0xa438, 0x1beb, 0xa438, 0xe18f, 0xa438, 0xe1ac, + 0xa438, 0x2819, 0xa438, 0xee8f, 0xa438, 0xe101, 0xa438, 0x1f44, + 0xa438, 0xbf65, 0xa438, 0x9302, 0xa438, 0x6b9d, 0xa438, 0xe58f, + 0xa438, 0xe21f, 0xa438, 0x44d1, 0xa438, 0x02bf, 0xa438, 0x6593, + 0xa438, 0x026b, 0xa438, 0x7ee0, 0xa438, 0x82b1, 0xa438, 0xae49, + 0xa438, 0xa001, 0xa438, 0x0502, 0xa438, 0x1c4d, 0xa438, 0xae41, + 0xa438, 0xa002, 0xa438, 0x0502, 0xa438, 0x1c90, 0xa438, 0xae39, + 0xa438, 0xa003, 0xa438, 0x0502, 0xa438, 0x1c9d, 0xa438, 0xae31, + 0xa438, 0xa004, 0xa438, 0x0502, 0xa438, 0x1cbc, 0xa438, 0xae29, + 0xa438, 0xa005, 0xa438, 0x1e02, 0xa438, 0x1cc9, 0xa438, 0xe080, + 0xa438, 0xdfac, 0xa438, 0x2013, 0xa438, 0xac21, 0xa438, 0x10ac, + 0xa438, 0x220d, 0xa438, 0xe18f, 0xa438, 0xe2bf, 0xa438, 0x6593, + 0xa438, 0x026b, 0xa438, 0x7eee, 0xa438, 0x8fe1, 0xa438, 0x00ae, + 0xa438, 0x08a0, 0xa438, 0x0605, 0xa438, 0x021d, 0xa438, 0x07ae, + 0xa438, 0x00e0, 0xa438, 0x82b1, 0xa438, 0xaf1b, 0xa438, 0xe910, + 0xa438, 0xbf4a, 0xa438, 0x99bf, 0xa438, 0x4a00, 0xa438, 0xa86a, + 0xa438, 0xfdad, 0xa438, 0x5eca, 0xa438, 0xad5e, 0xa438, 0x88bd, + 0xa438, 0x2c99, 0xa438, 0xbd2c, 0xa438, 0x33bd, 0xa438, 0x3222, + 0xa438, 0xbd32, 0xa438, 0x11bd, 0xa438, 0x3200, 0xa438, 0xbd32, + 0xa438, 0x77bd, 0xa438, 0x3266, 0xa438, 0xbd32, 0xa438, 0x55bd, + 0xa438, 0x3244, 0xa438, 0xbd32, 0xa436, 0xb818, 0xa438, 0x15c5, + 0xa436, 0xb81a, 0xa438, 0x6255, 0xa436, 0xb81c, 0xa438, 0x34e1, + 0xa436, 0xb81e, 0xa438, 0x1068, 0xa436, 0xb850, 0xa438, 0x07cc, + 0xa436, 0xb852, 0xa438, 0x26ca, 0xa436, 0xb878, 0xa438, 0x0dbf, + 0xa436, 0xb884, 0xa438, 0x1BB1, 0xa436, 0xb832, 0xa438, 0x00ff, + 0xa436, 0x0000, 0xa438, 0x0000, 0xB82E, 0x0000, 0xa436, 0x8023, + 0xa438, 0x0000, 0xa436, 0x801E, 0xa438, 0x0023, 0xB820, 0x0000, + 0xFFFF, 0xFFFF +}; + +static const u_int16_t phy_mcu_ram_code_8125d_1_2[] = { + 0xb892, 0x0000, 0xB88E, 0xC28F, 0xB890, 0x252D, 0xB88E, 0xC290, + 0xB890, 0xC924, 0xB88E, 0xC291, 0xB890, 0xC92E, 0xB88E, 0xC292, + 0xB890, 0xF626, 0xB88E, 0xC293, 0xB890, 0xF630, 0xB88E, 0xC294, + 0xB890, 0xA328, 0xB88E, 0xC295, 0xB890, 0xA332, 0xB88E, 0xC296, + 0xB890, 0xD72B, 0xB88E, 0xC297, 0xB890, 0xD735, 0xB88E, 0xC298, + 0xB890, 0x8A2E, 0xB88E, 0xC299, 0xB890, 0x8A38, 0xB88E, 0xC29A, + 0xB890, 0xBE32, 0xB88E, 0xC29B, 0xB890, 0xBE3C, 0xB88E, 0xC29C, + 0xB890, 0x7436, 0xB88E, 0xC29D, 0xB890, 0x7440, 0xB88E, 0xC29E, + 0xB890, 0xAD3B, 0xB88E, 0xC29F, 0xB890, 0xAD45, 0xB88E, 0xC2A0, + 0xB890, 0x6640, 0xB88E, 0xC2A1, 0xB890, 0x664A, 0xB88E, 0xC2A2, + 0xB890, 0xA646, 0xB88E, 0xC2A3, 0xB890, 0xA650, 0xB88E, 0xC2A4, + 0xB890, 0x624C, 0xB88E, 0xC2A5, 0xB890, 0x6256, 0xB88E, 0xC2A6, + 0xB890, 0xA453, 0xB88E, 0xC2A7, 0xB890, 0xA45D, 0xB88E, 0xC2A8, + 0xB890, 0x665A, 0xB88E, 0xC2A9, 0xB890, 0x6664, 0xB88E, 0xC2AA, + 0xB890, 0xAC62, 0xB88E, 0xC2AB, 0xB890, 0xAC6C, 0xB88E, 0xC2AC, + 0xB890, 0x746A, 0xB88E, 0xC2AD, 0xB890, 0x7474, 0xB88E, 0xC2AE, + 0xB890, 0xBCFA, 0xB88E, 0xC2AF, 0xB890, 0xBCFD, 0xB88E, 0xC2B0, + 0xB890, 0x79FF, 0xB88E, 0xC2B1, 0xB890, 0x7901, 0xB88E, 0xC2B2, + 0xB890, 0xF703, 0xB88E, 0xC2B3, 0xB890, 0xF706, 0xB88E, 0xC2B4, + 0xB890, 0x7408, 0xB88E, 0xC2B5, 0xB890, 0x740A, 0xB88E, 0xC2B6, + 0xB890, 0xF10C, 0xB88E, 0xC2B7, 0xB890, 0xF10F, 0xB88E, 0xC2B8, + 0xB890, 0x6F10, 0xB88E, 0xC2B9, 0xB890, 0x6F13, 0xB88E, 0xC2BA, + 0xB890, 0xEC15, 0xB88E, 0xC2BB, 0xB890, 0xEC18, 0xB88E, 0xC2BC, + 0xB890, 0x6A1A, 0xB88E, 0xC2BD, 0xB890, 0x6A1C, 0xB88E, 0xC2BE, + 0xB890, 0xE71E, 0xB88E, 0xC2BF, 0xB890, 0xE721, 0xB88E, 0xC2C0, + 0xB890, 0x6424, 0xB88E, 0xC2C1, 0xB890, 0x6425, 0xB88E, 0xC2C2, + 0xB890, 0xE228, 0xB88E, 0xC2C3, 0xB890, 0xE22A, 0xB88E, 0xC2C4, + 0xB890, 0x5F2B, 0xB88E, 0xC2C5, 0xB890, 0x5F2E, 0xB88E, 0xC2C6, + 0xB890, 0xDC31, 0xB88E, 0xC2C7, 0xB890, 0xDC33, 0xB88E, 0xC2C8, + 0xB890, 0x2035, 0xB88E, 0xC2C9, 0xB890, 0x2036, 0xB88E, 0xC2CA, + 0xB890, 0x9F3A, 0xB88E, 0xC2CB, 0xB890, 0x9F3A, 0xB88E, 0xC2CC, + 0xB890, 0x4430, 0xFFFF, 0xFFFF +}; +static const u_int16_t phy_mcu_ram_code_8125d_1_3[] = { + 0xa436, 0xacca, 0xa438, 0x0104, 0xa436, 0xaccc, 0xa438, 0x8000, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x0fff, + 0xa436, 0xacce, 0xa438, 0xfff8, 0xa436, 0xacd0, 0xa438, 0x0fff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xfb47, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xfb4f, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0x6087, 0xa436, 0xacd0, 0xa438, 0x0180, + 0xa436, 0xacce, 0xa438, 0x600f, 0xa436, 0xacd0, 0xa438, 0x0108, + 0xa436, 0xacce, 0xa438, 0x6807, 0xa436, 0xacd0, 0xa438, 0x0100, + 0xa436, 0xacce, 0xa438, 0x688f, 0xa436, 0xacd0, 0xa438, 0x0188, + 0xa436, 0xacce, 0xa438, 0x7027, 0xa436, 0xacd0, 0xa438, 0x0120, + 0xa436, 0xacce, 0xa438, 0x702f, 0xa436, 0xacd0, 0xa438, 0x0128, + 0xa436, 0xacce, 0xa438, 0x7847, 0xa436, 0xacd0, 0xa438, 0x0140, + 0xa436, 0xacce, 0xa438, 0x784f, 0xa436, 0xacd0, 0xa438, 0x0148, + 0xa436, 0xacce, 0xa438, 0x80a7, 0xa436, 0xacd0, 0xa438, 0x01a0, + 0xa436, 0xacce, 0xa438, 0x88af, 0xa436, 0xacd0, 0xa438, 0x01a8, + 0xa436, 0xacce, 0xa438, 0x8067, 0xa436, 0xacd0, 0xa438, 0x0161, + 0xa436, 0xacce, 0xa438, 0x886f, 0xa436, 0xacd0, 0xa438, 0x0169, + 0xa436, 0xacce, 0xa438, 0xfb57, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0xfb5f, 0xa436, 0xacd0, 0xa438, 0x07ff, + 0xa436, 0xacce, 0xa438, 0x6017, 0xa436, 0xacd0, 0xa438, 0x0110, + 0xa436, 0xacce, 0xa438, 0x601f, 0xa436, 0xacd0, 0xa438, 0x0118, + 0xa436, 0xacce, 0xa438, 0x6837, 0xa436, 0xacd0, 0xa438, 0x0130, + 0xa436, 0xacce, 0xa438, 0x683f, 0xa436, 0xacd0, 0xa438, 0x0138, + 0xa436, 0xacce, 0xa438, 0x7097, 0xa436, 0xacd0, 0xa438, 0x0190, + 0xa436, 0xacce, 0xa438, 0x705f, 0xa436, 0xacd0, 0xa438, 0x0158, + 0xa436, 0xacce, 0xa438, 0x7857, 0xa436, 0xacd0, 0xa438, 0x0150, + 0xa436, 0xacce, 0xa438, 0x789f, 0xa436, 0xacd0, 0xa438, 0x0198, + 0xa436, 0xacce, 0xa438, 0x90b7, 0xa436, 0xacd0, 0xa438, 0x01b0, + 0xa436, 0xacce, 0xa438, 0x98bf, 0xa436, 0xacd0, 0xa438, 0x01b8, + 0xa436, 0xacce, 0xa438, 0x9077, 0xa436, 0xacd0, 0xa438, 0x1171, + 0xa436, 0xacce, 0xa438, 0x987f, 0xa436, 0xacd0, 0xa438, 0x1179, + 0xa436, 0xacca, 0xa438, 0x0004, 0xa436, 0xacc6, 0xa438, 0x0015, + 0xa436, 0xacc8, 0xa438, 0xc000, 0xa436, 0xacc8, 0xa438, 0x0000, 0xFFFF, 0xFFFF }; +static const u_int16_t phy_mcu_ram_code_8125bp_1_1[] = { + 0xa436, 0x8024, 0xa438, 0x3600, 0xa436, 0xB82E, 0xa438, 0x0001, + 0xb820, 0x0090, 0xa436, 0xA016, 0xa438, 0x0000, 0xa436, 0xA012, + 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, + 0xa438, 0x1800, 0xa438, 0x8014, 0xa438, 0x1800, 0xa438, 0x8018, + 0xa438, 0x1800, 0xa438, 0x801c, 0xa438, 0x1800, 0xa438, 0x8020, + 0xa438, 0x1800, 0xa438, 0x8024, 0xa438, 0x1800, 0xa438, 0x8028, + 0xa438, 0x1800, 0xa438, 0x8028, 0xa438, 0xdb20, 0xa438, 0xd501, + 0xa438, 0x1800, 0xa438, 0x034c, 0xa438, 0xdb10, 0xa438, 0xd501, + 0xa438, 0x1800, 0xa438, 0x032c, 0xa438, 0x8620, 0xa438, 0xa480, + 0xa438, 0x1800, 0xa438, 0x1cfe, 0xa438, 0xbf40, 0xa438, 0xd703, + 0xa438, 0x1800, 0xa438, 0x0ce9, 0xa438, 0x9c10, 0xa438, 0x9f40, + 0xa438, 0x1800, 0xa438, 0x137a, 0xa438, 0x9f20, 0xa438, 0x9f40, + 0xa438, 0x1800, 0xa438, 0x16c4, 0xa436, 0xA026, 0xa438, 0xffff, + 0xa436, 0xA024, 0xa438, 0xffff, 0xa436, 0xA022, 0xa438, 0x16c3, + 0xa436, 0xA020, 0xa438, 0x1379, 0xa436, 0xA006, 0xa438, 0x0ce8, + 0xa436, 0xA004, 0xa438, 0x1cfd, 0xa436, 0xA002, 0xa438, 0x032b, + 0xa436, 0xA000, 0xa438, 0x034b, 0xa436, 0xA008, 0xa438, 0x3f00, + 0xa436, 0xA016, 0xa438, 0x0020, 0xa436, 0xA012, 0xa438, 0x0000, + 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, 0xa438, 0x1800, + 0xa438, 0x8018, 0xa438, 0x1800, 0xa438, 0x8021, 0xa438, 0x1800, + 0xa438, 0x802b, 0xa438, 0x1800, 0xa438, 0x8055, 0xa438, 0x1800, + 0xa438, 0x805a, 0xa438, 0x1800, 0xa438, 0x805e, 0xa438, 0x1800, + 0xa438, 0x8062, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0xcb11, + 0xa438, 0xd1b9, 0xa438, 0xd05b, 0xa438, 0x0000, 0xa438, 0x1800, + 0xa438, 0x0284, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0xd700, + 0xa438, 0x5fb4, 0xa438, 0x5f95, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x1800, 0xa438, 0x02b7, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0xcb21, 0xa438, 0x1000, 0xa438, 0x0b34, 0xa438, 0xd71f, + 0xa438, 0x5f5e, 0xa438, 0x0000, 0xa438, 0x1800, 0xa438, 0x0322, + 0xa438, 0xd700, 0xa438, 0xd113, 0xa438, 0xd040, 0xa438, 0x1000, + 0xa438, 0x0a57, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xd700, + 0xa438, 0x6065, 0xa438, 0xd122, 0xa438, 0xf002, 0xa438, 0xd122, + 0xa438, 0xd040, 0xa438, 0x1000, 0xa438, 0x0b53, 0xa438, 0xa008, + 0xa438, 0xd704, 0xa438, 0x4052, 0xa438, 0xa002, 0xa438, 0xd704, + 0xa438, 0x4054, 0xa438, 0xa740, 0xa438, 0x1000, 0xa438, 0x0a57, + 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xcb9b, 0xa438, 0xd110, + 0xa438, 0xd040, 0xa438, 0x1000, 0xa438, 0x0c01, 0xa438, 0x1000, + 0xa438, 0x0a57, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0x801a, + 0xa438, 0x1000, 0xa438, 0x0a57, 0xa438, 0xd704, 0xa438, 0x7fb9, + 0xa438, 0x1800, 0xa438, 0x088d, 0xa438, 0xcb62, 0xa438, 0xd700, + 0xa438, 0x8880, 0xa438, 0x1800, 0xa438, 0x06cb, 0xa438, 0xbe02, + 0xa438, 0x0000, 0xa438, 0x1800, 0xa438, 0x002c, 0xa438, 0xbe04, + 0xa438, 0x0000, 0xa438, 0x1800, 0xa438, 0x002c, 0xa438, 0xbe08, + 0xa438, 0x0000, 0xa438, 0x1800, 0xa438, 0x002c, 0xa436, 0xA10E, + 0xa438, 0x802a, 0xa436, 0xA10C, 0xa438, 0x8026, 0xa436, 0xA10A, + 0xa438, 0x8022, 0xa436, 0xA108, 0xa438, 0x06ca, 0xa436, 0xA106, + 0xa438, 0x086f, 0xa436, 0xA104, 0xa438, 0x0321, 0xa436, 0xA102, + 0xa438, 0x02b5, 0xa436, 0xA100, 0xa438, 0x0283, 0xa436, 0xA110, + 0xa438, 0x001f, 0xb820, 0x0010, 0xb82e, 0x0000, 0xa436, 0x8024, + 0xa438, 0x0000, 0xB820, 0x0000, 0xFFFF, 0xFFFF +}; + +static const u_int16_t phy_mcu_ram_code_8125bp_1_2[] = { + 0xb892, 0x0000, 0xb88e, 0xC201, 0xb890, 0x2C01, 0xb890, 0xCD02, + 0xb890, 0x0602, 0xb890, 0x5502, 0xb890, 0xB903, 0xb890, 0x3303, + 0xb890, 0xC204, 0xb890, 0x6605, 0xb890, 0x1F05, 0xb890, 0xEE06, + 0xb890, 0xD207, 0xb890, 0xCC08, 0xb890, 0xDA09, 0xb890, 0xFF0B, + 0xb890, 0x380C, 0xb890, 0x87F3, 0xb88e, 0xC27F, 0xb890, 0x2B66, + 0xb890, 0x6666, 0xb890, 0x6666, 0xb890, 0x6666, 0xb890, 0x6666, + 0xb890, 0x6666, 0xb890, 0x6666, 0xb890, 0x6666, 0xb890, 0x66C2, + 0xb88e, 0xC26F, 0xb890, 0x751D, 0xb890, 0x1D1F, 0xb890, 0x2022, + 0xb890, 0x2325, 0xb890, 0x2627, 0xb890, 0x2829, 0xb890, 0x2929, + 0xb890, 0x2A2A, 0xb890, 0x2B66, 0xB820, 0x0000, 0xFFFF, 0xFFFF +}; + static const u_int16_t phy_mcu_ram_code_8126a_1_1[] = { 0xa436, 0x8023, 0xa438, 0x4900, 0xa436, 0xB82E, 0xa438, 0x0001, 0xBFBA, 0xE000, 0xBF1A, 0xC1B9, 0xBFA8, 0x10F0, 0xBFB0, 0x0210, @@ -24477,6685 +30054,7801 @@ static const u_int16_t phy_mcu_ram_code_8126a_2_3[] = { 0xFFFF, 0xFFFF }; +static const u_int16_t phy_mcu_ram_code_8126a_3_1[] = { + 0xa436, 0x8023, 0xa438, 0x4701, 0xa436, 0xB82E, 0xa438, 0x0001, + 0xb820, 0x0090, 0xa436, 0xA016, 0xa438, 0x0000, 0xa436, 0xA012, + 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, + 0xa438, 0x1800, 0xa438, 0x801a, 0xa438, 0x1800, 0xa438, 0x802a, + 0xa438, 0x1800, 0xa438, 0x8032, 0xa438, 0x1800, 0xa438, 0x803a, + 0xa438, 0x1800, 0xa438, 0x803e, 0xa438, 0x1800, 0xa438, 0x8044, + 0xa438, 0x1800, 0xa438, 0x804b, 0xa438, 0xd504, 0xa438, 0xc9b5, + 0xa438, 0xd500, 0xa438, 0xd707, 0xa438, 0x4070, 0xa438, 0x1800, + 0xa438, 0x1082, 0xa438, 0xd504, 0xa438, 0x1800, 0xa438, 0x107a, + 0xa438, 0x61d0, 0xa438, 0xd701, 0xa438, 0x60a5, 0xa438, 0xd504, + 0xa438, 0xc9b2, 0xa438, 0xd500, 0xa438, 0xf004, 0xa438, 0xd504, + 0xa438, 0xc9b1, 0xa438, 0xd500, 0xa438, 0xd707, 0xa438, 0x6070, + 0xa438, 0x1800, 0xa438, 0x10b0, 0xa438, 0x1800, 0xa438, 0x10c5, + 0xa438, 0xd707, 0xa438, 0x2005, 0xa438, 0x8030, 0xa438, 0xd75e, + 0xa438, 0x1800, 0xa438, 0x138c, 0xa438, 0x1800, 0xa438, 0x13ff, + 0xa438, 0xc504, 0xa438, 0xce20, 0xa438, 0xcf01, 0xa438, 0xd70a, + 0xa438, 0x4005, 0xa438, 0xcf02, 0xa438, 0x1800, 0xa438, 0x1b99, + 0xa438, 0xa980, 0xa438, 0xd500, 0xa438, 0x1800, 0xa438, 0x144d, + 0xa438, 0x907f, 0xa438, 0x91a3, 0xa438, 0x9306, 0xa438, 0xb118, + 0xa438, 0x1800, 0xa438, 0x2147, 0xa438, 0x907f, 0xa438, 0x9209, + 0xa438, 0x91a3, 0xa438, 0x9306, 0xa438, 0xb118, 0xa438, 0x1800, + 0xa438, 0x203c, 0xa436, 0xA026, 0xa438, 0xffff, 0xa436, 0xA024, + 0xa438, 0x2033, 0xa436, 0xA022, 0xa438, 0x213f, 0xa436, 0xA020, + 0xa438, 0x144c, 0xa436, 0xA006, 0xa438, 0x1b98, 0xa436, 0xA004, + 0xa438, 0x138b, 0xa436, 0xA002, 0xa438, 0x10c4, 0xa436, 0xA000, + 0xa438, 0x1079, 0xa436, 0xA008, 0xa438, 0x7f00, 0xa436, 0xA016, + 0xa438, 0x0000, 0xa436, 0xA012, 0xa438, 0x0ff8, 0xa436, 0xA014, + 0xa438, 0xd04d, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa436, 0xA152, 0xa438, 0x12dc, 0xa436, 0xA154, 0xa438, 0x3fff, + 0xa436, 0xA156, 0xa438, 0x3fff, 0xa436, 0xA158, 0xa438, 0x3fff, + 0xa436, 0xA15A, 0xa438, 0x3fff, 0xa436, 0xA15C, 0xa438, 0x3fff, + 0xa436, 0xA15E, 0xa438, 0x3fff, 0xa436, 0xA160, 0xa438, 0x3fff, + 0xa436, 0xA150, 0xa438, 0x0001, 0xa436, 0xA016, 0xa438, 0x0020, + 0xa436, 0xA012, 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800, + 0xa438, 0x8010, 0xa438, 0x1800, 0xa438, 0x801a, 0xa438, 0x1800, + 0xa438, 0x8022, 0xa438, 0x1800, 0xa438, 0x8112, 0xa438, 0x1800, + 0xa438, 0x8206, 0xa438, 0x1800, 0xa438, 0x8433, 0xa438, 0x1800, + 0xa438, 0x84ed, 0xa438, 0x1800, 0xa438, 0x8583, 0xa438, 0xd706, + 0xa438, 0x60a9, 0xa438, 0xd700, 0xa438, 0x60a1, 0xa438, 0x1800, + 0xa438, 0x0962, 0xa438, 0x1800, 0xa438, 0x0962, 0xa438, 0x1800, + 0xa438, 0x0982, 0xa438, 0x800a, 0xa438, 0x0c1f, 0xa438, 0x0d00, + 0xa438, 0x8dc0, 0xa438, 0x1000, 0xa438, 0x12b5, 0xa438, 0x1800, + 0xa438, 0x0f99, 0xa438, 0xd70d, 0xa438, 0x40fd, 0xa438, 0xd702, + 0xa438, 0x40a0, 0xa438, 0xd70c, 0xa438, 0x4066, 0xa438, 0x8710, + 0xa438, 0xf002, 0xa438, 0xa710, 0xa438, 0x9580, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0xa304, 0xa438, 0x9503, 0xa438, 0x0c1f, + 0xa438, 0x0d07, 0xa438, 0x8dc0, 0xa438, 0x1000, 0xa438, 0x12b5, + 0xa438, 0xcb81, 0xa438, 0xd70c, 0xa438, 0x4882, 0xa438, 0xd706, + 0xa438, 0x407a, 0xa438, 0xd70c, 0xa438, 0x4807, 0xa438, 0xd706, + 0xa438, 0x405a, 0xa438, 0x8910, 0xa438, 0xa210, 0xa438, 0xd704, + 0xa438, 0x611c, 0xa438, 0x0cc0, 0xa438, 0x0080, 0xa438, 0x0c03, + 0xa438, 0x0101, 0xa438, 0x0ce0, 0xa438, 0x03a0, 0xa438, 0xccb5, + 0xa438, 0x0cc0, 0xa438, 0x0080, 0xa438, 0x0c03, 0xa438, 0x0102, + 0xa438, 0x0ce0, 0xa438, 0x0340, 0xa438, 0xcc52, 0xa438, 0xd706, + 0xa438, 0x42ba, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c1f, + 0xa438, 0x0f1c, 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd70c, 0xa438, 0x5fb3, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x8f1f, 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd70c, 0xa438, 0x7f33, 0xa438, 0x8190, 0xa438, 0x8204, + 0xa438, 0xf016, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c1f, + 0xa438, 0x0f1b, 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd70c, 0xa438, 0x5fb3, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x8f1f, 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd70c, 0xa438, 0x7f33, 0xa438, 0xd70c, 0xa438, 0x6047, + 0xa438, 0xf002, 0xa438, 0xf00c, 0xa438, 0xd403, 0xa438, 0xcb82, + 0xa438, 0x1000, 0xa438, 0x1203, 0xa438, 0xd40a, 0xa438, 0x1000, + 0xa438, 0x1203, 0xa438, 0xd70c, 0xa438, 0x4247, 0xa438, 0x1000, + 0xa438, 0x131d, 0xa438, 0x8a40, 0xa438, 0x1000, 0xa438, 0x120e, + 0xa438, 0xa104, 0xa438, 0x1000, 0xa438, 0x1220, 0xa438, 0x8104, + 0xa438, 0x1000, 0xa438, 0x1217, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa704, 0xa438, 0x9503, 0xa438, 0xcb88, 0xa438, 0xf012, + 0xa438, 0xa210, 0xa438, 0xa00a, 0xa438, 0xaa40, 0xa438, 0x1000, + 0xa438, 0x120e, 0xa438, 0xa104, 0xa438, 0x1000, 0xa438, 0x1220, + 0xa438, 0x8104, 0xa438, 0x1000, 0xa438, 0x1217, 0xa438, 0xa190, + 0xa438, 0xa284, 0xa438, 0xa404, 0xa438, 0x8a10, 0xa438, 0x8a80, + 0xa438, 0xcb84, 0xa438, 0xd13e, 0xa438, 0xd05a, 0xa438, 0xd13e, + 0xa438, 0xd06b, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd700, + 0xa438, 0x3559, 0xa438, 0x80b0, 0xa438, 0xfffb, 0xa438, 0xd700, + 0xa438, 0x604b, 0xa438, 0xcb8a, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd700, 0xa438, 0x3659, 0xa438, 0x80b9, 0xa438, 0xfffb, + 0xa438, 0xd700, 0xa438, 0x606b, 0xa438, 0xcb8b, 0xa438, 0x5eeb, + 0xa438, 0xd700, 0xa438, 0x6041, 0xa438, 0xa402, 0xa438, 0xcb8c, + 0xa438, 0xd706, 0xa438, 0x609a, 0xa438, 0xd1b7, 0xa438, 0xd049, + 0xa438, 0xf003, 0xa438, 0xd160, 0xa438, 0xd04b, 0xa438, 0x1000, + 0xa438, 0x126b, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xcb8d, + 0xa438, 0x8710, 0xa438, 0xd71f, 0xa438, 0x5fd4, 0xa438, 0xb920, + 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd71f, 0xa438, 0x7fb4, + 0xa438, 0x9920, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd71f, + 0xa438, 0x6105, 0xa438, 0x6054, 0xa438, 0xfffb, 0xa438, 0x1000, + 0xa438, 0x126b, 0xa438, 0xd700, 0xa438, 0x5fab, 0xa438, 0xfff0, + 0xa438, 0xa710, 0xa438, 0xb820, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd71f, 0xa438, 0x7fa5, 0xa438, 0x9820, 0xa438, 0xd114, + 0xa438, 0xd040, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd700, + 0xa438, 0x5fba, 0xa438, 0xd704, 0xa438, 0x5f76, 0xa438, 0xd700, + 0xa438, 0x5f34, 0xa438, 0xd700, 0xa438, 0x6081, 0xa438, 0xd706, + 0xa438, 0x405a, 0xa438, 0xa480, 0xa438, 0xcb86, 0xa438, 0xd706, + 0xa438, 0x609a, 0xa438, 0xd1c8, 0xa438, 0xd045, 0xa438, 0xf003, + 0xa438, 0xd17a, 0xa438, 0xd04b, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0x0cc0, 0xa438, 0x0000, + 0xa438, 0x0c03, 0xa438, 0x0101, 0xa438, 0x0ce0, 0xa438, 0x0320, + 0xa438, 0xcc29, 0xa438, 0xa208, 0xa438, 0x8204, 0xa438, 0xd114, + 0xa438, 0xd040, 0xa438, 0xd700, 0xa438, 0x5ff4, 0xa438, 0x1800, + 0xa438, 0x0c3e, 0xa438, 0xd706, 0xa438, 0x609d, 0xa438, 0xd417, + 0xa438, 0x1000, 0xa438, 0x1203, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0x1000, 0xa438, 0x1289, 0xa438, 0xd700, 0xa438, 0x5f7a, + 0xa438, 0xd704, 0xa438, 0x5f36, 0xa438, 0xd706, 0xa438, 0x6089, + 0xa438, 0xd40c, 0xa438, 0x1000, 0xa438, 0x1203, 0xa438, 0xaa40, + 0xa438, 0xbb10, 0xa438, 0xcb50, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa310, 0xa438, 0x9503, 0xa438, 0xcb5f, 0xa438, 0x1000, + 0xa438, 0x126b, 0xa438, 0x1000, 0xa438, 0x1289, 0xa438, 0xd71f, + 0xa438, 0x5f75, 0xa438, 0x8190, 0xa438, 0x82a0, 0xa438, 0x8402, + 0xa438, 0xa404, 0xa438, 0x800a, 0xa438, 0x8718, 0xa438, 0x9b10, + 0xa438, 0x9b20, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd71f, + 0xa438, 0x7fb5, 0xa438, 0xcb51, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd71f, 0xa438, 0x5f94, 0xa438, 0xd706, 0xa438, 0x6089, + 0xa438, 0xd141, 0xa438, 0xd043, 0xa438, 0xf003, 0xa438, 0xd141, + 0xa438, 0xd044, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd700, + 0xa438, 0x5fb4, 0xa438, 0xd700, 0xa438, 0x60e5, 0xa438, 0xd704, + 0xa438, 0x60be, 0xa438, 0xd706, 0xa438, 0x29b1, 0xa438, 0x8156, + 0xa438, 0xf002, 0xa438, 0xa880, 0xa438, 0xa00a, 0xa438, 0xa190, + 0xa438, 0x8220, 0xa438, 0xa280, 0xa438, 0xa404, 0xa438, 0xa620, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xc5aa, 0xa438, 0x9503, + 0xa438, 0xd700, 0xa438, 0x6061, 0xa438, 0xa402, 0xa438, 0xa480, + 0xa438, 0xcb52, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd700, + 0xa438, 0x5fba, 0xa438, 0xd704, 0xa438, 0x5f76, 0xa438, 0xb920, + 0xa438, 0xcb53, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd71f, + 0xa438, 0x7fb4, 0xa438, 0x9920, 0xa438, 0xa00a, 0xa438, 0xa190, + 0xa438, 0xa280, 0xa438, 0x8220, 0xa438, 0xa404, 0xa438, 0xb580, + 0xa438, 0xd700, 0xa438, 0x40a1, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa602, 0xa438, 0x9503, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa310, 0xa438, 0x9503, 0xa438, 0xcb60, 0xa438, 0xd1c8, + 0xa438, 0xd045, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd700, + 0xa438, 0x5fb4, 0xa438, 0xaa10, 0xa438, 0xd70c, 0xa438, 0x2833, + 0xa438, 0x818f, 0xa438, 0xf003, 0xa438, 0x1000, 0xa438, 0x1330, + 0xa438, 0xd70c, 0xa438, 0x40a6, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa140, 0xa438, 0x9503, 0xa438, 0xd70c, 0xa438, 0x40a3, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xac20, 0xa438, 0x9503, + 0xa438, 0xa90c, 0xa438, 0xaa80, 0xa438, 0x0c1f, 0xa438, 0x0d07, + 0xa438, 0x8dc0, 0xa438, 0x1000, 0xa438, 0x12b5, 0xa438, 0xa00a, + 0xa438, 0xa190, 0xa438, 0xa280, 0xa438, 0x8220, 0xa438, 0xa404, + 0xa438, 0xb580, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xc500, + 0xa438, 0x9503, 0xa438, 0x83e0, 0xa438, 0x8e01, 0xa438, 0xd700, + 0xa438, 0x40a1, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa602, + 0xa438, 0x9503, 0xa438, 0xd14a, 0xa438, 0xd058, 0xa438, 0x1000, + 0xa438, 0x12d7, 0xa438, 0xd70c, 0xa438, 0x4063, 0xa438, 0x1000, + 0xa438, 0x12ea, 0xa438, 0xcb6f, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd704, 0xa438, 0x2e70, 0xa438, 0x81fd, 0xa438, 0xd71f, + 0xa438, 0x676e, 0xa438, 0xd704, 0xa438, 0x3868, 0xa438, 0x81d8, + 0xa438, 0xd706, 0xa438, 0x61c2, 0xa438, 0xd70c, 0xa438, 0x2f18, + 0xa438, 0x81de, 0xa438, 0xd700, 0xa438, 0x5d35, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0xc5aa, 0xa438, 0x9503, 0xa438, 0x0ce0, + 0xa438, 0x0320, 0xa438, 0x1800, 0xa438, 0x81e4, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0xc5aa, 0xa438, 0x9503, 0xa438, 0x1800, + 0xa438, 0x8202, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xc5aa, + 0xa438, 0x9503, 0xa438, 0x1800, 0xa438, 0x8204, 0xa438, 0x1000, + 0xa438, 0x12d7, 0xa438, 0xae02, 0xa438, 0xd70c, 0xa438, 0x4063, + 0xa438, 0x1000, 0xa438, 0x12ea, 0xa438, 0xcb61, 0xa438, 0x1000, + 0xa438, 0x126b, 0xa438, 0xd704, 0xa438, 0x2e70, 0xa438, 0x81fd, + 0xa438, 0xd704, 0xa438, 0x3868, 0xa438, 0x8202, 0xa438, 0xd706, + 0xa438, 0x61a2, 0xa438, 0xd71f, 0xa438, 0x612e, 0xa438, 0xd70c, + 0xa438, 0x2f18, 0xa438, 0x8204, 0xa438, 0x1800, 0xa438, 0x81e4, + 0xa438, 0x8e02, 0xa438, 0x1800, 0xa438, 0x0f99, 0xa438, 0x1800, + 0xa438, 0x0e31, 0xa438, 0x1800, 0xa438, 0x8480, 0xa438, 0x1800, + 0xa438, 0x0e07, 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0xd70c, + 0xa438, 0x5fa4, 0xa438, 0xa706, 0xa438, 0xd70c, 0xa438, 0x404b, + 0xa438, 0xa880, 0xa438, 0x8801, 0xa438, 0x8e01, 0xa438, 0xca50, + 0xa438, 0x1000, 0xa438, 0x82a9, 0xa438, 0xca51, 0xa438, 0xd70e, + 0xa438, 0x2210, 0xa438, 0x82a7, 0xa438, 0xd70c, 0xa438, 0x4084, + 0xa438, 0xd705, 0xa438, 0x5efd, 0xa438, 0xf007, 0xa438, 0x1000, + 0xa438, 0x17c2, 0xa438, 0xd70c, 0xa438, 0x5ce2, 0xa438, 0x1800, + 0xa438, 0x1692, 0xa438, 0xd70c, 0xa438, 0x605a, 0xa438, 0x9a10, + 0xa438, 0x8e40, 0xa438, 0x8404, 0xa438, 0x1000, 0xa438, 0x1827, + 0xa438, 0x8e80, 0xa438, 0xca62, 0xa438, 0xd705, 0xa438, 0x3084, + 0xa438, 0x8289, 0xa438, 0xba10, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x1000, 0xa438, 0x8382, 0xa438, 0x0c03, 0xa438, 0x0100, + 0xa438, 0xd702, 0xa438, 0x4638, 0xa438, 0xd1c4, 0xa438, 0xd044, + 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0x1000, 0xa438, 0x17e8, + 0xa438, 0xd70c, 0xa438, 0x5f7c, 0xa438, 0x8108, 0xa438, 0x0c1f, + 0xa438, 0x0907, 0xa438, 0x8940, 0xa438, 0x1000, 0xa438, 0x17db, + 0xa438, 0xa0c4, 0xa438, 0x8610, 0xa438, 0x8030, 0xa438, 0x8706, + 0xa438, 0x0c07, 0xa438, 0x0b06, 0xa438, 0x8410, 0xa438, 0xa980, + 0xa438, 0xa702, 0xa438, 0xd1c4, 0xa438, 0xd045, 0xa438, 0x1000, + 0xa438, 0x17be, 0xa438, 0x1000, 0xa438, 0x17e8, 0xa438, 0xd70c, + 0xa438, 0x5f7c, 0xa438, 0x0c07, 0xa438, 0x0b06, 0xa438, 0xa030, + 0xa438, 0xa610, 0xa438, 0xd700, 0xa438, 0x6041, 0xa438, 0xa501, + 0xa438, 0xa108, 0xa438, 0xd1c4, 0xa438, 0xd045, 0xa438, 0xca63, + 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0x1000, 0xa438, 0x17e8, + 0xa438, 0xd70c, 0xa438, 0x5f7c, 0xa438, 0xd702, 0xa438, 0x6078, + 0xa438, 0x9920, 0xa438, 0xf003, 0xa438, 0xb920, 0xa438, 0xa880, + 0xa438, 0x9a10, 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0x1000, + 0xa438, 0x17e8, 0xa438, 0xd71f, 0xa438, 0x5f73, 0xa438, 0xf011, + 0xa438, 0xd70c, 0xa438, 0x409b, 0xa438, 0x9920, 0xa438, 0x9a10, + 0xa438, 0xfff5, 0xa438, 0x80fe, 0xa438, 0x8610, 0xa438, 0x8501, + 0xa438, 0x8980, 0xa438, 0x8702, 0xa438, 0xa410, 0xa438, 0xa940, + 0xa438, 0x81c0, 0xa438, 0xae80, 0xa438, 0x1800, 0xa438, 0x822e, + 0xa438, 0x8804, 0xa438, 0xa704, 0xa438, 0x8788, 0xa438, 0xff82, + 0xa438, 0xbb08, 0xa438, 0x0c1f, 0xa438, 0x0907, 0xa438, 0x8940, + 0xa438, 0x1000, 0xa438, 0x17db, 0xa438, 0x8701, 0xa438, 0x8502, + 0xa438, 0xa0f4, 0xa438, 0xa610, 0xa438, 0xd700, 0xa438, 0x6061, + 0xa438, 0xa002, 0xa438, 0xa501, 0xa438, 0x8706, 0xa438, 0x8410, + 0xa438, 0xa980, 0xa438, 0xca64, 0xa438, 0xd110, 0xa438, 0xd040, + 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0x1000, 0xa438, 0x17e8, + 0xa438, 0xd70c, 0xa438, 0x5f7c, 0xa438, 0x8804, 0xa438, 0xa706, + 0xa438, 0x1800, 0xa438, 0x820a, 0xa438, 0x1800, 0xa438, 0x147c, + 0xa438, 0xd705, 0xa438, 0x405f, 0xa438, 0xf037, 0xa438, 0xd701, + 0xa438, 0x4259, 0xa438, 0xd705, 0xa438, 0x6234, 0xa438, 0xd70c, + 0xa438, 0x41c6, 0xa438, 0xd70d, 0xa438, 0x419d, 0xa438, 0xd70d, + 0xa438, 0x417e, 0xa438, 0xd704, 0xa438, 0x6127, 0xa438, 0x2951, + 0xa438, 0x82c0, 0xa438, 0xd70c, 0xa438, 0x4083, 0xa438, 0xd70c, + 0xa438, 0x2e81, 0xa438, 0x82c0, 0xa438, 0xf0c2, 0xa438, 0x80fe, + 0xa438, 0x8610, 0xa438, 0x8501, 0xa438, 0x8704, 0xa438, 0x0c30, + 0xa438, 0x0410, 0xa438, 0xac02, 0xa438, 0xa502, 0xa438, 0x8980, + 0xa438, 0xca60, 0xa438, 0xa004, 0xa438, 0xd70c, 0xa438, 0x6065, + 0xa438, 0x1800, 0xa438, 0x82d0, 0xa438, 0x8004, 0xa438, 0xa804, + 0xa438, 0x0c0f, 0xa438, 0x0602, 0xa438, 0x0c70, 0xa438, 0x0730, + 0xa438, 0xa708, 0xa438, 0xd704, 0xa438, 0x609c, 0xa438, 0x0c1f, + 0xa438, 0x0912, 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x090e, + 0xa438, 0xa940, 0xa438, 0x1000, 0xa438, 0x17db, 0xa438, 0xa780, + 0xa438, 0xf0a0, 0xa438, 0xd704, 0xa438, 0x63ab, 0xa438, 0xd705, + 0xa438, 0x4371, 0xa438, 0xd702, 0xa438, 0x339c, 0xa438, 0x8381, + 0xa438, 0x8788, 0xa438, 0x8704, 0xa438, 0x0c1f, 0xa438, 0x0907, + 0xa438, 0x8940, 0xa438, 0x1000, 0xa438, 0x17db, 0xa438, 0x8410, + 0xa438, 0xa0f4, 0xa438, 0xa610, 0xa438, 0xd700, 0xa438, 0x6061, + 0xa438, 0xa002, 0xa438, 0xa501, 0xa438, 0xa706, 0xa438, 0x8804, + 0xa438, 0xa980, 0xa438, 0xd70c, 0xa438, 0x6085, 0xa438, 0x8701, + 0xa438, 0x8502, 0xa438, 0x8c02, 0xa438, 0xf082, 0xa438, 0xd70c, + 0xa438, 0x60c5, 0xa438, 0xd702, 0xa438, 0x6053, 0xa438, 0xf07d, + 0xa438, 0x1800, 0xa438, 0x837e, 0xa438, 0xd70d, 0xa438, 0x4d1b, + 0xa438, 0xba10, 0xa438, 0xae40, 0xa438, 0x0cfc, 0xa438, 0x03b4, + 0xa438, 0x0cfc, 0xa438, 0x05b4, 0xa438, 0xd1c4, 0xa438, 0xd044, + 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0x1000, 0xa438, 0x17e8, + 0xa438, 0xd70c, 0xa438, 0x5f7c, 0xa438, 0x8706, 0xa438, 0x8280, + 0xa438, 0xace0, 0xa438, 0xa680, 0xa438, 0xa240, 0xa438, 0x1000, + 0xa438, 0x17be, 0xa438, 0x1000, 0xa438, 0x17e8, 0xa438, 0xd702, + 0xa438, 0x5f79, 0xa438, 0x8240, 0xa438, 0xd702, 0xa438, 0x6898, + 0xa438, 0xd702, 0xa438, 0x4957, 0xa438, 0x1800, 0xa438, 0x8370, + 0xa438, 0xa1c0, 0xa438, 0x0c3f, 0xa438, 0x0220, 0xa438, 0x0cfc, + 0xa438, 0x030c, 0xa438, 0x0cfc, 0xa438, 0x050c, 0xa438, 0x8108, + 0xa438, 0x8640, 0xa438, 0xa120, 0xa438, 0xa640, 0xa438, 0x0c03, + 0xa438, 0x0101, 0xa438, 0xa110, 0xa438, 0xd1c4, 0xa438, 0xd044, + 0xa438, 0xca84, 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0x1000, + 0xa438, 0x17e8, 0xa438, 0xd70c, 0xa438, 0x5f7c, 0xa438, 0xd702, + 0xa438, 0x60fc, 0xa438, 0x8210, 0xa438, 0x0ce0, 0xa438, 0x0320, + 0xa438, 0x0ce0, 0xa438, 0x0520, 0xa438, 0xf002, 0xa438, 0xa210, + 0xa438, 0xd1c4, 0xa438, 0xd043, 0xa438, 0x1000, 0xa438, 0x17be, + 0xa438, 0x1000, 0xa438, 0x17e8, 0xa438, 0xd70c, 0xa438, 0x5f7c, + 0xa438, 0x8233, 0xa438, 0x0cfc, 0xa438, 0x036c, 0xa438, 0x0cfc, + 0xa438, 0x056c, 0xa438, 0xd1c4, 0xa438, 0xd044, 0xa438, 0xca85, + 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0x1000, 0xa438, 0x17e8, + 0xa438, 0xd70c, 0xa438, 0x5f7c, 0xa438, 0xa680, 0xa438, 0xa240, + 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0x1000, 0xa438, 0x17e8, + 0xa438, 0xd702, 0xa438, 0x5f79, 0xa438, 0x8240, 0xa438, 0x0cfc, + 0xa438, 0x0390, 0xa438, 0x0cfc, 0xa438, 0x0590, 0xa438, 0xd702, + 0xa438, 0x6058, 0xa438, 0xf002, 0xa438, 0xfec8, 0xa438, 0x81c0, + 0xa438, 0x8880, 0xa438, 0x8706, 0xa438, 0xca61, 0xa438, 0xd1c4, + 0xa438, 0xd054, 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0x1000, + 0xa438, 0x17e8, 0xa438, 0xd70c, 0xa438, 0x5f7d, 0xa438, 0xa706, + 0xa438, 0xf004, 0xa438, 0x8788, 0xa438, 0xa404, 0xa438, 0x8702, + 0xa438, 0x0800, 0xa438, 0x8443, 0xa438, 0x8303, 0xa438, 0x8280, + 0xa438, 0x9920, 0xa438, 0x8ce0, 0xa438, 0x8004, 0xa438, 0xa1c0, + 0xa438, 0xd70e, 0xa438, 0x404a, 0xa438, 0xa280, 0xa438, 0xd702, + 0xa438, 0x3bd0, 0xa438, 0x8392, 0xa438, 0x0c3f, 0xa438, 0x0223, + 0xa438, 0xf003, 0xa438, 0x0c3f, 0xa438, 0x0220, 0xa438, 0x0cfc, + 0xa438, 0x0308, 0xa438, 0x0cfc, 0xa438, 0x0508, 0xa438, 0x8108, + 0xa438, 0x8640, 0xa438, 0xa120, 0xa438, 0xa640, 0xa438, 0xd702, + 0xa438, 0x6077, 0xa438, 0x8103, 0xa438, 0xf003, 0xa438, 0x0c03, + 0xa438, 0x0101, 0xa438, 0xa110, 0xa438, 0xd702, 0xa438, 0x6077, + 0xa438, 0xa108, 0xa438, 0xf006, 0xa438, 0xd704, 0xa438, 0x6077, + 0xa438, 0x8108, 0xa438, 0xf002, 0xa438, 0xa108, 0xa438, 0xd193, + 0xa438, 0xd045, 0xa438, 0xca82, 0xa438, 0x1000, 0xa438, 0x17be, + 0xa438, 0xd70e, 0xa438, 0x606a, 0xa438, 0x1000, 0xa438, 0x17e8, + 0xa438, 0xd70c, 0xa438, 0x5f3c, 0xa438, 0xd702, 0xa438, 0x60fc, + 0xa438, 0x8210, 0xa438, 0x0ce0, 0xa438, 0x0320, 0xa438, 0x0ce0, + 0xa438, 0x0520, 0xa438, 0xf002, 0xa438, 0xa210, 0xa438, 0xd1c4, + 0xa438, 0xd043, 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0xd70e, + 0xa438, 0x606a, 0xa438, 0x1000, 0xa438, 0x17e8, 0xa438, 0xd70c, + 0xa438, 0x5f3c, 0xa438, 0xd702, 0xa438, 0x3bd0, 0xa438, 0x83d0, + 0xa438, 0x0c3f, 0xa438, 0x020c, 0xa438, 0xf002, 0xa438, 0x823f, + 0xa438, 0x0cfc, 0xa438, 0x034c, 0xa438, 0x0cfc, 0xa438, 0x054c, + 0xa438, 0xd1c4, 0xa438, 0xd044, 0xa438, 0x1000, 0xa438, 0x17be, + 0xa438, 0xd70e, 0xa438, 0x606a, 0xa438, 0x1000, 0xa438, 0x17e8, + 0xa438, 0xd70c, 0xa438, 0x5f3c, 0xa438, 0x820c, 0xa438, 0xa360, + 0xa438, 0xa560, 0xa438, 0xd1c4, 0xa438, 0xd043, 0xa438, 0xca83, + 0xa438, 0x1000, 0xa438, 0x17be, 0xa438, 0xd70e, 0xa438, 0x606a, + 0xa438, 0x1000, 0xa438, 0x17e8, 0xa438, 0xd70c, 0xa438, 0x5f3c, + 0xa438, 0xd70e, 0xa438, 0x406a, 0xa438, 0x8680, 0xa438, 0xf002, + 0xa438, 0xa680, 0xa438, 0xa240, 0xa438, 0x0c0f, 0xa438, 0x0604, + 0xa438, 0x0c70, 0xa438, 0x0750, 0xa438, 0xa708, 0xa438, 0xd704, + 0xa438, 0x609c, 0xa438, 0x0c1f, 0xa438, 0x0914, 0xa438, 0xf003, + 0xa438, 0x0c1f, 0xa438, 0x0910, 0xa438, 0xa940, 0xa438, 0x1000, + 0xa438, 0x17db, 0xa438, 0xa780, 0xa438, 0x1000, 0xa438, 0x17be, + 0xa438, 0xd70e, 0xa438, 0x606a, 0xa438, 0x1000, 0xa438, 0x17e8, + 0xa438, 0xd702, 0xa438, 0x399c, 0xa438, 0x8403, 0xa438, 0x8240, + 0xa438, 0x8788, 0xa438, 0xd702, 0xa438, 0x63f8, 0xa438, 0xd705, + 0xa438, 0x643c, 0xa438, 0xa402, 0xa438, 0xf012, 0xa438, 0x8402, + 0xa438, 0xd705, 0xa438, 0x611b, 0xa438, 0xa401, 0xa438, 0xa302, + 0xa438, 0xd702, 0xa438, 0x417d, 0xa438, 0xa440, 0xa438, 0xa280, + 0xa438, 0xf008, 0xa438, 0x8401, 0xa438, 0x8302, 0xa438, 0xd70c, + 0xa438, 0x6060, 0xa438, 0xa301, 0xa438, 0xf002, 0xa438, 0x8301, + 0xa438, 0xd70c, 0xa438, 0x4080, 0xa438, 0xd70e, 0xa438, 0x604a, + 0xa438, 0xff5f, 0xa438, 0xd705, 0xa438, 0x3cdd, 0xa438, 0x8432, + 0xa438, 0xff5b, 0xa438, 0x0cfc, 0xa438, 0x0390, 0xa438, 0x0cfc, + 0xa438, 0x0590, 0xa438, 0x0800, 0xa438, 0xd704, 0xa438, 0x60f9, + 0xa438, 0xd704, 0xa438, 0x6958, 0xa438, 0xd706, 0xa438, 0x6902, + 0xa438, 0x1800, 0xa438, 0x1001, 0xa438, 0xa220, 0xa438, 0xa404, + 0xa438, 0xd704, 0xa438, 0x4054, 0xa438, 0xa740, 0xa438, 0xa504, + 0xa438, 0xd704, 0xa438, 0x40b5, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0xa003, 0xa438, 0x9503, 0xa438, 0x8190, 0xa438, 0xcb91, + 0xa438, 0x1000, 0xa438, 0x10af, 0xa438, 0xd704, 0xa438, 0x7fb9, + 0xa438, 0x8220, 0xa438, 0x8404, 0xa438, 0xa280, 0xa438, 0xa110, + 0xa438, 0xd706, 0xa438, 0x4041, 0xa438, 0xa180, 0xa438, 0x1000, + 0xa438, 0x130c, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x850f, + 0xa438, 0x9503, 0xa438, 0x0c1f, 0xa438, 0x0d08, 0xa438, 0x0cc0, + 0xa438, 0x0d80, 0xa438, 0x1000, 0xa438, 0x12b5, 0xa438, 0x1000, + 0xa438, 0x10af, 0xa438, 0xd704, 0xa438, 0x615f, 0xa438, 0xd70c, + 0xa438, 0x6103, 0xa438, 0x8504, 0xa438, 0xd704, 0xa438, 0x40b5, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8003, 0xa438, 0x9503, + 0xa438, 0xcb92, 0xa438, 0x1000, 0xa438, 0x10af, 0xa438, 0xd706, + 0xa438, 0x7fa3, 0xa438, 0x8280, 0xa438, 0x8190, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0x0c0f, 0xa438, 0x050a, 0xa438, 0x9503, + 0xa438, 0x0c1f, 0xa438, 0x0d00, 0xa438, 0x8dc0, 0xa438, 0x1000, + 0xa438, 0x12b5, 0xa438, 0x1800, 0xa438, 0x1001, 0xa438, 0x0c1f, + 0xa438, 0x0d00, 0xa438, 0x8dc0, 0xa438, 0x1000, 0xa438, 0x12b5, + 0xa438, 0x800a, 0xa438, 0xd705, 0xa438, 0x40b9, 0xa438, 0xd70c, + 0xa438, 0x6063, 0xa438, 0xa020, 0xa438, 0xf003, 0xa438, 0xd705, + 0xa438, 0x8020, 0xa438, 0xa504, 0xa438, 0xd704, 0xa438, 0x40b5, + 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa003, 0xa438, 0x9503, + 0xa438, 0xd704, 0xa438, 0x4054, 0xa438, 0xa740, 0xa438, 0x8190, + 0xa438, 0xcb93, 0xa438, 0xd700, 0xa438, 0x6063, 0xa438, 0xd704, + 0xa438, 0x609c, 0xa438, 0xd14b, 0xa438, 0xd040, 0xa438, 0xf003, + 0xa438, 0xd120, 0xa438, 0xd040, 0xa438, 0x1000, 0xa438, 0x10af, + 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xa008, 0xa438, 0xd706, + 0xa438, 0x4040, 0xa438, 0xa002, 0xa438, 0xd705, 0xa438, 0x4079, + 0xa438, 0x1000, 0xa438, 0x1313, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x85f0, 0xa438, 0x9503, 0xa438, 0xd705, 0xa438, 0x40d9, + 0xa438, 0xd70c, 0xa438, 0x6083, 0xa438, 0x0c1f, 0xa438, 0x0d09, + 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x0d0a, 0xa438, 0x0cc0, + 0xa438, 0x0d80, 0xa438, 0x1000, 0xa438, 0x12b5, 0xa438, 0x1000, + 0xa438, 0x10af, 0xa438, 0x8020, 0xa438, 0xd705, 0xa438, 0x4199, + 0xa438, 0xd704, 0xa438, 0x615f, 0xa438, 0xd70c, 0xa438, 0x6103, + 0xa438, 0x8504, 0xa438, 0xd704, 0xa438, 0x40b5, 0xa438, 0x0c03, + 0xa438, 0x1502, 0xa438, 0x8003, 0xa438, 0x9503, 0xa438, 0xcb94, + 0xa438, 0x1000, 0xa438, 0x10af, 0xa438, 0xd706, 0xa438, 0x7fa2, + 0xa438, 0x800a, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x85f0, + 0xa438, 0x9503, 0xa438, 0xd705, 0xa438, 0x40b9, 0xa438, 0x0c1f, + 0xa438, 0x0d00, 0xa438, 0x8dc0, 0xa438, 0xf005, 0xa438, 0x0c1f, + 0xa438, 0x0d07, 0xa438, 0x8dc0, 0xa438, 0xa190, 0xa438, 0x1000, + 0xa438, 0x12b5, 0xa438, 0xd705, 0xa438, 0x39cc, 0xa438, 0x84eb, + 0xa438, 0x1800, 0xa438, 0x1001, 0xa438, 0x1800, 0xa438, 0x819d, + 0xa438, 0xcb13, 0xa438, 0xd706, 0xa438, 0x6089, 0xa438, 0xd1b8, + 0xa438, 0xd04a, 0xa438, 0xf003, 0xa438, 0xd11c, 0xa438, 0xd04b, + 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd701, 0xa438, 0x67d5, + 0xa438, 0xd700, 0xa438, 0x5f74, 0xa438, 0xd70c, 0xa438, 0x610c, + 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd700, 0xa438, 0x6846, + 0xa438, 0xd706, 0xa438, 0x647b, 0xa438, 0xfffa, 0xa438, 0x1000, + 0xa438, 0x1330, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c1f, + 0xa438, 0x0f16, 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd70c, 0xa438, 0x5fb3, 0xa438, 0x0c03, 0xa438, 0x1502, + 0xa438, 0x8f1f, 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd70c, 0xa438, 0x7f33, 0xa438, 0x1000, 0xa438, 0x12b5, + 0xa438, 0x0c07, 0xa438, 0x0c02, 0xa438, 0x0cc0, 0xa438, 0x0080, + 0xa438, 0xd14a, 0xa438, 0xd048, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0x1800, 0xa438, 0x84fd, + 0xa438, 0x800a, 0xa438, 0x1000, 0xa438, 0x120e, 0xa438, 0xa004, + 0xa438, 0x1000, 0xa438, 0x1220, 0xa438, 0x8004, 0xa438, 0xa001, + 0xa438, 0x1000, 0xa438, 0x1220, 0xa438, 0x8001, 0xa438, 0x1000, + 0xa438, 0x1217, 0xa438, 0x0c03, 0xa438, 0x0902, 0xa438, 0x1800, + 0xa438, 0x04ed, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd71f, + 0xa438, 0x5fab, 0xa438, 0xba08, 0xa438, 0x1000, 0xa438, 0x126b, + 0xa438, 0xd71f, 0xa438, 0x7f8b, 0xa438, 0x9a08, 0xa438, 0x1800, + 0xa438, 0x0581, 0xa438, 0x800a, 0xa438, 0xd702, 0xa438, 0x6555, + 0xa438, 0x1000, 0xa438, 0x120e, 0xa438, 0xa004, 0xa438, 0x1000, + 0xa438, 0x1220, 0xa438, 0x8004, 0xa438, 0xa001, 0xa438, 0x1000, + 0xa438, 0x1220, 0xa438, 0x8001, 0xa438, 0x1000, 0xa438, 0x1217, + 0xa438, 0xa00a, 0xa438, 0xa780, 0xa438, 0xcb14, 0xa438, 0xd1b8, + 0xa438, 0xd04a, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd700, + 0xa438, 0x5fb4, 0xa438, 0x6286, 0xa438, 0xd706, 0xa438, 0x5f5b, + 0xa438, 0x800a, 0xa438, 0x1000, 0xa438, 0x120e, 0xa438, 0xa004, + 0xa438, 0x1000, 0xa438, 0x1220, 0xa438, 0x8004, 0xa438, 0xa001, + 0xa438, 0x1000, 0xa438, 0x1220, 0xa438, 0x8001, 0xa438, 0x1000, + 0xa438, 0x1217, 0xa438, 0x0c03, 0xa438, 0x0902, 0xa438, 0x1800, + 0xa438, 0x8545, 0xa438, 0xa00a, 0xa438, 0x9308, 0xa438, 0xb210, + 0xa438, 0xb301, 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd701, + 0xa438, 0x5fa4, 0xa438, 0xb302, 0xa438, 0x9210, 0xa438, 0xd409, + 0xa438, 0x1000, 0xa438, 0x1203, 0xa438, 0xd103, 0xa438, 0xd04c, + 0xa438, 0x1000, 0xa438, 0x126b, 0xa438, 0xd700, 0xa438, 0x5fb4, + 0xa438, 0x1800, 0xa438, 0x0581, 0xa438, 0xd70c, 0xa438, 0x60b3, + 0xa438, 0x1800, 0xa438, 0x8587, 0xa438, 0x1800, 0xa438, 0x001a, + 0xa438, 0x1800, 0xa438, 0x12cb, 0xa436, 0xA10E, 0xa438, 0x12cf, + 0xa436, 0xA10C, 0xa438, 0x04f8, 0xa436, 0xA10A, 0xa438, 0x1003, + 0xa436, 0xA108, 0xa438, 0x15fb, 0xa436, 0xA106, 0xa438, 0x0d2b, + 0xa436, 0xA104, 0xa438, 0x0ecb, 0xa436, 0xA102, 0xa438, 0x1119, + 0xa436, 0xA100, 0xa438, 0x0960, 0xa436, 0xA110, 0xa438, 0x00ff, + 0xa436, 0xA016, 0xa438, 0x0020, 0xa436, 0xA012, 0xa438, 0x1ff8, + 0xa436, 0xA014, 0xa438, 0xa704, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x819d, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, + 0xa438, 0x0000, 0xa436, 0xA164, 0xa438, 0x119F, 0xa436, 0xA166, + 0xa438, 0x3fff, 0xa436, 0xA168, 0xa438, 0x3fff, 0xa436, 0xA16A, + 0xa438, 0x11A1, 0xa436, 0xA16C, 0xa438, 0x3fff, 0xa436, 0xA16E, + 0xa438, 0x3fff, 0xa436, 0xA170, 0xa438, 0x3fff, 0xa436, 0xA172, + 0xa438, 0x3fff, 0xa436, 0xA162, 0xa438, 0x0009, 0xa436, 0xb87c, + 0xa438, 0x8a63, 0xa436, 0xb87e, 0xa438, 0xaf8a, 0xa438, 0x7baf, + 0xa438, 0x8ab6, 0xa438, 0xaf8a, 0xa438, 0xd6af, 0xa438, 0x8ae4, + 0xa438, 0xaf8a, 0xa438, 0xf2af, 0xa438, 0x8b07, 0xa438, 0xaf8b, + 0xa438, 0x07af, 0xa438, 0x8b07, 0xa438, 0xad35, 0xa438, 0x27bf, + 0xa438, 0x7308, 0xa438, 0x027b, 0xa438, 0x07ac, 0xa438, 0x280d, + 0xa438, 0xbf73, 0xa438, 0x0b02, 0xa438, 0x7b07, 0xa438, 0xac28, + 0xa438, 0x04d0, 0xa438, 0x05ae, 0xa438, 0x02d0, 0xa438, 0x01d1, + 0xa438, 0x01d3, 0xa438, 0x04ee, 0xa438, 0x8640, 0xa438, 0x00ee, + 0xa438, 0x8641, 0xa438, 0x00af, 0xa438, 0x6aa6, 0xa438, 0xd100, + 0xa438, 0xd300, 0xa438, 0xee86, 0xa438, 0x4001, 0xa438, 0xee86, + 0xa438, 0x4124, 0xa438, 0xd00f, 0xa438, 0xaf6a, 0xa438, 0xa6bf, + 0xa438, 0x739e, 0xa438, 0x027b, 0xa438, 0x07ad, 0xa438, 0x280b, + 0xa438, 0xe18f, 0xa438, 0xfdad, 0xa438, 0x2805, 0xa438, 0xe08f, + 0xa438, 0xfeae, 0xa438, 0x03e0, 0xa438, 0x8fff, 0xa438, 0xe489, + 0xa438, 0xe7e0, 0xa438, 0x89e7, 0xa438, 0xaf67, 0xa438, 0x9fa0, + 0xa438, 0x9402, 0xa438, 0xae03, 0xa438, 0xa0b5, 0xa438, 0x03af, + 0xa438, 0x0d89, 0xa438, 0xaf0d, 0xa438, 0xafa0, 0xa438, 0x9402, + 0xa438, 0xae03, 0xa438, 0xa0b5, 0xa438, 0x03af, 0xa438, 0x0c64, + 0xa438, 0xaf0c, 0xa438, 0xcce0, 0xa438, 0x8013, 0xa438, 0x026b, + 0xa438, 0xa4ad, 0xa438, 0x2109, 0xa438, 0x0264, 0xa438, 0x47bf, + 0xa438, 0x769b, 0xa438, 0x027a, 0xa438, 0xbcaf, 0xa438, 0x6562, + 0xa436, 0xb85e, 0xa438, 0x6A7F, 0xa436, 0xb860, 0xa438, 0x679C, + 0xa436, 0xb862, 0xa438, 0x0d86, 0xa436, 0xb864, 0xa438, 0x0c61, + 0xa436, 0xb886, 0xa438, 0x6553, 0xa436, 0xb888, 0xa438, 0xffff, + 0xa436, 0xb88a, 0xa438, 0xffff, 0xa436, 0xb88c, 0xa438, 0xffff, + 0xa436, 0xb838, 0xa438, 0x001f, 0xb820, 0x0010, 0xa436, 0x8629, + 0xa438, 0xaf86, 0xa438, 0x41af, 0xa438, 0x8644, 0xa438, 0xaf88, + 0xa438, 0x0caf, 0xa438, 0x8813, 0xa438, 0xaf88, 0xa438, 0x4baf, + 0xa438, 0x884b, 0xa438, 0xaf88, 0xa438, 0x4baf, 0xa438, 0x884b, + 0xa438, 0xaf1d, 0xa438, 0x8a02, 0xa438, 0x864d, 0xa438, 0x0210, + 0xa438, 0x64af, 0xa438, 0x1063, 0xa438, 0xf8fa, 0xa438, 0xef69, + 0xa438, 0xe080, 0xa438, 0x4cac, 0xa438, 0x2517, 0xa438, 0xe080, + 0xa438, 0x40ad, 0xa438, 0x251a, 0xa438, 0x0286, 0xa438, 0x7ce0, + 0xa438, 0x8040, 0xa438, 0xac25, 0xa438, 0x11bf, 0xa438, 0x87f4, + 0xa438, 0x0277, 0xa438, 0xf6ae, 0xa438, 0x0902, 0xa438, 0x87b3, + 0xa438, 0x0287, 0xa438, 0xe902, 0xa438, 0x87de, 0xa438, 0xef96, + 0xa438, 0xfefc, 0xa438, 0x04f8, 0xa438, 0xe080, 0xa438, 0x18ad, + 0xa438, 0x2611, 0xa438, 0xe08f, 0xa438, 0x9cac, 0xa438, 0x2005, + 0xa438, 0x0286, 0xa438, 0x99ae, 0xa438, 0x0302, 0xa438, 0x8707, + 0xa438, 0x0287, 0xa438, 0x5002, 0xa438, 0x87de, 0xa438, 0xfc04, + 0xa438, 0xf8f9, 0xa438, 0xef79, 0xa438, 0xfbbf, 0xa438, 0x87f7, + 0xa438, 0x0278, 0xa438, 0x385c, 0xa438, 0x2000, 0xa438, 0x0d4d, + 0xa438, 0xa101, 0xa438, 0x51bf, 0xa438, 0x87f7, 0xa438, 0x0278, + 0xa438, 0x385c, 0xa438, 0x07ff, 0xa438, 0xe38f, 0xa438, 0x9d1b, + 0xa438, 0x319f, 0xa438, 0x410d, 0xa438, 0x48e3, 0xa438, 0x8f9e, + 0xa438, 0x1b31, 0xa438, 0x9f38, 0xa438, 0xbf87, 0xa438, 0xfa02, + 0xa438, 0x7838, 0xa438, 0x5c07, 0xa438, 0xffe3, 0xa438, 0x8f9f, + 0xa438, 0x1b31, 0xa438, 0x9f28, 0xa438, 0x0d48, 0xa438, 0xe38f, + 0xa438, 0xa01b, 0xa438, 0x319f, 0xa438, 0x1fbf, 0xa438, 0x87fd, + 0xa438, 0x0278, 0xa438, 0x385c, 0xa438, 0x07ff, 0xa438, 0xe38f, + 0xa438, 0xa11b, 0xa438, 0x319f, 0xa438, 0x0f0d, 0xa438, 0x48e3, + 0xa438, 0x8fa2, 0xa438, 0x1b31, 0xa438, 0x9f06, 0xa438, 0xee8f, + 0xa438, 0x9c01, 0xa438, 0xae04, 0xa438, 0xee8f, 0xa438, 0x9c00, + 0xa438, 0xffef, 0xa438, 0x97fd, 0xa438, 0xfc04, 0xa438, 0xf8f9, + 0xa438, 0xef79, 0xa438, 0xfbbf, 0xa438, 0x87f7, 0xa438, 0x0278, + 0xa438, 0x385c, 0xa438, 0x2000, 0xa438, 0x0d4d, 0xa438, 0xa100, + 0xa438, 0x20bf, 0xa438, 0x87f7, 0xa438, 0x0278, 0xa438, 0x385c, + 0xa438, 0x0600, 0xa438, 0x0d49, 0xa438, 0xe38f, 0xa438, 0xa31b, + 0xa438, 0x319f, 0xa438, 0x0ebf, 0xa438, 0x8800, 0xa438, 0x0277, + 0xa438, 0xf6bf, 0xa438, 0x8806, 0xa438, 0x0277, 0xa438, 0xf6ae, + 0xa438, 0x0cbf, 0xa438, 0x8800, 0xa438, 0x0277, 0xa438, 0xedbf, + 0xa438, 0x8806, 0xa438, 0x0277, 0xa438, 0xedee, 0xa438, 0x8f9c, + 0xa438, 0x00ff, 0xa438, 0xef97, 0xa438, 0xfdfc, 0xa438, 0x04f8, + 0xa438, 0xf9ef, 0xa438, 0x79fb, 0xa438, 0xbf87, 0xa438, 0xf702, + 0xa438, 0x7838, 0xa438, 0x5c20, 0xa438, 0x000d, 0xa438, 0x4da1, + 0xa438, 0x014a, 0xa438, 0xbf87, 0xa438, 0xf702, 0xa438, 0x7838, + 0xa438, 0x5c07, 0xa438, 0xffe3, 0xa438, 0x8fa4, 0xa438, 0x1b31, + 0xa438, 0x9f3a, 0xa438, 0x0d48, 0xa438, 0xe38f, 0xa438, 0xa51b, + 0xa438, 0x319f, 0xa438, 0x31bf, 0xa438, 0x87fa, 0xa438, 0x0278, + 0xa438, 0x38e3, 0xa438, 0x8fa6, 0xa438, 0x1b31, 0xa438, 0x9f24, + 0xa438, 0x0d48, 0xa438, 0xe38f, 0xa438, 0xa71b, 0xa438, 0x319f, + 0xa438, 0x1bbf, 0xa438, 0x87fd, 0xa438, 0x0278, 0xa438, 0x38e3, + 0xa438, 0x8fa8, 0xa438, 0x1b31, 0xa438, 0x9f0e, 0xa438, 0xbf88, + 0xa438, 0x0302, 0xa438, 0x77f6, 0xa438, 0xbf88, 0xa438, 0x0902, + 0xa438, 0x77f6, 0xa438, 0xae00, 0xa438, 0xffef, 0xa438, 0x97fd, + 0xa438, 0xfc04, 0xa438, 0xf8ef, 0xa438, 0x79fb, 0xa438, 0xe080, + 0xa438, 0x18ad, 0xa438, 0x261c, 0xa438, 0xee8f, 0xa438, 0x9c00, + 0xa438, 0xbf88, 0xa438, 0x0002, 0xa438, 0x77ed, 0xa438, 0xbf88, + 0xa438, 0x0602, 0xa438, 0x77ed, 0xa438, 0xbf88, 0xa438, 0x0302, + 0xa438, 0x77ed, 0xa438, 0xbf88, 0xa438, 0x0902, 0xa438, 0x77ed, + 0xa438, 0xffef, 0xa438, 0x97fc, 0xa438, 0x04f8, 0xa438, 0xe080, + 0xa438, 0x40f6, 0xa438, 0x25e4, 0xa438, 0x8040, 0xa438, 0xfc04, + 0xa438, 0xf8e0, 0xa438, 0x804c, 0xa438, 0xf625, 0xa438, 0xe480, + 0xa438, 0x4cfc, 0xa438, 0x0455, 0xa438, 0xa4ba, 0xa438, 0xf0a6, + 0xa438, 0x4af0, 0xa438, 0xa64c, 0xa438, 0xf0a6, 0xa438, 0x4e66, + 0xa438, 0xa4b6, 0xa438, 0x55a4, 0xa438, 0xb600, 0xa438, 0xac56, + 0xa438, 0x11ac, 0xa438, 0x56ee, 0xa438, 0x804c, 0xa438, 0x3aaf, + 0xa438, 0x0627, 0xa438, 0xbf88, 0xa438, 0x4802, 0xa438, 0x77ed, + 0xa438, 0xd203, 0xa438, 0xe083, 0xa438, 0x8a0d, 0xa438, 0x01f6, + 0xa438, 0x271b, 0xa438, 0x03aa, 0xa438, 0x0182, 0xa438, 0xe083, + 0xa438, 0x890d, 0xa438, 0x01f6, 0xa438, 0x271b, 0xa438, 0x03aa, + 0xa438, 0x0182, 0xa438, 0xe083, 0xa438, 0x880d, 0xa438, 0x01f6, + 0xa438, 0x271b, 0xa438, 0x03aa, 0xa438, 0x0782, 0xa438, 0xbf88, + 0xa438, 0x4802, 0xa438, 0x77f6, 0xa438, 0xaf16, 0xa438, 0x1500, + 0xa438, 0xa86a, 0xa436, 0xb818, 0xa438, 0x1D84, 0xa436, 0xb81a, + 0xa438, 0x1060, 0xa436, 0xb81c, 0xa438, 0x0623, 0xa436, 0xb81e, + 0xa438, 0x15ef, 0xa436, 0xb850, 0xa438, 0xffff, 0xa436, 0xb852, + 0xa438, 0xffff, 0xa436, 0xb878, 0xa438, 0xffff, 0xa436, 0xb884, + 0xa438, 0xffff, 0xa436, 0xb832, 0xa438, 0x000f, 0xa436, 0x0000, + 0xa438, 0x0000, 0xB82E, 0x0000, 0xa436, 0x8023, 0xa438, 0x0000, + 0xB820, 0x0000, 0xFFFF, 0xFFFF +}; + +static void +re_real_set_phy_mcu_8125b_1(struct re_softc *sc) +{ + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8125b_1, + ARRAY_SIZE(phy_mcu_ram_code_8125b_1) + ); +} + +static void +re_set_phy_mcu_8125b_1(struct re_softc *sc) +{ + re_set_phy_mcu_patch_request(sc); + + re_real_set_phy_mcu_8125b_1(sc); + + re_clear_phy_mcu_patch_request(sc); +} + +static void +re_real_set_phy_mcu_8125b_2(struct re_softc *sc) +{ + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8125b_2, + ARRAY_SIZE(phy_mcu_ram_code_8125b_2) + ); +} + +static void +re_set_phy_mcu_8125b_2(struct re_softc *sc) +{ + re_set_phy_mcu_patch_request(sc); + + re_real_set_phy_mcu_8125b_2(sc); + + re_clear_phy_mcu_patch_request(sc); +} + +static void +re_real_set_phy_mcu_8125d_1_1(struct re_softc *sc) +{ + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8125d_1_1, + ARRAY_SIZE(phy_mcu_ram_code_8125d_1_1)); +} + +static void +re_real_set_phy_mcu_8125d_1_2(struct re_softc *sc) +{ + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8125d_1_2, + ARRAY_SIZE(phy_mcu_ram_code_8125d_1_2)); +} + +static void +re_real_set_phy_mcu_8125d_1_3(struct re_softc *sc) +{ + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8125d_1_3, + ARRAY_SIZE(phy_mcu_ram_code_8125d_1_3)); +} + static void -re_real_set_phy_mcu_8125b_1(struct re_softc* sc) +re_set_phy_mcu_8125d_1(struct re_softc *sc) { - re_set_phy_mcu_ram_code(sc, - phy_mcu_ram_code_8125b_1, - ARRAY_SIZE(phy_mcu_ram_code_8125b_1) - ); + re_set_phy_mcu_patch_request(sc); + re_real_set_phy_mcu_8125d_1_1(sc); + re_clear_phy_mcu_patch_request(sc); + re_set_phy_mcu_patch_request(sc); + re_real_set_phy_mcu_8125d_1_2(sc); + re_clear_phy_mcu_patch_request(sc); + re_set_phy_mcu_patch_request(sc); + re_real_set_phy_mcu_8125d_1_3(sc); + re_clear_phy_mcu_patch_request(sc); } static void -re_set_phy_mcu_8125b_1(struct re_softc* sc) +re_real_set_phy_mcu_8125bp_1_1(struct re_softc *sc) { - re_set_phy_mcu_patch_request(sc); - - re_real_set_phy_mcu_8125b_1(sc); - - re_clear_phy_mcu_patch_request(sc); + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8125bp_1_1, + ARRAY_SIZE(phy_mcu_ram_code_8125bp_1_1) + ); } static void -re_real_set_phy_mcu_8125b_2(struct re_softc* sc) +re_real_set_phy_mcu_8125bp_1_2(struct re_softc *sc) { - re_set_phy_mcu_ram_code(sc, - phy_mcu_ram_code_8125b_2, - ARRAY_SIZE(phy_mcu_ram_code_8125b_2) - ); + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8125bp_1_2, + ARRAY_SIZE(phy_mcu_ram_code_8125bp_1_2) + ); } static void -re_set_phy_mcu_8125b_2(struct re_softc* sc) +re_set_phy_mcu_8125bp_1(struct re_softc *sc) { - re_set_phy_mcu_patch_request(sc); + re_set_phy_mcu_patch_request(sc); + + re_real_set_phy_mcu_8125bp_1_1(sc); + + re_clear_phy_mcu_patch_request(sc); + + re_set_phy_mcu_patch_request(sc); - re_real_set_phy_mcu_8125b_2(sc); + re_real_set_phy_mcu_8125bp_1_2(sc); - re_clear_phy_mcu_patch_request(sc); + re_clear_phy_mcu_patch_request(sc); } static void -re_real_set_phy_mcu_8126a_1_1(struct re_softc* sc) +re_real_set_phy_mcu_8126a_1_1(struct re_softc *sc) { - re_set_phy_mcu_ram_code(sc, - phy_mcu_ram_code_8126a_1_1, - ARRAY_SIZE(phy_mcu_ram_code_8126a_1_1) - ); + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8126a_1_1, + ARRAY_SIZE(phy_mcu_ram_code_8126a_1_1) + ); } static void -re_real_set_phy_mcu_8126a_1_2(struct re_softc* sc) +re_real_set_phy_mcu_8126a_1_2(struct re_softc *sc) { - re_set_phy_mcu_ram_code(sc, - phy_mcu_ram_code_8126a_1_2, - ARRAY_SIZE(phy_mcu_ram_code_8126a_1_2) - ); + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8126a_1_2, + ARRAY_SIZE(phy_mcu_ram_code_8126a_1_2) + ); } static void -re_real_set_phy_mcu_8126a_1_3(struct re_softc* sc) +re_real_set_phy_mcu_8126a_1_3(struct re_softc *sc) { - re_set_phy_mcu_ram_code(sc, - phy_mcu_ram_code_8126a_1_3, - ARRAY_SIZE(phy_mcu_ram_code_8126a_1_3) - ); + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8126a_1_3, + ARRAY_SIZE(phy_mcu_ram_code_8126a_1_3) + ); } static void -re_set_phy_mcu_8126a_1(struct re_softc* sc) +re_set_phy_mcu_8126a_1(struct re_softc *sc) { - re_set_phy_mcu_patch_request(sc); + re_set_phy_mcu_patch_request(sc); - re_real_set_phy_mcu_8126a_1_1(sc); + re_real_set_phy_mcu_8126a_1_1(sc); - re_clear_phy_mcu_patch_request(sc); + re_clear_phy_mcu_patch_request(sc); - re_set_phy_mcu_patch_request(sc); + re_set_phy_mcu_patch_request(sc); - re_real_set_phy_mcu_8126a_1_2(sc); + re_real_set_phy_mcu_8126a_1_2(sc); - re_clear_phy_mcu_patch_request(sc); + re_clear_phy_mcu_patch_request(sc); - re_set_phy_mcu_patch_request(sc); + re_set_phy_mcu_patch_request(sc); - re_real_set_phy_mcu_8126a_1_3(sc); + re_real_set_phy_mcu_8126a_1_3(sc); - re_clear_phy_mcu_patch_request(sc); + re_clear_phy_mcu_patch_request(sc); } static void -re_real_set_phy_mcu_8126a_2_1(struct re_softc* sc) +re_real_set_phy_mcu_8126a_2_1(struct re_softc *sc) { - re_set_phy_mcu_ram_code(sc, - phy_mcu_ram_code_8126a_2_1, - ARRAY_SIZE(phy_mcu_ram_code_8126a_2_1) - ); + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8126a_2_1, + ARRAY_SIZE(phy_mcu_ram_code_8126a_2_1) + ); } static void -re_real_set_phy_mcu_8126a_2_3(struct re_softc* sc) +re_real_set_phy_mcu_8126a_2_3(struct re_softc *sc) { - re_set_phy_mcu_ram_code(sc, - phy_mcu_ram_code_8126a_2_3, - ARRAY_SIZE(phy_mcu_ram_code_8126a_2_3) - ); + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8126a_2_3, + ARRAY_SIZE(phy_mcu_ram_code_8126a_2_3) + ); } static void -re_set_phy_mcu_8126a_2(struct re_softc* sc) +re_set_phy_mcu_8126a_2(struct re_softc *sc) { - re_set_phy_mcu_patch_request(sc); + re_set_phy_mcu_patch_request(sc); - re_real_set_phy_mcu_8126a_2_1(sc); + re_real_set_phy_mcu_8126a_2_1(sc); - re_clear_phy_mcu_patch_request(sc); + re_clear_phy_mcu_patch_request(sc); - re_set_phy_mcu_patch_request(sc); + re_set_phy_mcu_patch_request(sc); - re_real_set_phy_mcu_8126a_2_3(sc); + re_real_set_phy_mcu_8126a_2_3(sc); - re_clear_phy_mcu_patch_request(sc); + re_clear_phy_mcu_patch_request(sc); } -static void re_init_hw_phy_mcu(struct re_softc* sc) +static void +re_real_set_phy_mcu_8126a_3_1(struct re_softc *sc) { - if (re_hw_phy_mcu_code_ver_matched(sc)) return; + re_set_phy_mcu_ram_code(sc, + phy_mcu_ram_code_8126a_3_1, + ARRAY_SIZE(phy_mcu_ram_code_8126a_3_1) + ); +} - switch (sc->re_type) { - case MACFG_36: - re_set_phy_mcu_8168e_1(sc); - break; - case MACFG_37: - re_set_phy_mcu_8168e_2(sc); - break; - case MACFG_38: - re_set_phy_mcu_8168evl_1(sc); - break; - case MACFG_39: - re_set_phy_mcu_8168evl_2(sc); - break; - case MACFG_50: - re_set_phy_mcu_8168f_1(sc); - break; - case MACFG_51: - re_set_phy_mcu_8168f_2(sc); - break; - case MACFG_52: - re_set_phy_mcu_8411_1(sc); - break; - case MACFG_56: - re_set_phy_mcu_8168g_1(sc); - break; - case MACFG_59: - re_set_phy_mcu_8168gu_2(sc); - break; - case MACFG_60: - re_set_phy_mcu_8411b_1(sc); - break; - case MACFG_61: - re_set_phy_mcu_8168ep_1(sc); - break; - case MACFG_67: - re_set_phy_mcu_8168ep_2(sc); - break; - case MACFG_68: - re_set_phy_mcu_8168h_1(sc); - break; - case MACFG_69: - case MACFG_76: - re_set_phy_mcu_8168h_2(sc); - break; - case MACFG_74: - re_set_phy_mcu_8168h_3(sc); - break; - case MACFG_75: - break; - case MACFG_80: - re_set_phy_mcu_8125a_1(sc); - break; - case MACFG_81: - re_set_phy_mcu_8125a_2(sc); - break; - case MACFG_82: - re_set_phy_mcu_8125b_1(sc); - break; - case MACFG_83: - re_set_phy_mcu_8125b_2(sc); - break; - case MACFG_90: - re_set_phy_mcu_8126a_1(sc); - break; - case MACFG_91: - re_set_phy_mcu_8126a_2(sc); - break; - case MACFG_92: - break; - } +static void +re_set_phy_mcu_8126a_3(struct re_softc *sc) +{ + re_set_phy_mcu_patch_request(sc); - re_write_hw_phy_mcu_code_ver(sc); + re_real_set_phy_mcu_8126a_3_1(sc); - MP_WritePhyUshort(sc, 0x1F, 0x0000); + re_clear_phy_mcu_patch_request(sc); } -static void re_set_hw_phy_before_init_phy_mcu(struct re_softc* sc) +static void re_init_hw_phy_mcu(struct re_softc *sc) { - u_int16_t PhyRegValue; + if (re_hw_phy_mcu_code_ver_matched(sc)) + return; - switch (sc->re_type) { - case MACFG_82: - MP_RealWritePhyOcpRegWord(sc, 0xBF86, 0x9000); + switch (sc->re_type) { + case MACFG_36: + re_set_phy_mcu_8168e_1(sc); + break; + case MACFG_37: + re_set_phy_mcu_8168e_2(sc); + break; + case MACFG_38: + re_set_phy_mcu_8168evl_1(sc); + break; + case MACFG_39: + re_set_phy_mcu_8168evl_2(sc); + break; + case MACFG_50: + re_set_phy_mcu_8168f_1(sc); + break; + case MACFG_51: + re_set_phy_mcu_8168f_2(sc); + break; + case MACFG_52: + re_set_phy_mcu_8411_1(sc); + break; + case MACFG_56: + re_set_phy_mcu_8168g_1(sc); + break; + case MACFG_59: + re_set_phy_mcu_8168gu_2(sc); + break; + case MACFG_60: + re_set_phy_mcu_8411b_1(sc); + break; + case MACFG_61: + re_set_phy_mcu_8168ep_1(sc); + break; + case MACFG_67: + re_set_phy_mcu_8168ep_2(sc); + break; + case MACFG_68: + re_set_phy_mcu_8168h_1(sc); + break; + case MACFG_69: + case MACFG_76: + re_set_phy_mcu_8168h_2(sc); + break; + case MACFG_74: + re_set_phy_mcu_8168h_3(sc); + break; + case MACFG_75: + break; + case MACFG_80: + re_set_phy_mcu_8125a_1(sc); + break; + case MACFG_81: + re_set_phy_mcu_8125a_2(sc); + break; + case MACFG_82: + re_set_phy_mcu_8125b_1(sc); + break; + case MACFG_83: + re_set_phy_mcu_8125b_2(sc); + break; + case MACFG_84: + re_set_phy_mcu_8125bp_1(sc); + break; + case MACFG_85: + //do nothing + break; + case MACFG_86: + re_set_phy_mcu_8125d_1(sc); + break; + case MACFG_87: + //do nothing + break; + case MACFG_90: + re_set_phy_mcu_8126a_1(sc); + break; + case MACFG_91: + re_set_phy_mcu_8126a_2(sc); + break; + case MACFG_92: + re_set_phy_mcu_8126a_3(sc); + break; + } - SetEthPhyOcpBit(sc, 0xC402, BIT_10); - ClearEthPhyOcpBit(sc, 0xC402, BIT_10); + re_write_hw_phy_mcu_code_ver(sc); - PhyRegValue = MP_RealReadPhyOcpRegWord(sc, 0xBF86); - PhyRegValue &= (BIT_1 | BIT_0); - if (PhyRegValue != 0) - device_printf(dev, "PHY watch dog not clear, value = 0x%x \n", PhyRegValue); + re_mdio_write(sc, 0x1F, 0x0000); +} - MP_RealWritePhyOcpRegWord(sc, 0xBD86, 0x1010); - MP_RealWritePhyOcpRegWord(sc, 0xBD88, 0x1010); +static void re_set_hw_phy_before_init_phy_mcu(struct re_softc *sc) +{ +#ifndef _WIN32 + device_t dev = sc->dev; +#endif // !_WIN32 - ClearAndSetEthPhyOcpBit(sc, - 0xBD4E, - BIT_11 | BIT_10, - BIT_11); - ClearAndSetEthPhyOcpBit(sc, - 0xBF46, - BIT_11 | BIT_10 | BIT_9 | BIT_8, - BIT_10 | BIT_9 | BIT_8); - break; - } -} - -void re_hw_phy_config(struct re_softc* sc) -{ - u_int16_t Data, PhyRegValue, TmpUshort; - u_int32_t Data_u32; - u_int16_t dout_tapbin; - int i; - - switch (sc->re_type) { - case MACFG_59: - case MACFG_60: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - re_disable_ocp_phy_power_saving(sc); - break; - } + u_int16_t PhyRegValue; - if (HW_DASH_SUPPORT_TYPE_3(sc) && sc->HwPkgDet == 0x06) return; + switch (sc->re_type) { + case MACFG_82: + re_real_ocp_phy_write(sc, 0xBF86, 0x9000); + + re_set_eth_ocp_phy_bit(sc, 0xC402, BIT_10); + re_clear_eth_ocp_phy_bit(sc, 0xC402, BIT_10); + + PhyRegValue = re_real_ocp_phy_read(sc, 0xBF86); + PhyRegValue &= (BIT_1 | BIT_0); + if (PhyRegValue != 0) + device_printf(dev, "PHY watch dog not clear, value = 0x%x \n", PhyRegValue); + + re_real_ocp_phy_write(sc, 0xBD86, 0x1010); + re_real_ocp_phy_write(sc, 0xBD88, 0x1010); + + re_clear_set_eth_ocp_phy_bit(sc, + 0xBD4E, + BIT_11 | BIT_10, + BIT_11); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF46, + BIT_11 | BIT_10 | BIT_9 | BIT_8, + BIT_10 | BIT_9 | BIT_8); + break; + } +} - re_set_hw_phy_before_init_phy_mcu(sc); +#ifdef _WIN32 +void re_hw_phy_config(struct re_softc *sc) +#else // _WIN32 +static void re_hw_phy_config(struct re_softc *sc) +#endif // _WIN32 +{ + u_int16_t Data, PhyRegValue, TmpUshort; + u_int32_t Data_u32; + u_int16_t dout_tapbin; + int i; - if (FALSE == re_phy_ram_code_check(sc)) { - re_set_phy_ram_code_check_fail_flag(sc); - return; - } - - re_init_hw_phy_mcu(sc); - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - if (sc->re_type == MACFG_3) { - CSR_WRITE_1(sc, 0x82, CSR_READ_1(sc, 0x82) | BIT_0); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0b, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0001); - MP_WritePhyUshort(sc, 0x06, 0x006e); - MP_WritePhyUshort(sc, 0x08, 0x0708); - MP_WritePhyUshort(sc, 0x15, 0x4000); - MP_WritePhyUshort(sc, 0x18, 0x65c7); - - MP_WritePhyUshort(sc, 0x1f, 0x0001); - MP_WritePhyUshort(sc, 0x03, 0x00a1); - MP_WritePhyUshort(sc, 0x02, 0x0008); - MP_WritePhyUshort(sc, 0x01, 0x0120); - MP_WritePhyUshort(sc, 0x00, 0x1000); - MP_WritePhyUshort(sc, 0x04, 0x0800); - MP_WritePhyUshort(sc, 0x04, 0x0000); - - MP_WritePhyUshort(sc, 0x03, 0xff41); - MP_WritePhyUshort(sc, 0x02, 0xdf60); - MP_WritePhyUshort(sc, 0x01, 0x0140); - MP_WritePhyUshort(sc, 0x00, 0x0077); - MP_WritePhyUshort(sc, 0x04, 0x7800); - MP_WritePhyUshort(sc, 0x04, 0x7000); - - MP_WritePhyUshort(sc, 0x03, 0x802f); - MP_WritePhyUshort(sc, 0x02, 0x4f02); - MP_WritePhyUshort(sc, 0x01, 0x0409); - MP_WritePhyUshort(sc, 0x00, 0xf0f9); - MP_WritePhyUshort(sc, 0x04, 0x9800); - MP_WritePhyUshort(sc, 0x04, 0x9000); - - MP_WritePhyUshort(sc, 0x03, 0xdf01); - MP_WritePhyUshort(sc, 0x02, 0xdf20); - MP_WritePhyUshort(sc, 0x01, 0xff95); - MP_WritePhyUshort(sc, 0x00, 0xba00); - MP_WritePhyUshort(sc, 0x04, 0xa800); - MP_WritePhyUshort(sc, 0x04, 0xa000); - - MP_WritePhyUshort(sc, 0x03, 0xff41); - MP_WritePhyUshort(sc, 0x02, 0xdf20); - MP_WritePhyUshort(sc, 0x01, 0x0140); - MP_WritePhyUshort(sc, 0x00, 0x00bb); - MP_WritePhyUshort(sc, 0x04, 0xb800); - MP_WritePhyUshort(sc, 0x04, 0xb000); - - MP_WritePhyUshort(sc, 0x03, 0xdf41); - MP_WritePhyUshort(sc, 0x02, 0xdc60); - MP_WritePhyUshort(sc, 0x01, 0x6340); - MP_WritePhyUshort(sc, 0x00, 0x007d); - MP_WritePhyUshort(sc, 0x04, 0xd800); - MP_WritePhyUshort(sc, 0x04, 0xd000); - - MP_WritePhyUshort(sc, 0x03, 0xdf01); - MP_WritePhyUshort(sc, 0x02, 0xdf20); - MP_WritePhyUshort(sc, 0x01, 0x100a); - MP_WritePhyUshort(sc, 0x00, 0xa0ff); - MP_WritePhyUshort(sc, 0x04, 0xf800); - MP_WritePhyUshort(sc, 0x04, 0xf000); - - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x0b, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x9200); - - CSR_WRITE_1(sc, 0x82, 0x0d); - } - else if (sc->re_type == MACFG_4) { - MP_WritePhyUshort(sc, 0x1f, 0x0002); - MP_WritePhyUshort(sc, 0x01, 0x90D0); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - // MP_WritePhyUshort(sc, 0x1e, 0x8c00); /* PHY link down with some Giga switch */ - } - else if (sc->re_type == MACFG_5) { - MP_WritePhyUshort(sc, 0x1f, 0x0001); - MP_WritePhyUshort(sc, 0x04, 0x0000); - MP_WritePhyUshort(sc, 0x03, 0x00a1); - MP_WritePhyUshort(sc, 0x02, 0x0008); - MP_WritePhyUshort(sc, 0x01, 0x0120); - MP_WritePhyUshort(sc, 0x00, 0x1000); - MP_WritePhyUshort(sc, 0x04, 0x0800); - - MP_WritePhyUshort(sc, 0x04, 0x9000); - MP_WritePhyUshort(sc, 0x03, 0x802f); - MP_WritePhyUshort(sc, 0x02, 0x4f02); - MP_WritePhyUshort(sc, 0x01, 0x0409); - MP_WritePhyUshort(sc, 0x00, 0xf099); - MP_WritePhyUshort(sc, 0x04, 0x9800); - - MP_WritePhyUshort(sc, 0x04, 0xa000); - MP_WritePhyUshort(sc, 0x03, 0xdf01); - MP_WritePhyUshort(sc, 0x02, 0xdf20); - MP_WritePhyUshort(sc, 0x01, 0xff95); - MP_WritePhyUshort(sc, 0x00, 0xba00); - MP_WritePhyUshort(sc, 0x04, 0xa800); - - MP_WritePhyUshort(sc, 0x04, 0xf000); - MP_WritePhyUshort(sc, 0x03, 0xdf01); - MP_WritePhyUshort(sc, 0x02, 0xdf20); - MP_WritePhyUshort(sc, 0x01, 0x101a); - MP_WritePhyUshort(sc, 0x00, 0xa0ff); - MP_WritePhyUshort(sc, 0x04, 0xf800); - MP_WritePhyUshort(sc, 0x04, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0001); - MP_WritePhyUshort(sc, 0x10, 0xf41b); - MP_WritePhyUshort(sc, 0x14, 0xfb54); - MP_WritePhyUshort(sc, 0x18, 0xf5c7); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0001); - MP_WritePhyUshort(sc, 0x17, 0x0CC0); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0001); - MP_WritePhyUshort(sc, 0x10, 0xf01b); - - } - else if (sc->re_type == MACFG_6) { - MP_WritePhyUshort(sc, 0x1f, 0x0001); - MP_WritePhyUshort(sc, 0x04, 0x0000); - MP_WritePhyUshort(sc, 0x03, 0x00a1); - MP_WritePhyUshort(sc, 0x02, 0x0008); - MP_WritePhyUshort(sc, 0x01, 0x0120); - MP_WritePhyUshort(sc, 0x00, 0x1000); - MP_WritePhyUshort(sc, 0x04, 0x0800); - - MP_WritePhyUshort(sc, 0x04, 0x9000); - MP_WritePhyUshort(sc, 0x03, 0x802f); - MP_WritePhyUshort(sc, 0x02, 0x4f02); - MP_WritePhyUshort(sc, 0x01, 0x0409); - MP_WritePhyUshort(sc, 0x00, 0xf099); - MP_WritePhyUshort(sc, 0x04, 0x9800); - - MP_WritePhyUshort(sc, 0x04, 0xa000); - MP_WritePhyUshort(sc, 0x03, 0xdf01); - MP_WritePhyUshort(sc, 0x02, 0xdf20); - MP_WritePhyUshort(sc, 0x01, 0xff95); - MP_WritePhyUshort(sc, 0x00, 0xba00); - MP_WritePhyUshort(sc, 0x04, 0xa800); - - MP_WritePhyUshort(sc, 0x04, 0xf000); - MP_WritePhyUshort(sc, 0x03, 0xdf01); - MP_WritePhyUshort(sc, 0x02, 0xdf20); - MP_WritePhyUshort(sc, 0x01, 0x101a); - MP_WritePhyUshort(sc, 0x00, 0xa0ff); - MP_WritePhyUshort(sc, 0x04, 0xf800); - MP_WritePhyUshort(sc, 0x04, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0001); - MP_WritePhyUshort(sc, 0x0b, 0x8480); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0001); - MP_WritePhyUshort(sc, 0x18, 0x67c7); - MP_WritePhyUshort(sc, 0x04, 0x2000); - MP_WritePhyUshort(sc, 0x03, 0x002f); - MP_WritePhyUshort(sc, 0x02, 0x4360); - MP_WritePhyUshort(sc, 0x01, 0x0109); - MP_WritePhyUshort(sc, 0x00, 0x3022); - MP_WritePhyUshort(sc, 0x04, 0x2800); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0001); - MP_WritePhyUshort(sc, 0x17, 0x0CC0); - } - else if (sc->re_type == MACFG_14) { - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x11, MP_ReadPhyUshort(sc, 0x11) | 0x1000); - MP_WritePhyUshort(sc, 0x19, MP_ReadPhyUshort(sc, 0x19) | 0x2000); - MP_WritePhyUshort(sc, 0x10, MP_ReadPhyUshort(sc, 0x10) | 0x8000); - - MP_WritePhyUshort(sc, 0x1f, 0x0003); - MP_WritePhyUshort(sc, 0x08, 0x441D); - MP_WritePhyUshort(sc, 0x01, 0x9100); - } - else if (sc->re_type == MACFG_15) { - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x11, MP_ReadPhyUshort(sc, 0x11) | 0x1000); - MP_WritePhyUshort(sc, 0x19, MP_ReadPhyUshort(sc, 0x19) | 0x2000); - MP_WritePhyUshort(sc, 0x10, MP_ReadPhyUshort(sc, 0x10) | 0x8000); - - MP_WritePhyUshort(sc, 0x1f, 0x0003); - MP_WritePhyUshort(sc, 0x08, 0x441D); - MP_WritePhyUshort(sc, 0x01, 0x9100); - } - else if (sc->re_type == MACFG_17) { - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x11, MP_ReadPhyUshort(sc, 0x11) | 0x1000); - MP_WritePhyUshort(sc, 0x19, MP_ReadPhyUshort(sc, 0x19) | 0x2000); - MP_WritePhyUshort(sc, 0x10, MP_ReadPhyUshort(sc, 0x10) | 0x8000); - - MP_WritePhyUshort(sc, 0x1f, 0x0003); - MP_WritePhyUshort(sc, 0x08, 0x441D); - - MP_WritePhyUshort(sc, 0x1f, 0x0000); - } - else if (sc->re_type == MACFG_21) { - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x0B, 0x94B0); - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x12, 0x6096); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else if (sc->re_type == MACFG_22) { - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x0B, 0x94B0); - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x12, 0x6096); - } - else if (sc->re_type == MACFG_23) { - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x0B, 0x94B0); - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x12, 0x6096); - } - else if (sc->re_type == MACFG_24) { - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x12, 0x2300); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x16, 0x000A); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x12, 0xC096); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x00, 0x88DE); - MP_WritePhyUshort(sc, 0x01, 0x82B1); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x08, 0x9E30); - MP_WritePhyUshort(sc, 0x09, 0x01F0); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x0A, 0x5500); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x03, 0x7002); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x14, MP_ReadPhyUshort(sc, 0x14) | BIT_5); - MP_WritePhyUshort(sc, 0x0d, MP_ReadPhyUshort(sc, 0x0d) | BIT_5); - } - else if (sc->re_type == MACFG_25) { - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x12, 0x2300); - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x16, 0x0F0A); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x00, 0x88DE); - MP_WritePhyUshort(sc, 0x01, 0x82B1); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x0C, 0x7EB8); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x0761); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x03, 0x802F); - MP_WritePhyUshort(sc, 0x02, 0x4F02); - MP_WritePhyUshort(sc, 0x01, 0x0409); - MP_WritePhyUshort(sc, 0x00, 0xF099); - MP_WritePhyUshort(sc, 0x04, 0x9800); - MP_WritePhyUshort(sc, 0x04, 0x9000); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x16, MP_ReadPhyUshort(sc, 0x16) | BIT_0); - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x14, MP_ReadPhyUshort(sc, 0x14) | BIT_5); - MP_WritePhyUshort(sc, 0x0D, MP_ReadPhyUshort(sc, 0x0D) & ~BIT_5); - - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x1D, 0x3D98); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x17, 0x0CC0); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else if (sc->re_type == MACFG_26) { - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x12, 0x2300); - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x16, 0x0F0A); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x00, 0x88DE); - MP_WritePhyUshort(sc, 0x01, 0x82B1); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x0C, 0x7EB8); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x5461); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x5461); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x16, MP_ReadPhyUshort(sc, 0x16) | BIT_0); - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x14, MP_ReadPhyUshort(sc, 0x14) | BIT_5); - MP_WritePhyUshort(sc, 0x0D, MP_ReadPhyUshort(sc, 0x0D) & ~BIT_5); - - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x1D, 0x3D98); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0001); - MP_WritePhyUshort(sc, 0x17, 0x0CC0); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else if (sc->re_type == MACFG_27) { - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0d, MP_ReadPhyUshort(sc, 0x0d) | BIT_5); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x1D, 0x3D98); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x14, 0xCAA3); - MP_WritePhyUshort(sc, 0x1C, 0x000A); - MP_WritePhyUshort(sc, 0x18, 0x65D0); - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x17, 0xB580); - MP_WritePhyUshort(sc, 0x18, 0xFF54); - MP_WritePhyUshort(sc, 0x19, 0x3954); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x0D, 0x310C); - MP_WritePhyUshort(sc, 0x0E, 0x310C); - MP_WritePhyUshort(sc, 0x0F, 0x311C); - MP_WritePhyUshort(sc, 0x06, 0x0761); - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x18, 0xFF55); - MP_WritePhyUshort(sc, 0x19, 0x3955); - MP_WritePhyUshort(sc, 0x18, 0xFF54); - MP_WritePhyUshort(sc, 0x19, 0x3954); - - MP_WritePhyUshort(sc, 0x1f, 0x0001); - MP_WritePhyUshort(sc, 0x17, 0x0CC0); - } - else if (sc->re_type == MACFG_28) { - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x14, MP_ReadPhyUshort(sc, 0x14) | BIT_5); - MP_WritePhyUshort(sc, 0x0d, MP_ReadPhyUshort(sc, 0x0d) | BIT_5); - - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x14, 0xCAA3); - MP_WritePhyUshort(sc, 0x1C, 0x000A); - MP_WritePhyUshort(sc, 0x18, 0x65D0); - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x17, 0xB580); - MP_WritePhyUshort(sc, 0x18, 0xFF54); - MP_WritePhyUshort(sc, 0x19, 0x3954); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x0D, 0x310C); - MP_WritePhyUshort(sc, 0x0E, 0x310C); - MP_WritePhyUshort(sc, 0x0F, 0x311C); - MP_WritePhyUshort(sc, 0x06, 0x0761); - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x18, 0xFF55); - MP_WritePhyUshort(sc, 0x19, 0x3955); - MP_WritePhyUshort(sc, 0x18, 0xFF54); - MP_WritePhyUshort(sc, 0x19, 0x3954); - - MP_WritePhyUshort(sc, 0x1f, 0x0001); - MP_WritePhyUshort(sc, 0x17, 0x0CC0); - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x16, MP_ReadPhyUshort(sc, 0x16) | BIT_0); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else if (sc->re_type == MACFG_31) { - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x06, 0x4064); - MP_WritePhyUshort(sc, 0x07, 0x2863); - MP_WritePhyUshort(sc, 0x08, 0x059C); - MP_WritePhyUshort(sc, 0x09, 0x26B4); - MP_WritePhyUshort(sc, 0x0A, 0x6A19); - MP_WritePhyUshort(sc, 0x0B, 0xDCC8); - MP_WritePhyUshort(sc, 0x10, 0xF06D); - MP_WritePhyUshort(sc, 0x14, 0x7F68); - MP_WritePhyUshort(sc, 0x18, 0x7FD9); - MP_WritePhyUshort(sc, 0x1C, 0xF0FF); - MP_WritePhyUshort(sc, 0x1D, 0x3D9C); - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x12, 0xF49F); - MP_WritePhyUshort(sc, 0x13, 0x070B); - MP_WritePhyUshort(sc, 0x1A, 0x05AD); - MP_WritePhyUshort(sc, 0x14, 0x94C0); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - Data = MP_ReadPhyUshort(sc, 0x0B) & 0xFF00; - Data |= 0x10; - MP_WritePhyUshort(sc, 0x0B, Data); - Data = MP_ReadPhyUshort(sc, 0x0C) & 0x00FF; - Data |= 0xA200; - MP_WritePhyUshort(sc, 0x0C, Data); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x5561); - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8332); - MP_WritePhyUshort(sc, 0x06, 0x5561); - - if (MP_ReadEfuse(sc, 0x01) == 0xb1) { - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x05, 0x669A); - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8330); - MP_WritePhyUshort(sc, 0x06, 0x669A); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - Data = MP_ReadPhyUshort(sc, 0x0D); - if ((Data & 0x00FF) != 0x006C) { - Data &= 0xFF00; - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x0D, Data | 0x0065); - MP_WritePhyUshort(sc, 0x0D, Data | 0x0066); - MP_WritePhyUshort(sc, 0x0D, Data | 0x0067); - MP_WritePhyUshort(sc, 0x0D, Data | 0x0068); - MP_WritePhyUshort(sc, 0x0D, Data | 0x0069); - MP_WritePhyUshort(sc, 0x0D, Data | 0x006A); - MP_WritePhyUshort(sc, 0x0D, Data | 0x006B); - MP_WritePhyUshort(sc, 0x0D, Data | 0x006C); - } - } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x05, 0x6662); - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8330); - MP_WritePhyUshort(sc, 0x06, 0x6662); - } - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - Data = MP_ReadPhyUshort(sc, 0x0D); - Data |= 0x300; - MP_WritePhyUshort(sc, 0x0D, Data); - Data = MP_ReadPhyUshort(sc, 0x0F); - Data |= 0x10; - MP_WritePhyUshort(sc, 0x0F, Data); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - Data = MP_ReadPhyUshort(sc, 0x02); - Data &= ~0x600; - Data |= 0x100; - MP_WritePhyUshort(sc, 0x02, Data); - Data = MP_ReadPhyUshort(sc, 0x03); - Data &= ~0xE000; - MP_WritePhyUshort(sc, 0x03, Data); - - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x17, 0x0CC0); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x001B); - if (MP_ReadPhyUshort(sc, 0x06) == 0xBF00) { - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x0080); - MP_WritePhyUshort(sc, 0x05, 0x8000); - MP_WritePhyUshort(sc, 0x06, 0xf8f9); - MP_WritePhyUshort(sc, 0x06, 0xfaef); - MP_WritePhyUshort(sc, 0x06, 0x59ee); - MP_WritePhyUshort(sc, 0x06, 0xf8ea); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0xf8eb); - MP_WritePhyUshort(sc, 0x06, 0x00e0); - MP_WritePhyUshort(sc, 0x06, 0xf87c); - MP_WritePhyUshort(sc, 0x06, 0xe1f8); - MP_WritePhyUshort(sc, 0x06, 0x7d59); - MP_WritePhyUshort(sc, 0x06, 0x0fef); - MP_WritePhyUshort(sc, 0x06, 0x0139); - MP_WritePhyUshort(sc, 0x06, 0x029e); - MP_WritePhyUshort(sc, 0x06, 0x06ef); - MP_WritePhyUshort(sc, 0x06, 0x1039); - MP_WritePhyUshort(sc, 0x06, 0x089f); - MP_WritePhyUshort(sc, 0x06, 0x2aee); - MP_WritePhyUshort(sc, 0x06, 0xf8ea); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0xf8eb); - MP_WritePhyUshort(sc, 0x06, 0x01e0); - MP_WritePhyUshort(sc, 0x06, 0xf87c); - MP_WritePhyUshort(sc, 0x06, 0xe1f8); - MP_WritePhyUshort(sc, 0x06, 0x7d58); - MP_WritePhyUshort(sc, 0x06, 0x409e); - MP_WritePhyUshort(sc, 0x06, 0x0f39); - MP_WritePhyUshort(sc, 0x06, 0x46aa); - MP_WritePhyUshort(sc, 0x06, 0x0bbf); - MP_WritePhyUshort(sc, 0x06, 0x8290); - MP_WritePhyUshort(sc, 0x06, 0xd682); - MP_WritePhyUshort(sc, 0x06, 0x9802); - MP_WritePhyUshort(sc, 0x06, 0x014f); - MP_WritePhyUshort(sc, 0x06, 0xae09); - MP_WritePhyUshort(sc, 0x06, 0xbf82); - MP_WritePhyUshort(sc, 0x06, 0x98d6); - MP_WritePhyUshort(sc, 0x06, 0x82a0); - MP_WritePhyUshort(sc, 0x06, 0x0201); - MP_WritePhyUshort(sc, 0x06, 0x4fef); - MP_WritePhyUshort(sc, 0x06, 0x95fe); - MP_WritePhyUshort(sc, 0x06, 0xfdfc); - MP_WritePhyUshort(sc, 0x06, 0x05f8); - MP_WritePhyUshort(sc, 0x06, 0xf9fa); - MP_WritePhyUshort(sc, 0x06, 0xeef8); - MP_WritePhyUshort(sc, 0x06, 0xea00); - MP_WritePhyUshort(sc, 0x06, 0xeef8); - MP_WritePhyUshort(sc, 0x06, 0xeb00); - MP_WritePhyUshort(sc, 0x06, 0xe2f8); - MP_WritePhyUshort(sc, 0x06, 0x7ce3); - MP_WritePhyUshort(sc, 0x06, 0xf87d); - MP_WritePhyUshort(sc, 0x06, 0xa511); - MP_WritePhyUshort(sc, 0x06, 0x1112); - MP_WritePhyUshort(sc, 0x06, 0xd240); - MP_WritePhyUshort(sc, 0x06, 0xd644); - MP_WritePhyUshort(sc, 0x06, 0x4402); - MP_WritePhyUshort(sc, 0x06, 0x8217); - MP_WritePhyUshort(sc, 0x06, 0xd2a0); - MP_WritePhyUshort(sc, 0x06, 0xd6aa); - MP_WritePhyUshort(sc, 0x06, 0xaa02); - MP_WritePhyUshort(sc, 0x06, 0x8217); - MP_WritePhyUshort(sc, 0x06, 0xae0f); - MP_WritePhyUshort(sc, 0x06, 0xa544); - MP_WritePhyUshort(sc, 0x06, 0x4402); - MP_WritePhyUshort(sc, 0x06, 0xae4d); - MP_WritePhyUshort(sc, 0x06, 0xa5aa); - MP_WritePhyUshort(sc, 0x06, 0xaa02); - MP_WritePhyUshort(sc, 0x06, 0xae47); - MP_WritePhyUshort(sc, 0x06, 0xaf82); - MP_WritePhyUshort(sc, 0x06, 0x13ee); - MP_WritePhyUshort(sc, 0x06, 0x834e); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x834d); - MP_WritePhyUshort(sc, 0x06, 0x0fee); - MP_WritePhyUshort(sc, 0x06, 0x834c); - MP_WritePhyUshort(sc, 0x06, 0x0fee); - MP_WritePhyUshort(sc, 0x06, 0x834f); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x8351); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x834a); - MP_WritePhyUshort(sc, 0x06, 0xffee); - MP_WritePhyUshort(sc, 0x06, 0x834b); - MP_WritePhyUshort(sc, 0x06, 0xffe0); - MP_WritePhyUshort(sc, 0x06, 0x8330); - MP_WritePhyUshort(sc, 0x06, 0xe183); - MP_WritePhyUshort(sc, 0x06, 0x3158); - MP_WritePhyUshort(sc, 0x06, 0xfee4); - MP_WritePhyUshort(sc, 0x06, 0xf88a); - MP_WritePhyUshort(sc, 0x06, 0xe5f8); - MP_WritePhyUshort(sc, 0x06, 0x8be0); - MP_WritePhyUshort(sc, 0x06, 0x8332); - MP_WritePhyUshort(sc, 0x06, 0xe183); - MP_WritePhyUshort(sc, 0x06, 0x3359); - MP_WritePhyUshort(sc, 0x06, 0x0fe2); - MP_WritePhyUshort(sc, 0x06, 0x834d); - MP_WritePhyUshort(sc, 0x06, 0x0c24); - MP_WritePhyUshort(sc, 0x06, 0x5af0); - MP_WritePhyUshort(sc, 0x06, 0x1e12); - MP_WritePhyUshort(sc, 0x06, 0xe4f8); - MP_WritePhyUshort(sc, 0x06, 0x8ce5); - MP_WritePhyUshort(sc, 0x06, 0xf88d); - MP_WritePhyUshort(sc, 0x06, 0xaf82); - MP_WritePhyUshort(sc, 0x06, 0x13e0); - MP_WritePhyUshort(sc, 0x06, 0x834f); - MP_WritePhyUshort(sc, 0x06, 0x10e4); - MP_WritePhyUshort(sc, 0x06, 0x834f); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0x4e78); - MP_WritePhyUshort(sc, 0x06, 0x009f); - MP_WritePhyUshort(sc, 0x06, 0x0ae0); - MP_WritePhyUshort(sc, 0x06, 0x834f); - MP_WritePhyUshort(sc, 0x06, 0xa010); - MP_WritePhyUshort(sc, 0x06, 0xa5ee); - MP_WritePhyUshort(sc, 0x06, 0x834e); - MP_WritePhyUshort(sc, 0x06, 0x01e0); - MP_WritePhyUshort(sc, 0x06, 0x834e); - MP_WritePhyUshort(sc, 0x06, 0x7805); - MP_WritePhyUshort(sc, 0x06, 0x9e9a); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0x4e78); - MP_WritePhyUshort(sc, 0x06, 0x049e); - MP_WritePhyUshort(sc, 0x06, 0x10e0); - MP_WritePhyUshort(sc, 0x06, 0x834e); - MP_WritePhyUshort(sc, 0x06, 0x7803); - MP_WritePhyUshort(sc, 0x06, 0x9e0f); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0x4e78); - MP_WritePhyUshort(sc, 0x06, 0x019e); - MP_WritePhyUshort(sc, 0x06, 0x05ae); - MP_WritePhyUshort(sc, 0x06, 0x0caf); - MP_WritePhyUshort(sc, 0x06, 0x81f8); - MP_WritePhyUshort(sc, 0x06, 0xaf81); - MP_WritePhyUshort(sc, 0x06, 0xa3af); - MP_WritePhyUshort(sc, 0x06, 0x81dc); - MP_WritePhyUshort(sc, 0x06, 0xaf82); - MP_WritePhyUshort(sc, 0x06, 0x13ee); - MP_WritePhyUshort(sc, 0x06, 0x8348); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0x8349); - MP_WritePhyUshort(sc, 0x06, 0x00e0); - MP_WritePhyUshort(sc, 0x06, 0x8351); - MP_WritePhyUshort(sc, 0x06, 0x10e4); - MP_WritePhyUshort(sc, 0x06, 0x8351); - MP_WritePhyUshort(sc, 0x06, 0x5801); - MP_WritePhyUshort(sc, 0x06, 0x9fea); - MP_WritePhyUshort(sc, 0x06, 0xd000); - MP_WritePhyUshort(sc, 0x06, 0xd180); - MP_WritePhyUshort(sc, 0x06, 0x1f66); - MP_WritePhyUshort(sc, 0x06, 0xe2f8); - MP_WritePhyUshort(sc, 0x06, 0xeae3); - MP_WritePhyUshort(sc, 0x06, 0xf8eb); - MP_WritePhyUshort(sc, 0x06, 0x5af8); - MP_WritePhyUshort(sc, 0x06, 0x1e20); - MP_WritePhyUshort(sc, 0x06, 0xe6f8); - MP_WritePhyUshort(sc, 0x06, 0xeae5); - MP_WritePhyUshort(sc, 0x06, 0xf8eb); - MP_WritePhyUshort(sc, 0x06, 0xd302); - MP_WritePhyUshort(sc, 0x06, 0xb3fe); - MP_WritePhyUshort(sc, 0x06, 0xe2f8); - MP_WritePhyUshort(sc, 0x06, 0x7cef); - MP_WritePhyUshort(sc, 0x06, 0x325b); - MP_WritePhyUshort(sc, 0x06, 0x80e3); - MP_WritePhyUshort(sc, 0x06, 0xf87d); - MP_WritePhyUshort(sc, 0x06, 0x9e03); - MP_WritePhyUshort(sc, 0x06, 0x7dff); - MP_WritePhyUshort(sc, 0x06, 0xff0d); - MP_WritePhyUshort(sc, 0x06, 0x581c); - MP_WritePhyUshort(sc, 0x06, 0x551a); - MP_WritePhyUshort(sc, 0x06, 0x6511); - MP_WritePhyUshort(sc, 0x06, 0xa190); - MP_WritePhyUshort(sc, 0x06, 0xd3e2); - MP_WritePhyUshort(sc, 0x06, 0x8348); - MP_WritePhyUshort(sc, 0x06, 0xe383); - MP_WritePhyUshort(sc, 0x06, 0x491b); - MP_WritePhyUshort(sc, 0x06, 0x56ab); - MP_WritePhyUshort(sc, 0x06, 0x08ef); - MP_WritePhyUshort(sc, 0x06, 0x56e6); - MP_WritePhyUshort(sc, 0x06, 0x8348); - MP_WritePhyUshort(sc, 0x06, 0xe783); - MP_WritePhyUshort(sc, 0x06, 0x4910); - MP_WritePhyUshort(sc, 0x06, 0xd180); - MP_WritePhyUshort(sc, 0x06, 0x1f66); - MP_WritePhyUshort(sc, 0x06, 0xa004); - MP_WritePhyUshort(sc, 0x06, 0xb9e2); - MP_WritePhyUshort(sc, 0x06, 0x8348); - MP_WritePhyUshort(sc, 0x06, 0xe383); - MP_WritePhyUshort(sc, 0x06, 0x49ef); - MP_WritePhyUshort(sc, 0x06, 0x65e2); - MP_WritePhyUshort(sc, 0x06, 0x834a); - MP_WritePhyUshort(sc, 0x06, 0xe383); - MP_WritePhyUshort(sc, 0x06, 0x4b1b); - MP_WritePhyUshort(sc, 0x06, 0x56aa); - MP_WritePhyUshort(sc, 0x06, 0x0eef); - MP_WritePhyUshort(sc, 0x06, 0x56e6); - MP_WritePhyUshort(sc, 0x06, 0x834a); - MP_WritePhyUshort(sc, 0x06, 0xe783); - MP_WritePhyUshort(sc, 0x06, 0x4be2); - MP_WritePhyUshort(sc, 0x06, 0x834d); - MP_WritePhyUshort(sc, 0x06, 0xe683); - MP_WritePhyUshort(sc, 0x06, 0x4ce0); - MP_WritePhyUshort(sc, 0x06, 0x834d); - MP_WritePhyUshort(sc, 0x06, 0xa000); - MP_WritePhyUshort(sc, 0x06, 0x0caf); - MP_WritePhyUshort(sc, 0x06, 0x81dc); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0x4d10); - MP_WritePhyUshort(sc, 0x06, 0xe483); - MP_WritePhyUshort(sc, 0x06, 0x4dae); - MP_WritePhyUshort(sc, 0x06, 0x0480); - MP_WritePhyUshort(sc, 0x06, 0xe483); - MP_WritePhyUshort(sc, 0x06, 0x4de0); - MP_WritePhyUshort(sc, 0x06, 0x834e); - MP_WritePhyUshort(sc, 0x06, 0x7803); - MP_WritePhyUshort(sc, 0x06, 0x9e0b); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0x4e78); - MP_WritePhyUshort(sc, 0x06, 0x049e); - MP_WritePhyUshort(sc, 0x06, 0x04ee); - MP_WritePhyUshort(sc, 0x06, 0x834e); - MP_WritePhyUshort(sc, 0x06, 0x02e0); - MP_WritePhyUshort(sc, 0x06, 0x8332); - MP_WritePhyUshort(sc, 0x06, 0xe183); - MP_WritePhyUshort(sc, 0x06, 0x3359); - MP_WritePhyUshort(sc, 0x06, 0x0fe2); - MP_WritePhyUshort(sc, 0x06, 0x834d); - MP_WritePhyUshort(sc, 0x06, 0x0c24); - MP_WritePhyUshort(sc, 0x06, 0x5af0); - MP_WritePhyUshort(sc, 0x06, 0x1e12); - MP_WritePhyUshort(sc, 0x06, 0xe4f8); - MP_WritePhyUshort(sc, 0x06, 0x8ce5); - MP_WritePhyUshort(sc, 0x06, 0xf88d); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0x30e1); - MP_WritePhyUshort(sc, 0x06, 0x8331); - MP_WritePhyUshort(sc, 0x06, 0x6801); - MP_WritePhyUshort(sc, 0x06, 0xe4f8); - MP_WritePhyUshort(sc, 0x06, 0x8ae5); - MP_WritePhyUshort(sc, 0x06, 0xf88b); - MP_WritePhyUshort(sc, 0x06, 0xae37); - MP_WritePhyUshort(sc, 0x06, 0xee83); - MP_WritePhyUshort(sc, 0x06, 0x4e03); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0x4ce1); - MP_WritePhyUshort(sc, 0x06, 0x834d); - MP_WritePhyUshort(sc, 0x06, 0x1b01); - MP_WritePhyUshort(sc, 0x06, 0x9e04); - MP_WritePhyUshort(sc, 0x06, 0xaaa1); - MP_WritePhyUshort(sc, 0x06, 0xaea8); - MP_WritePhyUshort(sc, 0x06, 0xee83); - MP_WritePhyUshort(sc, 0x06, 0x4e04); - MP_WritePhyUshort(sc, 0x06, 0xee83); - MP_WritePhyUshort(sc, 0x06, 0x4f00); - MP_WritePhyUshort(sc, 0x06, 0xaeab); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0x4f78); - MP_WritePhyUshort(sc, 0x06, 0x039f); - MP_WritePhyUshort(sc, 0x06, 0x14ee); - MP_WritePhyUshort(sc, 0x06, 0x834e); - MP_WritePhyUshort(sc, 0x06, 0x05d2); - MP_WritePhyUshort(sc, 0x06, 0x40d6); - MP_WritePhyUshort(sc, 0x06, 0x5554); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0x17d2); - MP_WritePhyUshort(sc, 0x06, 0xa0d6); - MP_WritePhyUshort(sc, 0x06, 0xba00); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0x17fe); - MP_WritePhyUshort(sc, 0x06, 0xfdfc); - MP_WritePhyUshort(sc, 0x06, 0x05f8); - MP_WritePhyUshort(sc, 0x06, 0xe0f8); - MP_WritePhyUshort(sc, 0x06, 0x60e1); - MP_WritePhyUshort(sc, 0x06, 0xf861); - MP_WritePhyUshort(sc, 0x06, 0x6802); - MP_WritePhyUshort(sc, 0x06, 0xe4f8); - MP_WritePhyUshort(sc, 0x06, 0x60e5); - MP_WritePhyUshort(sc, 0x06, 0xf861); - MP_WritePhyUshort(sc, 0x06, 0xe0f8); - MP_WritePhyUshort(sc, 0x06, 0x48e1); - MP_WritePhyUshort(sc, 0x06, 0xf849); - MP_WritePhyUshort(sc, 0x06, 0x580f); - MP_WritePhyUshort(sc, 0x06, 0x1e02); - MP_WritePhyUshort(sc, 0x06, 0xe4f8); - MP_WritePhyUshort(sc, 0x06, 0x48e5); - MP_WritePhyUshort(sc, 0x06, 0xf849); - MP_WritePhyUshort(sc, 0x06, 0xd000); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0x5bbf); - MP_WritePhyUshort(sc, 0x06, 0x8350); - MP_WritePhyUshort(sc, 0x06, 0xef46); - MP_WritePhyUshort(sc, 0x06, 0xdc19); - MP_WritePhyUshort(sc, 0x06, 0xddd0); - MP_WritePhyUshort(sc, 0x06, 0x0102); - MP_WritePhyUshort(sc, 0x06, 0x825b); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0x77e0); - MP_WritePhyUshort(sc, 0x06, 0xf860); - MP_WritePhyUshort(sc, 0x06, 0xe1f8); - MP_WritePhyUshort(sc, 0x06, 0x6158); - MP_WritePhyUshort(sc, 0x06, 0xfde4); - MP_WritePhyUshort(sc, 0x06, 0xf860); - MP_WritePhyUshort(sc, 0x06, 0xe5f8); - MP_WritePhyUshort(sc, 0x06, 0x61fc); - MP_WritePhyUshort(sc, 0x06, 0x04f9); - MP_WritePhyUshort(sc, 0x06, 0xfafb); - MP_WritePhyUshort(sc, 0x06, 0xc6bf); - MP_WritePhyUshort(sc, 0x06, 0xf840); - MP_WritePhyUshort(sc, 0x06, 0xbe83); - MP_WritePhyUshort(sc, 0x06, 0x50a0); - MP_WritePhyUshort(sc, 0x06, 0x0101); - MP_WritePhyUshort(sc, 0x06, 0x071b); - MP_WritePhyUshort(sc, 0x06, 0x89cf); - MP_WritePhyUshort(sc, 0x06, 0xd208); - MP_WritePhyUshort(sc, 0x06, 0xebdb); - MP_WritePhyUshort(sc, 0x06, 0x19b2); - MP_WritePhyUshort(sc, 0x06, 0xfbff); - MP_WritePhyUshort(sc, 0x06, 0xfefd); - MP_WritePhyUshort(sc, 0x06, 0x04f8); - MP_WritePhyUshort(sc, 0x06, 0xe0f8); - MP_WritePhyUshort(sc, 0x06, 0x48e1); - MP_WritePhyUshort(sc, 0x06, 0xf849); - MP_WritePhyUshort(sc, 0x06, 0x6808); - MP_WritePhyUshort(sc, 0x06, 0xe4f8); - MP_WritePhyUshort(sc, 0x06, 0x48e5); - MP_WritePhyUshort(sc, 0x06, 0xf849); - MP_WritePhyUshort(sc, 0x06, 0x58f7); - MP_WritePhyUshort(sc, 0x06, 0xe4f8); - MP_WritePhyUshort(sc, 0x06, 0x48e5); - MP_WritePhyUshort(sc, 0x06, 0xf849); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0x4d20); - MP_WritePhyUshort(sc, 0x06, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x4e22); - MP_WritePhyUshort(sc, 0x06, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x4ddf); - MP_WritePhyUshort(sc, 0x06, 0xff01); - MP_WritePhyUshort(sc, 0x06, 0x4edd); - MP_WritePhyUshort(sc, 0x06, 0xff01); - MP_WritePhyUshort(sc, 0x06, 0xf8fa); - MP_WritePhyUshort(sc, 0x06, 0xfbef); - MP_WritePhyUshort(sc, 0x06, 0x79bf); - MP_WritePhyUshort(sc, 0x06, 0xf822); - MP_WritePhyUshort(sc, 0x06, 0xd819); - MP_WritePhyUshort(sc, 0x06, 0xd958); - MP_WritePhyUshort(sc, 0x06, 0x849f); - MP_WritePhyUshort(sc, 0x06, 0x09bf); - MP_WritePhyUshort(sc, 0x06, 0x82be); - MP_WritePhyUshort(sc, 0x06, 0xd682); - MP_WritePhyUshort(sc, 0x06, 0xc602); - MP_WritePhyUshort(sc, 0x06, 0x014f); - MP_WritePhyUshort(sc, 0x06, 0xef97); - MP_WritePhyUshort(sc, 0x06, 0xfffe); - MP_WritePhyUshort(sc, 0x06, 0xfc05); - MP_WritePhyUshort(sc, 0x06, 0x17ff); - MP_WritePhyUshort(sc, 0x06, 0xfe01); - MP_WritePhyUshort(sc, 0x06, 0x1700); - MP_WritePhyUshort(sc, 0x06, 0x0102); - MP_WritePhyUshort(sc, 0x05, 0x83d8); - MP_WritePhyUshort(sc, 0x06, 0x8051); - MP_WritePhyUshort(sc, 0x05, 0x83d6); - MP_WritePhyUshort(sc, 0x06, 0x82a0); - MP_WritePhyUshort(sc, 0x05, 0x83d4); - MP_WritePhyUshort(sc, 0x06, 0x8000); - MP_WritePhyUshort(sc, 0x02, 0x2010); - MP_WritePhyUshort(sc, 0x03, 0xdc00); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x0b, 0x0600); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x00fc); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - } - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0xF880); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else if (sc->re_type == MACFG_32) { - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x06, 0x4064); - MP_WritePhyUshort(sc, 0x07, 0x2863); - MP_WritePhyUshort(sc, 0x08, 0x059C); - MP_WritePhyUshort(sc, 0x09, 0x26B4); - MP_WritePhyUshort(sc, 0x0A, 0x6A19); - MP_WritePhyUshort(sc, 0x0B, 0xBCC0); - MP_WritePhyUshort(sc, 0x10, 0xF06D); - MP_WritePhyUshort(sc, 0x14, 0x7F68); - MP_WritePhyUshort(sc, 0x18, 0x7FD9); - MP_WritePhyUshort(sc, 0x1C, 0xF0FF); - MP_WritePhyUshort(sc, 0x1D, 0x3D9C); - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x12, 0xF49F); - MP_WritePhyUshort(sc, 0x13, 0x070B); - MP_WritePhyUshort(sc, 0x1A, 0x05AD); - MP_WritePhyUshort(sc, 0x14, 0x94C0); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x5571); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x05, 0x2642); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x02, 0xC107); - MP_WritePhyUshort(sc, 0x03, 0x1002); - - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x16, 0x0CC0); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x0F, 0x0017); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8200); - MP_WritePhyUshort(sc, 0x06, 0xF8F9); - MP_WritePhyUshort(sc, 0x06, 0xFAEF); - MP_WritePhyUshort(sc, 0x06, 0x59EE); - MP_WritePhyUshort(sc, 0x06, 0xF8EA); - MP_WritePhyUshort(sc, 0x06, 0x00EE); - MP_WritePhyUshort(sc, 0x06, 0xF8EB); - MP_WritePhyUshort(sc, 0x06, 0x00E0); - MP_WritePhyUshort(sc, 0x06, 0xF87C); - MP_WritePhyUshort(sc, 0x06, 0xE1F8); - MP_WritePhyUshort(sc, 0x06, 0x7D59); - MP_WritePhyUshort(sc, 0x06, 0x0FEF); - MP_WritePhyUshort(sc, 0x06, 0x0139); - MP_WritePhyUshort(sc, 0x06, 0x029E); - MP_WritePhyUshort(sc, 0x06, 0x06EF); - MP_WritePhyUshort(sc, 0x06, 0x1039); - MP_WritePhyUshort(sc, 0x06, 0x089F); - MP_WritePhyUshort(sc, 0x06, 0x2AEE); - MP_WritePhyUshort(sc, 0x06, 0xF8EA); - MP_WritePhyUshort(sc, 0x06, 0x00EE); - MP_WritePhyUshort(sc, 0x06, 0xF8EB); - MP_WritePhyUshort(sc, 0x06, 0x01E0); - MP_WritePhyUshort(sc, 0x06, 0xF87C); - MP_WritePhyUshort(sc, 0x06, 0xE1F8); - MP_WritePhyUshort(sc, 0x06, 0x7D58); - MP_WritePhyUshort(sc, 0x06, 0x409E); - MP_WritePhyUshort(sc, 0x06, 0x0F39); - MP_WritePhyUshort(sc, 0x06, 0x46AA); - MP_WritePhyUshort(sc, 0x06, 0x0BBF); - MP_WritePhyUshort(sc, 0x06, 0x8251); - MP_WritePhyUshort(sc, 0x06, 0xD682); - MP_WritePhyUshort(sc, 0x06, 0x5902); - MP_WritePhyUshort(sc, 0x06, 0x014F); - MP_WritePhyUshort(sc, 0x06, 0xAE09); - MP_WritePhyUshort(sc, 0x06, 0xBF82); - MP_WritePhyUshort(sc, 0x06, 0x59D6); - MP_WritePhyUshort(sc, 0x06, 0x8261); - MP_WritePhyUshort(sc, 0x06, 0x0201); - MP_WritePhyUshort(sc, 0x06, 0x4FEF); - MP_WritePhyUshort(sc, 0x06, 0x95FE); - MP_WritePhyUshort(sc, 0x06, 0xFDFC); - MP_WritePhyUshort(sc, 0x06, 0x054D); - MP_WritePhyUshort(sc, 0x06, 0x2000); - MP_WritePhyUshort(sc, 0x06, 0x024E); - MP_WritePhyUshort(sc, 0x06, 0x2200); - MP_WritePhyUshort(sc, 0x06, 0x024D); - MP_WritePhyUshort(sc, 0x06, 0xDFFF); - MP_WritePhyUshort(sc, 0x06, 0x014E); - MP_WritePhyUshort(sc, 0x06, 0xDDFF); - MP_WritePhyUshort(sc, 0x06, 0x0100); - MP_WritePhyUshort(sc, 0x02, 0x6010); - MP_WritePhyUshort(sc, 0x05, 0xFFF6); - MP_WritePhyUshort(sc, 0x06, 0x00EC); - MP_WritePhyUshort(sc, 0x05, 0x83D4); - MP_WritePhyUshort(sc, 0x06, 0x8200); - - } - else if (sc->re_type == MACFG_33) { - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x06, 0x4064); - MP_WritePhyUshort(sc, 0x07, 0x2863); - MP_WritePhyUshort(sc, 0x08, 0x059C); - MP_WritePhyUshort(sc, 0x09, 0x26B4); - MP_WritePhyUshort(sc, 0x0A, 0x6A19); - MP_WritePhyUshort(sc, 0x0B, 0xDCC8); - MP_WritePhyUshort(sc, 0x10, 0xF06D); - MP_WritePhyUshort(sc, 0x14, 0x7F68); - MP_WritePhyUshort(sc, 0x18, 0x7FD9); - MP_WritePhyUshort(sc, 0x1C, 0xF0FF); - MP_WritePhyUshort(sc, 0x1D, 0x3D9C); - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x12, 0xF49F); - MP_WritePhyUshort(sc, 0x13, 0x070B); - MP_WritePhyUshort(sc, 0x1A, 0x05AD); - MP_WritePhyUshort(sc, 0x14, 0x94C0); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x5561); - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8332); - MP_WritePhyUshort(sc, 0x06, 0x5561); - - if (MP_ReadEfuse(sc, 0x01) == 0xb1) { - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x05, 0x669A); - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8330); - MP_WritePhyUshort(sc, 0x06, 0x669A); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - Data = MP_ReadPhyUshort(sc, 0x0D); - if ((Data & 0x00FF) != 0x006C) { - Data &= 0xFF00; - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x0D, Data | 0x0065); - MP_WritePhyUshort(sc, 0x0D, Data | 0x0066); - MP_WritePhyUshort(sc, 0x0D, Data | 0x0067); - MP_WritePhyUshort(sc, 0x0D, Data | 0x0068); - MP_WritePhyUshort(sc, 0x0D, Data | 0x0069); - MP_WritePhyUshort(sc, 0x0D, Data | 0x006A); - MP_WritePhyUshort(sc, 0x0D, Data | 0x006B); - MP_WritePhyUshort(sc, 0x0D, Data | 0x006C); - } - } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x05, 0x2642); - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8330); - MP_WritePhyUshort(sc, 0x06, 0x2642); - } - - if (MP_ReadEfuse(sc, 0x30) == 0x98) { - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x11, MP_ReadPhyUshort(sc, 0x11) & ~0x02); - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x01, MP_ReadPhyUshort(sc, 0x01) | 0x200); - } - else if (MP_ReadEfuse(sc, 0x30) == 0x90) { - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x01, MP_ReadPhyUshort(sc, 0x01) & ~0x200); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x16, 0x5101); - } - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - Data = MP_ReadPhyUshort(sc, 0x02); - Data &= ~0x600; - Data |= 0x100; - MP_WritePhyUshort(sc, 0x02, Data); - Data = MP_ReadPhyUshort(sc, 0x03); - Data &= ~0xE000; - MP_WritePhyUshort(sc, 0x03, Data); - - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x17, 0x0CC0); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - Data = MP_ReadPhyUshort(sc, 0x0F); - Data |= 0x17; - MP_WritePhyUshort(sc, 0x0F, Data); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x001B); - if (MP_ReadPhyUshort(sc, 0x06) == 0xB300) { - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x0080); - MP_WritePhyUshort(sc, 0x05, 0x8000); - MP_WritePhyUshort(sc, 0x06, 0xf8f9); - MP_WritePhyUshort(sc, 0x06, 0xfaee); - MP_WritePhyUshort(sc, 0x06, 0xf8ea); - MP_WritePhyUshort(sc, 0x06, 0x00ee); - MP_WritePhyUshort(sc, 0x06, 0xf8eb); - MP_WritePhyUshort(sc, 0x06, 0x00e2); - MP_WritePhyUshort(sc, 0x06, 0xf87c); - MP_WritePhyUshort(sc, 0x06, 0xe3f8); - MP_WritePhyUshort(sc, 0x06, 0x7da5); - MP_WritePhyUshort(sc, 0x06, 0x1111); - MP_WritePhyUshort(sc, 0x06, 0x12d2); - MP_WritePhyUshort(sc, 0x06, 0x40d6); - MP_WritePhyUshort(sc, 0x06, 0x4444); - MP_WritePhyUshort(sc, 0x06, 0x0281); - MP_WritePhyUshort(sc, 0x06, 0xc6d2); - MP_WritePhyUshort(sc, 0x06, 0xa0d6); - MP_WritePhyUshort(sc, 0x06, 0xaaaa); - MP_WritePhyUshort(sc, 0x06, 0x0281); - MP_WritePhyUshort(sc, 0x06, 0xc6ae); - MP_WritePhyUshort(sc, 0x06, 0x0fa5); - MP_WritePhyUshort(sc, 0x06, 0x4444); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x4da5); - MP_WritePhyUshort(sc, 0x06, 0xaaaa); - MP_WritePhyUshort(sc, 0x06, 0x02ae); - MP_WritePhyUshort(sc, 0x06, 0x47af); - MP_WritePhyUshort(sc, 0x06, 0x81c2); - MP_WritePhyUshort(sc, 0x06, 0xee83); - MP_WritePhyUshort(sc, 0x06, 0x4e00); - MP_WritePhyUshort(sc, 0x06, 0xee83); - MP_WritePhyUshort(sc, 0x06, 0x4d0f); - MP_WritePhyUshort(sc, 0x06, 0xee83); - MP_WritePhyUshort(sc, 0x06, 0x4c0f); - MP_WritePhyUshort(sc, 0x06, 0xee83); - MP_WritePhyUshort(sc, 0x06, 0x4f00); - MP_WritePhyUshort(sc, 0x06, 0xee83); - MP_WritePhyUshort(sc, 0x06, 0x5100); - MP_WritePhyUshort(sc, 0x06, 0xee83); - MP_WritePhyUshort(sc, 0x06, 0x4aff); - MP_WritePhyUshort(sc, 0x06, 0xee83); - MP_WritePhyUshort(sc, 0x06, 0x4bff); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0x30e1); - MP_WritePhyUshort(sc, 0x06, 0x8331); - MP_WritePhyUshort(sc, 0x06, 0x58fe); - MP_WritePhyUshort(sc, 0x06, 0xe4f8); - MP_WritePhyUshort(sc, 0x06, 0x8ae5); - MP_WritePhyUshort(sc, 0x06, 0xf88b); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0x32e1); - MP_WritePhyUshort(sc, 0x06, 0x8333); - MP_WritePhyUshort(sc, 0x06, 0x590f); - MP_WritePhyUshort(sc, 0x06, 0xe283); - MP_WritePhyUshort(sc, 0x06, 0x4d0c); - MP_WritePhyUshort(sc, 0x06, 0x245a); - MP_WritePhyUshort(sc, 0x06, 0xf01e); - MP_WritePhyUshort(sc, 0x06, 0x12e4); - MP_WritePhyUshort(sc, 0x06, 0xf88c); - MP_WritePhyUshort(sc, 0x06, 0xe5f8); - MP_WritePhyUshort(sc, 0x06, 0x8daf); - MP_WritePhyUshort(sc, 0x06, 0x81c2); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0x4f10); - MP_WritePhyUshort(sc, 0x06, 0xe483); - MP_WritePhyUshort(sc, 0x06, 0x4fe0); - MP_WritePhyUshort(sc, 0x06, 0x834e); - MP_WritePhyUshort(sc, 0x06, 0x7800); - MP_WritePhyUshort(sc, 0x06, 0x9f0a); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0x4fa0); - MP_WritePhyUshort(sc, 0x06, 0x10a5); - MP_WritePhyUshort(sc, 0x06, 0xee83); - MP_WritePhyUshort(sc, 0x06, 0x4e01); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0x4e78); - MP_WritePhyUshort(sc, 0x06, 0x059e); - MP_WritePhyUshort(sc, 0x06, 0x9ae0); - MP_WritePhyUshort(sc, 0x06, 0x834e); - MP_WritePhyUshort(sc, 0x06, 0x7804); - MP_WritePhyUshort(sc, 0x06, 0x9e10); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0x4e78); - MP_WritePhyUshort(sc, 0x06, 0x039e); - MP_WritePhyUshort(sc, 0x06, 0x0fe0); - MP_WritePhyUshort(sc, 0x06, 0x834e); - MP_WritePhyUshort(sc, 0x06, 0x7801); - MP_WritePhyUshort(sc, 0x06, 0x9e05); - MP_WritePhyUshort(sc, 0x06, 0xae0c); - MP_WritePhyUshort(sc, 0x06, 0xaf81); - MP_WritePhyUshort(sc, 0x06, 0xa7af); - MP_WritePhyUshort(sc, 0x06, 0x8152); - MP_WritePhyUshort(sc, 0x06, 0xaf81); - MP_WritePhyUshort(sc, 0x06, 0x8baf); - MP_WritePhyUshort(sc, 0x06, 0x81c2); - MP_WritePhyUshort(sc, 0x06, 0xee83); - MP_WritePhyUshort(sc, 0x06, 0x4800); - MP_WritePhyUshort(sc, 0x06, 0xee83); - MP_WritePhyUshort(sc, 0x06, 0x4900); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0x5110); - MP_WritePhyUshort(sc, 0x06, 0xe483); - MP_WritePhyUshort(sc, 0x06, 0x5158); - MP_WritePhyUshort(sc, 0x06, 0x019f); - MP_WritePhyUshort(sc, 0x06, 0xead0); - MP_WritePhyUshort(sc, 0x06, 0x00d1); - MP_WritePhyUshort(sc, 0x06, 0x801f); - MP_WritePhyUshort(sc, 0x06, 0x66e2); - MP_WritePhyUshort(sc, 0x06, 0xf8ea); - MP_WritePhyUshort(sc, 0x06, 0xe3f8); - MP_WritePhyUshort(sc, 0x06, 0xeb5a); - MP_WritePhyUshort(sc, 0x06, 0xf81e); - MP_WritePhyUshort(sc, 0x06, 0x20e6); - MP_WritePhyUshort(sc, 0x06, 0xf8ea); - MP_WritePhyUshort(sc, 0x06, 0xe5f8); - MP_WritePhyUshort(sc, 0x06, 0xebd3); - MP_WritePhyUshort(sc, 0x06, 0x02b3); - MP_WritePhyUshort(sc, 0x06, 0xfee2); - MP_WritePhyUshort(sc, 0x06, 0xf87c); - MP_WritePhyUshort(sc, 0x06, 0xef32); - MP_WritePhyUshort(sc, 0x06, 0x5b80); - MP_WritePhyUshort(sc, 0x06, 0xe3f8); - MP_WritePhyUshort(sc, 0x06, 0x7d9e); - MP_WritePhyUshort(sc, 0x06, 0x037d); - MP_WritePhyUshort(sc, 0x06, 0xffff); - MP_WritePhyUshort(sc, 0x06, 0x0d58); - MP_WritePhyUshort(sc, 0x06, 0x1c55); - MP_WritePhyUshort(sc, 0x06, 0x1a65); - MP_WritePhyUshort(sc, 0x06, 0x11a1); - MP_WritePhyUshort(sc, 0x06, 0x90d3); - MP_WritePhyUshort(sc, 0x06, 0xe283); - MP_WritePhyUshort(sc, 0x06, 0x48e3); - MP_WritePhyUshort(sc, 0x06, 0x8349); - MP_WritePhyUshort(sc, 0x06, 0x1b56); - MP_WritePhyUshort(sc, 0x06, 0xab08); - MP_WritePhyUshort(sc, 0x06, 0xef56); - MP_WritePhyUshort(sc, 0x06, 0xe683); - MP_WritePhyUshort(sc, 0x06, 0x48e7); - MP_WritePhyUshort(sc, 0x06, 0x8349); - MP_WritePhyUshort(sc, 0x06, 0x10d1); - MP_WritePhyUshort(sc, 0x06, 0x801f); - MP_WritePhyUshort(sc, 0x06, 0x66a0); - MP_WritePhyUshort(sc, 0x06, 0x04b9); - MP_WritePhyUshort(sc, 0x06, 0xe283); - MP_WritePhyUshort(sc, 0x06, 0x48e3); - MP_WritePhyUshort(sc, 0x06, 0x8349); - MP_WritePhyUshort(sc, 0x06, 0xef65); - MP_WritePhyUshort(sc, 0x06, 0xe283); - MP_WritePhyUshort(sc, 0x06, 0x4ae3); - MP_WritePhyUshort(sc, 0x06, 0x834b); - MP_WritePhyUshort(sc, 0x06, 0x1b56); - MP_WritePhyUshort(sc, 0x06, 0xaa0e); - MP_WritePhyUshort(sc, 0x06, 0xef56); - MP_WritePhyUshort(sc, 0x06, 0xe683); - MP_WritePhyUshort(sc, 0x06, 0x4ae7); - MP_WritePhyUshort(sc, 0x06, 0x834b); - MP_WritePhyUshort(sc, 0x06, 0xe283); - MP_WritePhyUshort(sc, 0x06, 0x4de6); - MP_WritePhyUshort(sc, 0x06, 0x834c); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0x4da0); - MP_WritePhyUshort(sc, 0x06, 0x000c); - MP_WritePhyUshort(sc, 0x06, 0xaf81); - MP_WritePhyUshort(sc, 0x06, 0x8be0); - MP_WritePhyUshort(sc, 0x06, 0x834d); - MP_WritePhyUshort(sc, 0x06, 0x10e4); - MP_WritePhyUshort(sc, 0x06, 0x834d); - MP_WritePhyUshort(sc, 0x06, 0xae04); - MP_WritePhyUshort(sc, 0x06, 0x80e4); - MP_WritePhyUshort(sc, 0x06, 0x834d); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0x4e78); - MP_WritePhyUshort(sc, 0x06, 0x039e); - MP_WritePhyUshort(sc, 0x06, 0x0be0); - MP_WritePhyUshort(sc, 0x06, 0x834e); - MP_WritePhyUshort(sc, 0x06, 0x7804); - MP_WritePhyUshort(sc, 0x06, 0x9e04); - MP_WritePhyUshort(sc, 0x06, 0xee83); - MP_WritePhyUshort(sc, 0x06, 0x4e02); - MP_WritePhyUshort(sc, 0x06, 0xe083); - MP_WritePhyUshort(sc, 0x06, 0x32e1); - MP_WritePhyUshort(sc, 0x06, 0x8333); - MP_WritePhyUshort(sc, 0x06, 0x590f); - MP_WritePhyUshort(sc, 0x06, 0xe283); - MP_WritePhyUshort(sc, 0x06, 0x4d0c); - MP_WritePhyUshort(sc, 0x06, 0x245a); - MP_WritePhyUshort(sc, 0x06, 0xf01e); - MP_WritePhyUshort(sc, 0x06, 0x12e4); - MP_WritePhyUshort(sc, 0x06, 0xf88c); - MP_WritePhyUshort(sc, 0x06, 0xe5f8); - MP_WritePhyUshort(sc, 0x06, 0x8de0); - MP_WritePhyUshort(sc, 0x06, 0x8330); - MP_WritePhyUshort(sc, 0x06, 0xe183); - MP_WritePhyUshort(sc, 0x06, 0x3168); - MP_WritePhyUshort(sc, 0x06, 0x01e4); - MP_WritePhyUshort(sc, 0x06, 0xf88a); - MP_WritePhyUshort(sc, 0x06, 0xe5f8); - MP_WritePhyUshort(sc, 0x06, 0x8bae); - MP_WritePhyUshort(sc, 0x06, 0x37ee); - MP_WritePhyUshort(sc, 0x06, 0x834e); - MP_WritePhyUshort(sc, 0x06, 0x03e0); - MP_WritePhyUshort(sc, 0x06, 0x834c); - MP_WritePhyUshort(sc, 0x06, 0xe183); - MP_WritePhyUshort(sc, 0x06, 0x4d1b); - MP_WritePhyUshort(sc, 0x06, 0x019e); - MP_WritePhyUshort(sc, 0x06, 0x04aa); - MP_WritePhyUshort(sc, 0x06, 0xa1ae); - MP_WritePhyUshort(sc, 0x06, 0xa8ee); - MP_WritePhyUshort(sc, 0x06, 0x834e); - MP_WritePhyUshort(sc, 0x06, 0x04ee); - MP_WritePhyUshort(sc, 0x06, 0x834f); - MP_WritePhyUshort(sc, 0x06, 0x00ae); - MP_WritePhyUshort(sc, 0x06, 0xabe0); - MP_WritePhyUshort(sc, 0x06, 0x834f); - MP_WritePhyUshort(sc, 0x06, 0x7803); - MP_WritePhyUshort(sc, 0x06, 0x9f14); - MP_WritePhyUshort(sc, 0x06, 0xee83); - MP_WritePhyUshort(sc, 0x06, 0x4e05); - MP_WritePhyUshort(sc, 0x06, 0xd240); - MP_WritePhyUshort(sc, 0x06, 0xd655); - MP_WritePhyUshort(sc, 0x06, 0x5402); - MP_WritePhyUshort(sc, 0x06, 0x81c6); - MP_WritePhyUshort(sc, 0x06, 0xd2a0); - MP_WritePhyUshort(sc, 0x06, 0xd6ba); - MP_WritePhyUshort(sc, 0x06, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x81c6); - MP_WritePhyUshort(sc, 0x06, 0xfefd); - MP_WritePhyUshort(sc, 0x06, 0xfc05); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0xf860); - MP_WritePhyUshort(sc, 0x06, 0xe1f8); - MP_WritePhyUshort(sc, 0x06, 0x6168); - MP_WritePhyUshort(sc, 0x06, 0x02e4); - MP_WritePhyUshort(sc, 0x06, 0xf860); - MP_WritePhyUshort(sc, 0x06, 0xe5f8); - MP_WritePhyUshort(sc, 0x06, 0x61e0); - MP_WritePhyUshort(sc, 0x06, 0xf848); - MP_WritePhyUshort(sc, 0x06, 0xe1f8); - MP_WritePhyUshort(sc, 0x06, 0x4958); - MP_WritePhyUshort(sc, 0x06, 0x0f1e); - MP_WritePhyUshort(sc, 0x06, 0x02e4); - MP_WritePhyUshort(sc, 0x06, 0xf848); - MP_WritePhyUshort(sc, 0x06, 0xe5f8); - MP_WritePhyUshort(sc, 0x06, 0x49d0); - MP_WritePhyUshort(sc, 0x06, 0x0002); - MP_WritePhyUshort(sc, 0x06, 0x820a); - MP_WritePhyUshort(sc, 0x06, 0xbf83); - MP_WritePhyUshort(sc, 0x06, 0x50ef); - MP_WritePhyUshort(sc, 0x06, 0x46dc); - MP_WritePhyUshort(sc, 0x06, 0x19dd); - MP_WritePhyUshort(sc, 0x06, 0xd001); - MP_WritePhyUshort(sc, 0x06, 0x0282); - MP_WritePhyUshort(sc, 0x06, 0x0a02); - MP_WritePhyUshort(sc, 0x06, 0x8226); - MP_WritePhyUshort(sc, 0x06, 0xe0f8); - MP_WritePhyUshort(sc, 0x06, 0x60e1); - MP_WritePhyUshort(sc, 0x06, 0xf861); - MP_WritePhyUshort(sc, 0x06, 0x58fd); - MP_WritePhyUshort(sc, 0x06, 0xe4f8); - MP_WritePhyUshort(sc, 0x06, 0x60e5); - MP_WritePhyUshort(sc, 0x06, 0xf861); - MP_WritePhyUshort(sc, 0x06, 0xfc04); - MP_WritePhyUshort(sc, 0x06, 0xf9fa); - MP_WritePhyUshort(sc, 0x06, 0xfbc6); - MP_WritePhyUshort(sc, 0x06, 0xbff8); - MP_WritePhyUshort(sc, 0x06, 0x40be); - MP_WritePhyUshort(sc, 0x06, 0x8350); - MP_WritePhyUshort(sc, 0x06, 0xa001); - MP_WritePhyUshort(sc, 0x06, 0x0107); - MP_WritePhyUshort(sc, 0x06, 0x1b89); - MP_WritePhyUshort(sc, 0x06, 0xcfd2); - MP_WritePhyUshort(sc, 0x06, 0x08eb); - MP_WritePhyUshort(sc, 0x06, 0xdb19); - MP_WritePhyUshort(sc, 0x06, 0xb2fb); - MP_WritePhyUshort(sc, 0x06, 0xfffe); - MP_WritePhyUshort(sc, 0x06, 0xfd04); - MP_WritePhyUshort(sc, 0x06, 0xf8e0); - MP_WritePhyUshort(sc, 0x06, 0xf848); - MP_WritePhyUshort(sc, 0x06, 0xe1f8); - MP_WritePhyUshort(sc, 0x06, 0x4968); - MP_WritePhyUshort(sc, 0x06, 0x08e4); - MP_WritePhyUshort(sc, 0x06, 0xf848); - MP_WritePhyUshort(sc, 0x06, 0xe5f8); - MP_WritePhyUshort(sc, 0x06, 0x4958); - MP_WritePhyUshort(sc, 0x06, 0xf7e4); - MP_WritePhyUshort(sc, 0x06, 0xf848); - MP_WritePhyUshort(sc, 0x06, 0xe5f8); - MP_WritePhyUshort(sc, 0x06, 0x49fc); - MP_WritePhyUshort(sc, 0x06, 0x044d); - MP_WritePhyUshort(sc, 0x06, 0x2000); - MP_WritePhyUshort(sc, 0x06, 0x024e); - MP_WritePhyUshort(sc, 0x06, 0x2200); - MP_WritePhyUshort(sc, 0x06, 0x024d); - MP_WritePhyUshort(sc, 0x06, 0xdfff); - MP_WritePhyUshort(sc, 0x06, 0x014e); - MP_WritePhyUshort(sc, 0x06, 0xddff); - MP_WritePhyUshort(sc, 0x06, 0x01f8); - MP_WritePhyUshort(sc, 0x06, 0xfafb); - MP_WritePhyUshort(sc, 0x06, 0xef79); - MP_WritePhyUshort(sc, 0x06, 0xbff8); - MP_WritePhyUshort(sc, 0x06, 0x22d8); - MP_WritePhyUshort(sc, 0x06, 0x19d9); - MP_WritePhyUshort(sc, 0x06, 0x5884); - MP_WritePhyUshort(sc, 0x06, 0x9f09); - MP_WritePhyUshort(sc, 0x06, 0xbf82); - MP_WritePhyUshort(sc, 0x06, 0x6dd6); - MP_WritePhyUshort(sc, 0x06, 0x8275); - MP_WritePhyUshort(sc, 0x06, 0x0201); - MP_WritePhyUshort(sc, 0x06, 0x4fef); - MP_WritePhyUshort(sc, 0x06, 0x97ff); - MP_WritePhyUshort(sc, 0x06, 0xfefc); - MP_WritePhyUshort(sc, 0x06, 0x0517); - MP_WritePhyUshort(sc, 0x06, 0xfffe); - MP_WritePhyUshort(sc, 0x06, 0x0117); - MP_WritePhyUshort(sc, 0x06, 0x0001); - MP_WritePhyUshort(sc, 0x06, 0x0200); - MP_WritePhyUshort(sc, 0x05, 0x83d8); - MP_WritePhyUshort(sc, 0x06, 0x8000); - MP_WritePhyUshort(sc, 0x05, 0x83d6); - MP_WritePhyUshort(sc, 0x06, 0x824f); - MP_WritePhyUshort(sc, 0x02, 0x2010); - MP_WritePhyUshort(sc, 0x03, 0xdc00); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x0b, 0x0600); - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0xfff6); - MP_WritePhyUshort(sc, 0x06, 0x00fc); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - } - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0xF880); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else if (sc->re_type == MACFG_36 || sc->re_type == MACFG_37) { - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x0023); - Data = MP_ReadPhyUshort(sc, 0x17) | 0x0006; - if (sc->RequiredSecLanDonglePatch) - Data &= ~(BIT_2); - else - Data |= (BIT_2); - MP_WritePhyUshort(sc, 0x17, Data); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8b80); - MP_WritePhyUshort(sc, 0x06, 0xc896); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x0B, 0x6C20); - MP_WritePhyUshort(sc, 0x07, 0x2872); - MP_WritePhyUshort(sc, 0x1C, 0xEFFF); - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x14, 0x6420); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - Data = MP_ReadPhyUshort(sc, 0x08) & 0x00FF; - MP_WritePhyUshort(sc, 0x08, Data | 0x8000); - - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x002D); - Data = MP_ReadPhyUshort(sc, 0x18); - MP_WritePhyUshort(sc, 0x18, Data | 0x0050); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - Data = MP_ReadPhyUshort(sc, 0x14); - MP_WritePhyUshort(sc, 0x14, Data | 0x8000); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x00, 0x080B); - MP_WritePhyUshort(sc, 0x0B, 0x09D7); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x15, 0x1006); - - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x002F); - MP_WritePhyUshort(sc, 0x15, 0x1919); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x19, 0x7F46); - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8AD2); - MP_WritePhyUshort(sc, 0x06, 0x6810); - MP_WritePhyUshort(sc, 0x05, 0x8AD4); - MP_WritePhyUshort(sc, 0x06, 0x8002); - MP_WritePhyUshort(sc, 0x05, 0x8ADE); - MP_WritePhyUshort(sc, 0x06, 0x8025); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else if (sc->re_type == MACFG_38) { - CSR_WRITE_1(sc, 0x6E, CSR_READ_1(sc, 0x6E) | (1 << 6)); - - Data_u32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); - Data_u32 &= ~BIT_1; - re_eri_write(sc, 0x1D0, 4, Data_u32, ERIAR_ExGMAC); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B80); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_2 | BIT_1; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0004); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x002D); - Data = MP_ReadPhyUshort(sc, 0x18); - Data |= BIT_4; - MP_WritePhyUshort(sc, 0x18, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0002); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - Data = MP_ReadPhyUshort(sc, 0x14); - Data |= BIT_15; - MP_WritePhyUshort(sc, 0x14, Data); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B86); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_0; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x0B, 0x6C14); - MP_WritePhyUshort(sc, 0x14, 0x7F3D); - MP_WritePhyUshort(sc, 0x1C, 0xFAFE); - MP_WritePhyUshort(sc, 0x08, 0x07C5); - MP_WritePhyUshort(sc, 0x10, 0xF090); - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x14, 0x641A); - MP_WritePhyUshort(sc, 0x1A, 0x0606); - MP_WritePhyUshort(sc, 0x12, 0xF480); - MP_WritePhyUshort(sc, 0x13, 0x0747); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0004); - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x0078); - MP_WritePhyUshort(sc, 0x15, 0xA408); - MP_WritePhyUshort(sc, 0x17, 0x5100); - MP_WritePhyUshort(sc, 0x19, 0x0008); - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x0D, 0x0207); - MP_WritePhyUshort(sc, 0x02, 0x5FD0); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0004); - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x00A1); - Data = MP_ReadPhyUshort(sc, 0x1A); - Data &= ~BIT_2; - MP_WritePhyUshort(sc, 0x1A, Data); - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0004); - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x002D); - Data = MP_ReadPhyUshort(sc, 0x16); - Data |= BIT_5; - MP_WritePhyUshort(sc, 0x16, Data); - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0004); - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x00AC); - MP_WritePhyUshort(sc, 0x18, 0x0006); - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x09, 0xA20F); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B85); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_14; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B54); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_11; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8B5D); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_11; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A7C); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A7F); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A82); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A85); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A88); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B85); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_15; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0003); - Data = MP_ReadPhyUshort(sc, 0x19); - Data &= ~BIT_0; - MP_WritePhyUshort(sc, 0x19, Data); - Data = MP_ReadPhyUshort(sc, 0x10); - Data &= ~BIT_10; - MP_WritePhyUshort(sc, 0x10, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - } - else if (sc->re_type == MACFG_39) { - Data_u32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); - Data_u32 &= ~BIT_1; - re_eri_write(sc, 0x1D0, 4, Data_u32, ERIAR_ExGMAC); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B80); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_2 | BIT_1; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B85); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_15; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0004); - MP_WritePhyUshort(sc, 0x1f, 0x0007); - MP_WritePhyUshort(sc, 0x1e, 0x002D); - Data = MP_ReadPhyUshort(sc, 0x18); - Data |= BIT_4; - MP_WritePhyUshort(sc, 0x18, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0002); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - Data = MP_ReadPhyUshort(sc, 0x14); - Data |= BIT_15; - MP_WritePhyUshort(sc, 0x14, Data); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B86); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_0; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0004); - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x00AC); - MP_WritePhyUshort(sc, 0x18, 0x0006); - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x09, 0xA20F); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B85); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_14; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B54); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_11; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8B5D); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_11; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A7C); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A7F); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A82); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A85); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A88); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0003); - Data = MP_ReadPhyUshort(sc, 0x19); - Data &= ~BIT_0; - MP_WritePhyUshort(sc, 0x19, Data); - Data = MP_ReadPhyUshort(sc, 0x10); - Data &= ~BIT_10; - MP_WritePhyUshort(sc, 0x10, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - } - else if (sc->re_type == MACFG_41) { - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x11, MP_ReadPhyUshort(sc, 0x11) | 0x1000); - MP_WritePhyUshort(sc, 0x1F, 0x0002); - MP_WritePhyUshort(sc, 0x0F, MP_ReadPhyUshort(sc, 0x0F) | 0x0003); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - for (Data_u32 = 0x800E0068; Data_u32 < 0x800E006D; Data_u32++) { - CSR_WRITE_4(sc, 0xF8, Data_u32); - for (i = 0; i < 10; i++) { - DELAY(400); - if ((CSR_READ_4(sc, 0xF8) & 0x80000000) == 0) - break; - } - } - } - else if (sc->re_type == MACFG_42 || sc->re_type == MACFG_43) { - Data_u32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); - Data_u32 &= 0xFFFF0000; - re_eri_write(sc, 0x1D0, 4, Data_u32, ERIAR_ExGMAC); - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x0310); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0004); - MP_WritePhyUshort(sc, 0x1f, 0x0004); - MP_WritePhyUshort(sc, 0x19, 0x7070); - MP_WritePhyUshort(sc, 0x1c, 0x0600); - MP_WritePhyUshort(sc, 0x1d, 0x9700); - MP_WritePhyUshort(sc, 0x1d, 0x7d00); - MP_WritePhyUshort(sc, 0x1d, 0x6900); - MP_WritePhyUshort(sc, 0x1d, 0x7d00); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x4899); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x8000); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x4007); - MP_WritePhyUshort(sc, 0x1d, 0x4400); - MP_WritePhyUshort(sc, 0x1d, 0x4800); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x5310); - MP_WritePhyUshort(sc, 0x1d, 0x6000); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x6736); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x571f); - MP_WritePhyUshort(sc, 0x1d, 0x5ffb); - MP_WritePhyUshort(sc, 0x1d, 0xaa03); - MP_WritePhyUshort(sc, 0x1d, 0x5b58); - MP_WritePhyUshort(sc, 0x1d, 0x301e); - MP_WritePhyUshort(sc, 0x1d, 0x5b64); - MP_WritePhyUshort(sc, 0x1d, 0xa6fc); - MP_WritePhyUshort(sc, 0x1d, 0xdcdb); - MP_WritePhyUshort(sc, 0x1d, 0x0014); - MP_WritePhyUshort(sc, 0x1d, 0xd9a9); - MP_WritePhyUshort(sc, 0x1d, 0x0013); - MP_WritePhyUshort(sc, 0x1d, 0xd16b); - MP_WritePhyUshort(sc, 0x1d, 0x0011); - MP_WritePhyUshort(sc, 0x1d, 0xb40e); - MP_WritePhyUshort(sc, 0x1d, 0xd06b); - MP_WritePhyUshort(sc, 0x1d, 0x000c); - MP_WritePhyUshort(sc, 0x1d, 0xb206); - MP_WritePhyUshort(sc, 0x1d, 0x7c01); - MP_WritePhyUshort(sc, 0x1d, 0x5800); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x5c00); - MP_WritePhyUshort(sc, 0x1d, 0x301a); - MP_WritePhyUshort(sc, 0x1d, 0x7c01); - MP_WritePhyUshort(sc, 0x1d, 0x5801); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x5c04); - MP_WritePhyUshort(sc, 0x1d, 0x301e); - MP_WritePhyUshort(sc, 0x1d, 0x314d); - MP_WritePhyUshort(sc, 0x1d, 0x31f0); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4c20); - MP_WritePhyUshort(sc, 0x1d, 0x6004); - MP_WritePhyUshort(sc, 0x1d, 0x5310); - MP_WritePhyUshort(sc, 0x1d, 0x4833); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c08); - MP_WritePhyUshort(sc, 0x1d, 0x8300); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x6600); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0xb90c); - MP_WritePhyUshort(sc, 0x1d, 0x30d3); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4de0); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x6000); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x6736); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x5310); - MP_WritePhyUshort(sc, 0x1d, 0x300b); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4c60); - MP_WritePhyUshort(sc, 0x1d, 0x6803); - MP_WritePhyUshort(sc, 0x1d, 0x6520); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0xaf03); - MP_WritePhyUshort(sc, 0x1d, 0x6015); - MP_WritePhyUshort(sc, 0x1d, 0x3059); - MP_WritePhyUshort(sc, 0x1d, 0x6017); - MP_WritePhyUshort(sc, 0x1d, 0x57e0); - MP_WritePhyUshort(sc, 0x1d, 0x580c); - MP_WritePhyUshort(sc, 0x1d, 0x588c); - MP_WritePhyUshort(sc, 0x1d, 0x7ffc); - MP_WritePhyUshort(sc, 0x1d, 0x5fa3); - MP_WritePhyUshort(sc, 0x1d, 0x4827); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c10); - MP_WritePhyUshort(sc, 0x1d, 0x8400); - MP_WritePhyUshort(sc, 0x1d, 0x7c30); - MP_WritePhyUshort(sc, 0x1d, 0x6020); - MP_WritePhyUshort(sc, 0x1d, 0x48bf); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0xad09); - MP_WritePhyUshort(sc, 0x1d, 0x7c03); - MP_WritePhyUshort(sc, 0x1d, 0x5c03); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x4400); - MP_WritePhyUshort(sc, 0x1d, 0xad2c); - MP_WritePhyUshort(sc, 0x1d, 0xd6cf); - MP_WritePhyUshort(sc, 0x1d, 0x0002); - MP_WritePhyUshort(sc, 0x1d, 0x80f4); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4c80); - MP_WritePhyUshort(sc, 0x1d, 0x7c20); - MP_WritePhyUshort(sc, 0x1d, 0x5c20); - MP_WritePhyUshort(sc, 0x1d, 0x481e); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c02); - MP_WritePhyUshort(sc, 0x1d, 0xad0a); - MP_WritePhyUshort(sc, 0x1d, 0x7c03); - MP_WritePhyUshort(sc, 0x1d, 0x5c03); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x4400); - MP_WritePhyUshort(sc, 0x1d, 0x5310); - MP_WritePhyUshort(sc, 0x1d, 0x8d02); - MP_WritePhyUshort(sc, 0x1d, 0x4401); - MP_WritePhyUshort(sc, 0x1d, 0x81f4); - MP_WritePhyUshort(sc, 0x1d, 0x3114); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4d00); - MP_WritePhyUshort(sc, 0x1d, 0x4832); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c10); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x6000); - MP_WritePhyUshort(sc, 0x1d, 0xa4b7); - MP_WritePhyUshort(sc, 0x1d, 0xd9b3); - MP_WritePhyUshort(sc, 0x1d, 0xfffe); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4d20); - MP_WritePhyUshort(sc, 0x1d, 0x7e00); - MP_WritePhyUshort(sc, 0x1d, 0x6200); - MP_WritePhyUshort(sc, 0x1d, 0x3045); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4d40); - MP_WritePhyUshort(sc, 0x1d, 0x7c40); - MP_WritePhyUshort(sc, 0x1d, 0x6000); - MP_WritePhyUshort(sc, 0x1d, 0x4401); - MP_WritePhyUshort(sc, 0x1d, 0x5210); - MP_WritePhyUshort(sc, 0x1d, 0x4833); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x4c08); - MP_WritePhyUshort(sc, 0x1d, 0x8300); - MP_WritePhyUshort(sc, 0x1d, 0x5f80); - MP_WritePhyUshort(sc, 0x1d, 0x55e0); - MP_WritePhyUshort(sc, 0x1d, 0xc06f); - MP_WritePhyUshort(sc, 0x1d, 0x0005); - MP_WritePhyUshort(sc, 0x1d, 0xd9b3); - MP_WritePhyUshort(sc, 0x1d, 0xfffd); - MP_WritePhyUshort(sc, 0x1d, 0x7c40); - MP_WritePhyUshort(sc, 0x1d, 0x6040); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4d60); - MP_WritePhyUshort(sc, 0x1d, 0x57e0); - MP_WritePhyUshort(sc, 0x1d, 0x4814); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x4c04); - MP_WritePhyUshort(sc, 0x1d, 0x8200); - MP_WritePhyUshort(sc, 0x1d, 0x7c03); - MP_WritePhyUshort(sc, 0x1d, 0x5c03); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0xad02); - MP_WritePhyUshort(sc, 0x1d, 0x4400); - MP_WritePhyUshort(sc, 0x1d, 0xc0e9); - MP_WritePhyUshort(sc, 0x1d, 0x0003); - MP_WritePhyUshort(sc, 0x1d, 0xadd8); - MP_WritePhyUshort(sc, 0x1d, 0x30c6); - MP_WritePhyUshort(sc, 0x1d, 0x3078); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4dc0); - MP_WritePhyUshort(sc, 0x1d, 0x6730); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0xd09d); - MP_WritePhyUshort(sc, 0x1d, 0x0002); - MP_WritePhyUshort(sc, 0x1d, 0xb4fe); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4d80); - MP_WritePhyUshort(sc, 0x1d, 0x6802); - MP_WritePhyUshort(sc, 0x1d, 0x6600); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x6000); - MP_WritePhyUshort(sc, 0x1d, 0x486c); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x9503); - MP_WritePhyUshort(sc, 0x1d, 0x7e00); - MP_WritePhyUshort(sc, 0x1d, 0x6200); - MP_WritePhyUshort(sc, 0x1d, 0x571f); - MP_WritePhyUshort(sc, 0x1d, 0x5fbb); - MP_WritePhyUshort(sc, 0x1d, 0xaa03); - MP_WritePhyUshort(sc, 0x1d, 0x5b58); - MP_WritePhyUshort(sc, 0x1d, 0x30e9); - MP_WritePhyUshort(sc, 0x1d, 0x5b64); - MP_WritePhyUshort(sc, 0x1d, 0xcdab); - MP_WritePhyUshort(sc, 0x1d, 0xff5b); - MP_WritePhyUshort(sc, 0x1d, 0xcd8d); - MP_WritePhyUshort(sc, 0x1d, 0xff59); - MP_WritePhyUshort(sc, 0x1d, 0xd96b); - MP_WritePhyUshort(sc, 0x1d, 0xff57); - MP_WritePhyUshort(sc, 0x1d, 0xd0a0); - MP_WritePhyUshort(sc, 0x1d, 0xffdb); - MP_WritePhyUshort(sc, 0x1d, 0xcba0); - MP_WritePhyUshort(sc, 0x1d, 0x0003); - MP_WritePhyUshort(sc, 0x1d, 0x80f0); - MP_WritePhyUshort(sc, 0x1d, 0x30f6); - MP_WritePhyUshort(sc, 0x1d, 0x3109); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4ce0); - MP_WritePhyUshort(sc, 0x1d, 0x7d30); - MP_WritePhyUshort(sc, 0x1d, 0x6530); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x7ce0); - MP_WritePhyUshort(sc, 0x1d, 0x5400); - MP_WritePhyUshort(sc, 0x1d, 0x4832); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c08); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x6008); - MP_WritePhyUshort(sc, 0x1d, 0x8300); - MP_WritePhyUshort(sc, 0x1d, 0xb902); - MP_WritePhyUshort(sc, 0x1d, 0x30d3); - MP_WritePhyUshort(sc, 0x1d, 0x308f); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4da0); - MP_WritePhyUshort(sc, 0x1d, 0x57a0); - MP_WritePhyUshort(sc, 0x1d, 0x590c); - MP_WritePhyUshort(sc, 0x1d, 0x5fa2); - MP_WritePhyUshort(sc, 0x1d, 0xcba4); - MP_WritePhyUshort(sc, 0x1d, 0x0005); - MP_WritePhyUshort(sc, 0x1d, 0xcd8d); - MP_WritePhyUshort(sc, 0x1d, 0x0003); - MP_WritePhyUshort(sc, 0x1d, 0x80fc); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4ca0); - MP_WritePhyUshort(sc, 0x1d, 0xb603); - MP_WritePhyUshort(sc, 0x1d, 0x7c10); - MP_WritePhyUshort(sc, 0x1d, 0x6010); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x541f); - MP_WritePhyUshort(sc, 0x1d, 0x7ffc); - MP_WritePhyUshort(sc, 0x1d, 0x5fb3); - MP_WritePhyUshort(sc, 0x1d, 0x9403); - MP_WritePhyUshort(sc, 0x1d, 0x7c03); - MP_WritePhyUshort(sc, 0x1d, 0x5c03); - MP_WritePhyUshort(sc, 0x1d, 0xaa05); - MP_WritePhyUshort(sc, 0x1d, 0x7c80); - MP_WritePhyUshort(sc, 0x1d, 0x5800); - MP_WritePhyUshort(sc, 0x1d, 0x5b58); - MP_WritePhyUshort(sc, 0x1d, 0x3128); - MP_WritePhyUshort(sc, 0x1d, 0x7c80); - MP_WritePhyUshort(sc, 0x1d, 0x5800); - MP_WritePhyUshort(sc, 0x1d, 0x5b64); - MP_WritePhyUshort(sc, 0x1d, 0x4827); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c10); - MP_WritePhyUshort(sc, 0x1d, 0x8400); - MP_WritePhyUshort(sc, 0x1d, 0x7c10); - MP_WritePhyUshort(sc, 0x1d, 0x6000); - MP_WritePhyUshort(sc, 0x1d, 0x4824); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c04); - MP_WritePhyUshort(sc, 0x1d, 0x8200); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4cc0); - MP_WritePhyUshort(sc, 0x1d, 0x7d00); - MP_WritePhyUshort(sc, 0x1d, 0x6400); - MP_WritePhyUshort(sc, 0x1d, 0x7ffc); - MP_WritePhyUshort(sc, 0x1d, 0x5fbb); - MP_WritePhyUshort(sc, 0x1d, 0x4824); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c04); - MP_WritePhyUshort(sc, 0x1d, 0x8200); - MP_WritePhyUshort(sc, 0x1d, 0x7e00); - MP_WritePhyUshort(sc, 0x1d, 0x6a00); - MP_WritePhyUshort(sc, 0x1d, 0x4824); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c04); - MP_WritePhyUshort(sc, 0x1d, 0x8200); - MP_WritePhyUshort(sc, 0x1d, 0x7e00); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x30f6); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4e00); - MP_WritePhyUshort(sc, 0x1d, 0x4007); - MP_WritePhyUshort(sc, 0x1d, 0x4400); - MP_WritePhyUshort(sc, 0x1d, 0x5310); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x6736); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x570f); - MP_WritePhyUshort(sc, 0x1d, 0x5fff); - MP_WritePhyUshort(sc, 0x1d, 0xaa03); - MP_WritePhyUshort(sc, 0x1d, 0x585b); - MP_WritePhyUshort(sc, 0x1d, 0x315c); - MP_WritePhyUshort(sc, 0x1d, 0x5867); - MP_WritePhyUshort(sc, 0x1d, 0x9402); - MP_WritePhyUshort(sc, 0x1d, 0x6200); - MP_WritePhyUshort(sc, 0x1d, 0xcda3); - MP_WritePhyUshort(sc, 0x1d, 0x009d); - MP_WritePhyUshort(sc, 0x1d, 0xcd85); - MP_WritePhyUshort(sc, 0x1d, 0x009b); - MP_WritePhyUshort(sc, 0x1d, 0xd96b); - MP_WritePhyUshort(sc, 0x1d, 0x0099); - MP_WritePhyUshort(sc, 0x1d, 0x96e9); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x6736); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4e20); - MP_WritePhyUshort(sc, 0x1d, 0x96e4); - MP_WritePhyUshort(sc, 0x1d, 0x8b04); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x5008); - MP_WritePhyUshort(sc, 0x1d, 0xab03); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x5000); - MP_WritePhyUshort(sc, 0x1d, 0x6801); - MP_WritePhyUshort(sc, 0x1d, 0x6776); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0xdb7c); - MP_WritePhyUshort(sc, 0x1d, 0xfff0); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x7fe1); - MP_WritePhyUshort(sc, 0x1d, 0x4e40); - MP_WritePhyUshort(sc, 0x1d, 0x4837); - MP_WritePhyUshort(sc, 0x1d, 0x4418); - MP_WritePhyUshort(sc, 0x1d, 0x41c7); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4e40); - MP_WritePhyUshort(sc, 0x1d, 0x7c40); - MP_WritePhyUshort(sc, 0x1d, 0x5400); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x8fc9); - MP_WritePhyUshort(sc, 0x1d, 0xd2a0); - MP_WritePhyUshort(sc, 0x1d, 0x004a); - MP_WritePhyUshort(sc, 0x1d, 0x9203); - MP_WritePhyUshort(sc, 0x1d, 0xa041); - MP_WritePhyUshort(sc, 0x1d, 0x3184); - MP_WritePhyUshort(sc, 0x1d, 0x7fe1); - MP_WritePhyUshort(sc, 0x1d, 0x4e60); - MP_WritePhyUshort(sc, 0x1d, 0x489c); - MP_WritePhyUshort(sc, 0x1d, 0x4628); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4e60); - MP_WritePhyUshort(sc, 0x1d, 0x7e28); - MP_WritePhyUshort(sc, 0x1d, 0x4628); - MP_WritePhyUshort(sc, 0x1d, 0x7c40); - MP_WritePhyUshort(sc, 0x1d, 0x5400); - MP_WritePhyUshort(sc, 0x1d, 0x7c01); - MP_WritePhyUshort(sc, 0x1d, 0x5800); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x5c00); - MP_WritePhyUshort(sc, 0x1d, 0x41e8); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x8fb0); - MP_WritePhyUshort(sc, 0x1d, 0xb241); - MP_WritePhyUshort(sc, 0x1d, 0xa02a); - MP_WritePhyUshort(sc, 0x1d, 0x319d); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4ea0); - MP_WritePhyUshort(sc, 0x1d, 0x7c02); - MP_WritePhyUshort(sc, 0x1d, 0x4402); - MP_WritePhyUshort(sc, 0x1d, 0x4448); - MP_WritePhyUshort(sc, 0x1d, 0x4894); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c03); - MP_WritePhyUshort(sc, 0x1d, 0x4824); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c07); - MP_WritePhyUshort(sc, 0x1d, 0x41ef); - MP_WritePhyUshort(sc, 0x1d, 0x41ff); - MP_WritePhyUshort(sc, 0x1d, 0x4891); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c07); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c17); - MP_WritePhyUshort(sc, 0x1d, 0x8400); - MP_WritePhyUshort(sc, 0x1d, 0x8ef8); - MP_WritePhyUshort(sc, 0x1d, 0x41c7); - MP_WritePhyUshort(sc, 0x1d, 0x8f95); - MP_WritePhyUshort(sc, 0x1d, 0x92d5); - MP_WritePhyUshort(sc, 0x1d, 0xa10f); - MP_WritePhyUshort(sc, 0x1d, 0xd480); - MP_WritePhyUshort(sc, 0x1d, 0x0008); - MP_WritePhyUshort(sc, 0x1d, 0xd580); - MP_WritePhyUshort(sc, 0x1d, 0xffb9); - MP_WritePhyUshort(sc, 0x1d, 0xa202); - MP_WritePhyUshort(sc, 0x1d, 0x31b8); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x4404); - MP_WritePhyUshort(sc, 0x1d, 0x31b8); - MP_WritePhyUshort(sc, 0x1d, 0xd484); - MP_WritePhyUshort(sc, 0x1d, 0xfff3); - MP_WritePhyUshort(sc, 0x1d, 0xd484); - MP_WritePhyUshort(sc, 0x1d, 0xfff1); - MP_WritePhyUshort(sc, 0x1d, 0x314d); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4ee0); - MP_WritePhyUshort(sc, 0x1d, 0x7c40); - MP_WritePhyUshort(sc, 0x1d, 0x5400); - MP_WritePhyUshort(sc, 0x1d, 0x4488); - MP_WritePhyUshort(sc, 0x1d, 0x41cf); - MP_WritePhyUshort(sc, 0x1d, 0x314d); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4ec0); - MP_WritePhyUshort(sc, 0x1d, 0x48f3); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c09); - MP_WritePhyUshort(sc, 0x1d, 0x4508); - MP_WritePhyUshort(sc, 0x1d, 0x41c7); - MP_WritePhyUshort(sc, 0x1d, 0x8f24); - MP_WritePhyUshort(sc, 0x1d, 0xd218); - MP_WritePhyUshort(sc, 0x1d, 0x0022); - MP_WritePhyUshort(sc, 0x1d, 0xd2a4); - MP_WritePhyUshort(sc, 0x1d, 0xff9f); - MP_WritePhyUshort(sc, 0x1d, 0x31d9); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4e80); - MP_WritePhyUshort(sc, 0x1d, 0x4832); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c11); - MP_WritePhyUshort(sc, 0x1d, 0x4428); - MP_WritePhyUshort(sc, 0x1d, 0x7c40); - MP_WritePhyUshort(sc, 0x1d, 0x5440); - MP_WritePhyUshort(sc, 0x1d, 0x7c01); - MP_WritePhyUshort(sc, 0x1d, 0x5801); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x5c04); - MP_WritePhyUshort(sc, 0x1d, 0x41e8); - MP_WritePhyUshort(sc, 0x1d, 0xa4b3); - MP_WritePhyUshort(sc, 0x1d, 0x31ee); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x6736); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x570f); - MP_WritePhyUshort(sc, 0x1d, 0x5fff); - MP_WritePhyUshort(sc, 0x1d, 0xaa03); - MP_WritePhyUshort(sc, 0x1d, 0x585b); - MP_WritePhyUshort(sc, 0x1d, 0x31fa); - MP_WritePhyUshort(sc, 0x1d, 0x5867); - MP_WritePhyUshort(sc, 0x1d, 0xbcf6); - MP_WritePhyUshort(sc, 0x1d, 0x300b); - MP_WritePhyUshort(sc, 0x1d, 0x300b); - MP_WritePhyUshort(sc, 0x1d, 0x314d); - MP_WritePhyUshort(sc, 0x1f, 0x0004); - MP_WritePhyUshort(sc, 0x1c, 0x0200); - MP_WritePhyUshort(sc, 0x19, 0x7030); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - if (CSR_READ_1(sc, 0xEF) & 0x08) { - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x1A, 0x0004); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x1A, 0x0000); - MP_WritePhyUshort(sc, 0x1F, 0x0000); + switch (sc->re_type) { + case MACFG_59: + case MACFG_60: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + case MACFG_80: + case MACFG_81: + re_disable_ocp_phy_power_saving(sc); + break; } - if (CSR_READ_1(sc, 0xEF) & 0x10) { - MP_WritePhyUshort(sc, 0x1F, 0x0004); - MP_WritePhyUshort(sc, 0x1C, 0x0000); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0004); - MP_WritePhyUshort(sc, 0x1C, 0x0200); - MP_WritePhyUshort(sc, 0x1F, 0x0000); + if (HW_DASH_SUPPORT_TYPE_3(sc) && sc->HwPkgDet == 0x06) + return; + + re_set_hw_phy_before_init_phy_mcu(sc); + + if (FALSE == re_phy_ram_code_check(sc)) { + re_set_phy_ram_code_check_fail_flag(sc); + return; } - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x15, 0x7701); - MP_WritePhyUshort(sc, 0x1F, 0x0000); + re_init_hw_phy_mcu(sc); + + re_mdio_write(sc, 0x1F, 0x0000); + + if (sc->re_type == MACFG_3) { + CSR_WRITE_1(sc, 0x82, CSR_READ_1(sc, 0x82)|BIT_0); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0b, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x06, 0x006e); + re_mdio_write(sc, 0x08, 0x0708); + re_mdio_write(sc, 0x15, 0x4000); + re_mdio_write(sc, 0x18, 0x65c7); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x03, 0x00a1); + re_mdio_write(sc, 0x02, 0x0008); + re_mdio_write(sc, 0x01, 0x0120); + re_mdio_write(sc, 0x00, 0x1000); + re_mdio_write(sc, 0x04, 0x0800); + re_mdio_write(sc, 0x04, 0x0000); + + re_mdio_write(sc, 0x03, 0xff41); + re_mdio_write(sc, 0x02, 0xdf60); + re_mdio_write(sc, 0x01, 0x0140); + re_mdio_write(sc, 0x00, 0x0077); + re_mdio_write(sc, 0x04, 0x7800); + re_mdio_write(sc, 0x04, 0x7000); + + re_mdio_write(sc, 0x03, 0x802f); + re_mdio_write(sc, 0x02, 0x4f02); + re_mdio_write(sc, 0x01, 0x0409); + re_mdio_write(sc, 0x00, 0xf0f9); + re_mdio_write(sc, 0x04, 0x9800); + re_mdio_write(sc, 0x04, 0x9000); + + re_mdio_write(sc, 0x03, 0xdf01); + re_mdio_write(sc, 0x02, 0xdf20); + re_mdio_write(sc, 0x01, 0xff95); + re_mdio_write(sc, 0x00, 0xba00); + re_mdio_write(sc, 0x04, 0xa800); + re_mdio_write(sc, 0x04, 0xa000); + + re_mdio_write(sc, 0x03, 0xff41); + re_mdio_write(sc, 0x02, 0xdf20); + re_mdio_write(sc, 0x01, 0x0140); + re_mdio_write(sc, 0x00, 0x00bb); + re_mdio_write(sc, 0x04, 0xb800); + re_mdio_write(sc, 0x04, 0xb000); + + re_mdio_write(sc, 0x03, 0xdf41); + re_mdio_write(sc, 0x02, 0xdc60); + re_mdio_write(sc, 0x01, 0x6340); + re_mdio_write(sc, 0x00, 0x007d); + re_mdio_write(sc, 0x04, 0xd800); + re_mdio_write(sc, 0x04, 0xd000); + + re_mdio_write(sc, 0x03, 0xdf01); + re_mdio_write(sc, 0x02, 0xdf20); + re_mdio_write(sc, 0x01, 0x100a); + re_mdio_write(sc, 0x00, 0xa0ff); + re_mdio_write(sc, 0x04, 0xf800); + re_mdio_write(sc, 0x04, 0xf000); + + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x0b, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + + CSR_WRITE_1(sc, 0x82, 0x0d); + } else if (sc->re_type == MACFG_4) { + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x01, 0x90D0); + re_mdio_write(sc, 0x1f, 0x0000); + // re_mdio_write(sc, 0x1e, 0x8c00); /* PHY link down with some Giga switch */ + } else if (sc->re_type == MACFG_5) { + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x04, 0x0000); + re_mdio_write(sc, 0x03, 0x00a1); + re_mdio_write(sc, 0x02, 0x0008); + re_mdio_write(sc, 0x01, 0x0120); + re_mdio_write(sc, 0x00, 0x1000); + re_mdio_write(sc, 0x04, 0x0800); + + re_mdio_write(sc, 0x04, 0x9000); + re_mdio_write(sc, 0x03, 0x802f); + re_mdio_write(sc, 0x02, 0x4f02); + re_mdio_write(sc, 0x01, 0x0409); + re_mdio_write(sc, 0x00, 0xf099); + re_mdio_write(sc, 0x04, 0x9800); + + re_mdio_write(sc, 0x04, 0xa000); + re_mdio_write(sc, 0x03, 0xdf01); + re_mdio_write(sc, 0x02, 0xdf20); + re_mdio_write(sc, 0x01, 0xff95); + re_mdio_write(sc, 0x00, 0xba00); + re_mdio_write(sc, 0x04, 0xa800); + + re_mdio_write(sc, 0x04, 0xf000); + re_mdio_write(sc, 0x03, 0xdf01); + re_mdio_write(sc, 0x02, 0xdf20); + re_mdio_write(sc, 0x01, 0x101a); + re_mdio_write(sc, 0x00, 0xa0ff); + re_mdio_write(sc, 0x04, 0xf800); + re_mdio_write(sc, 0x04, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x10, 0xf41b); + re_mdio_write(sc, 0x14, 0xfb54); + re_mdio_write(sc, 0x18, 0xf5c7); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x17, 0x0CC0); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x10, 0xf01b); + + } else if (sc->re_type == MACFG_6) { + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x04, 0x0000); + re_mdio_write(sc, 0x03, 0x00a1); + re_mdio_write(sc, 0x02, 0x0008); + re_mdio_write(sc, 0x01, 0x0120); + re_mdio_write(sc, 0x00, 0x1000); + re_mdio_write(sc, 0x04, 0x0800); + + re_mdio_write(sc, 0x04, 0x9000); + re_mdio_write(sc, 0x03, 0x802f); + re_mdio_write(sc, 0x02, 0x4f02); + re_mdio_write(sc, 0x01, 0x0409); + re_mdio_write(sc, 0x00, 0xf099); + re_mdio_write(sc, 0x04, 0x9800); + + re_mdio_write(sc, 0x04, 0xa000); + re_mdio_write(sc, 0x03, 0xdf01); + re_mdio_write(sc, 0x02, 0xdf20); + re_mdio_write(sc, 0x01, 0xff95); + re_mdio_write(sc, 0x00, 0xba00); + re_mdio_write(sc, 0x04, 0xa800); + + re_mdio_write(sc, 0x04, 0xf000); + re_mdio_write(sc, 0x03, 0xdf01); + re_mdio_write(sc, 0x02, 0xdf20); + re_mdio_write(sc, 0x01, 0x101a); + re_mdio_write(sc, 0x00, 0xa0ff); + re_mdio_write(sc, 0x04, 0xf800); + re_mdio_write(sc, 0x04, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x0b, 0x8480); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x18, 0x67c7); + re_mdio_write(sc, 0x04, 0x2000); + re_mdio_write(sc, 0x03, 0x002f); + re_mdio_write(sc, 0x02, 0x4360); + re_mdio_write(sc, 0x01, 0x0109); + re_mdio_write(sc, 0x00, 0x3022); + re_mdio_write(sc, 0x04, 0x2800); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x17, 0x0CC0); + } else if (sc->re_type == MACFG_14) { + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x11, re_mdio_read(sc, 0x11) | 0x1000); + re_mdio_write(sc, 0x19, re_mdio_read(sc, 0x19) | 0x2000); + re_mdio_write(sc, 0x10, re_mdio_read(sc, 0x10) | 0x8000); + + re_mdio_write(sc, 0x1f, 0x0003); + re_mdio_write(sc, 0x08, 0x441D); + re_mdio_write(sc, 0x01, 0x9100); + } else if (sc->re_type == MACFG_15) { + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x11, re_mdio_read(sc, 0x11) | 0x1000); + re_mdio_write(sc, 0x19, re_mdio_read(sc, 0x19) | 0x2000); + re_mdio_write(sc, 0x10, re_mdio_read(sc, 0x10) | 0x8000); + + re_mdio_write(sc, 0x1f, 0x0003); + re_mdio_write(sc, 0x08, 0x441D); + re_mdio_write(sc, 0x01, 0x9100); + } else if (sc->re_type == MACFG_17) { + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x11, re_mdio_read(sc, 0x11) | 0x1000); + re_mdio_write(sc, 0x19, re_mdio_read(sc, 0x19) | 0x2000); + re_mdio_write(sc, 0x10, re_mdio_read(sc, 0x10) | 0x8000); + + re_mdio_write(sc, 0x1f, 0x0003); + re_mdio_write(sc, 0x08, 0x441D); + + re_mdio_write(sc, 0x1f, 0x0000); + } else if (sc->re_type == MACFG_21) { + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x0B, 0x94B0); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x12, 0x6096); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_22) { + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x0B, 0x94B0); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x12, 0x6096); + } else if (sc->re_type == MACFG_23) { + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x0B, 0x94B0); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x12, 0x6096); + } else if (sc->re_type == MACFG_24) { + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x12, 0x2300); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x16, 0x000A); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x12, 0xC096); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x00, 0x88DE); + re_mdio_write(sc, 0x01, 0x82B1); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x08, 0x9E30); + re_mdio_write(sc, 0x09, 0x01F0); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x0A, 0x5500); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x03, 0x7002); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x14, re_mdio_read(sc, 0x14) | BIT_5); + re_mdio_write(sc, 0x0d, re_mdio_read(sc, 0x0d) | BIT_5); + } else if (sc->re_type == MACFG_25) { + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x12, 0x2300); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x16, 0x0F0A); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x00, 0x88DE); + re_mdio_write(sc, 0x01, 0x82B1); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x0C, 0x7EB8); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x06, 0x0761); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x03, 0x802F); + re_mdio_write(sc, 0x02, 0x4F02); + re_mdio_write(sc, 0x01, 0x0409); + re_mdio_write(sc, 0x00, 0xF099); + re_mdio_write(sc, 0x04, 0x9800); + re_mdio_write(sc, 0x04, 0x9000); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x16, re_mdio_read(sc, 0x16) | BIT_0); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x14, re_mdio_read(sc, 0x14) | BIT_5); + re_mdio_write(sc, 0x0D, re_mdio_read(sc, 0x0D) & ~BIT_5); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x1D, 0x3D98); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x17, 0x0CC0); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_26) { + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x12, 0x2300); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x16, 0x0F0A); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x00, 0x88DE); + re_mdio_write(sc, 0x01, 0x82B1); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x0C, 0x7EB8); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x06, 0x5461); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x06, 0x5461); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x16, re_mdio_read(sc, 0x16) | BIT_0); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x14, re_mdio_read(sc, 0x14) | BIT_5); + re_mdio_write(sc, 0x0D, re_mdio_read(sc, 0x0D) & ~BIT_5); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x1D, 0x3D98); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x17, 0x0CC0); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_27) { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0d, re_mdio_read(sc, 0x0d) | BIT_5); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x1D, 0x3D98); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x14, 0xCAA3); + re_mdio_write(sc, 0x1C, 0x000A); + re_mdio_write(sc, 0x18, 0x65D0); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x17, 0xB580); + re_mdio_write(sc, 0x18, 0xFF54); + re_mdio_write(sc, 0x19, 0x3954); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x0D, 0x310C); + re_mdio_write(sc, 0x0E, 0x310C); + re_mdio_write(sc, 0x0F, 0x311C); + re_mdio_write(sc, 0x06, 0x0761); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x18, 0xFF55); + re_mdio_write(sc, 0x19, 0x3955); + re_mdio_write(sc, 0x18, 0xFF54); + re_mdio_write(sc, 0x19, 0x3954); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x17, 0x0CC0); + } else if (sc->re_type == MACFG_28) { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x14, re_mdio_read(sc, 0x14) | BIT_5); + re_mdio_write(sc, 0x0d, re_mdio_read(sc, 0x0d) | BIT_5); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x14, 0xCAA3); + re_mdio_write(sc, 0x1C, 0x000A); + re_mdio_write(sc, 0x18, 0x65D0); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x17, 0xB580); + re_mdio_write(sc, 0x18, 0xFF54); + re_mdio_write(sc, 0x19, 0x3954); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x0D, 0x310C); + re_mdio_write(sc, 0x0E, 0x310C); + re_mdio_write(sc, 0x0F, 0x311C); + re_mdio_write(sc, 0x06, 0x0761); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x18, 0xFF55); + re_mdio_write(sc, 0x19, 0x3955); + re_mdio_write(sc, 0x18, 0xFF54); + re_mdio_write(sc, 0x19, 0x3954); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x17, 0x0CC0); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x16, re_mdio_read(sc, 0x16) | BIT_0); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_31) { + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x06, 0x4064); + re_mdio_write(sc, 0x07, 0x2863); + re_mdio_write(sc, 0x08, 0x059C); + re_mdio_write(sc, 0x09, 0x26B4); + re_mdio_write(sc, 0x0A, 0x6A19); + re_mdio_write(sc, 0x0B, 0xDCC8); + re_mdio_write(sc, 0x10, 0xF06D); + re_mdio_write(sc, 0x14, 0x7F68); + re_mdio_write(sc, 0x18, 0x7FD9); + re_mdio_write(sc, 0x1C, 0xF0FF); + re_mdio_write(sc, 0x1D, 0x3D9C); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x12, 0xF49F); + re_mdio_write(sc, 0x13, 0x070B); + re_mdio_write(sc, 0x1A, 0x05AD); + re_mdio_write(sc, 0x14, 0x94C0); + + re_mdio_write(sc, 0x1F, 0x0002); + Data = re_mdio_read(sc, 0x0B) & 0xFF00; + Data |= 0x10; + re_mdio_write(sc, 0x0B, Data); + Data = re_mdio_read(sc, 0x0C) & 0x00FF; + Data |= 0xA200; + re_mdio_write(sc, 0x0C, Data); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x06, 0x5561); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8332); + re_mdio_write(sc, 0x06, 0x5561); + + if (re_efuse_read(sc, 0x01) == 0xb1) { + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x05, 0x669A); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8330); + re_mdio_write(sc, 0x06, 0x669A); + + re_mdio_write(sc, 0x1F, 0x0002); + Data = re_mdio_read(sc, 0x0D); + if ((Data & 0x00FF) != 0x006C) { + Data &= 0xFF00; + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x0D, Data | 0x0065); + re_mdio_write(sc, 0x0D, Data | 0x0066); + re_mdio_write(sc, 0x0D, Data | 0x0067); + re_mdio_write(sc, 0x0D, Data | 0x0068); + re_mdio_write(sc, 0x0D, Data | 0x0069); + re_mdio_write(sc, 0x0D, Data | 0x006A); + re_mdio_write(sc, 0x0D, Data | 0x006B); + re_mdio_write(sc, 0x0D, Data | 0x006C); + } + } else { + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x05, 0x6662); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8330); + re_mdio_write(sc, 0x06, 0x6662); + } - MP_WritePhyUshort(sc, 0x1F, 0x0000); - ClearEthPhyBit(sc, 0x1A, BIT_14); + re_mdio_write(sc, 0x1F, 0x0002); + Data = re_mdio_read(sc, 0x0D); + Data |= 0x300; + re_mdio_write(sc, 0x0D, Data); + Data = re_mdio_read(sc, 0x0F); + Data |= 0x10; + re_mdio_write(sc, 0x0F, Data); + + re_mdio_write(sc, 0x1F, 0x0002); + Data = re_mdio_read(sc, 0x02); + Data &= ~0x600; + Data |= 0x100; + re_mdio_write(sc, 0x02, Data); + Data = re_mdio_read(sc, 0x03); + Data &= ~0xE000; + re_mdio_write(sc, 0x03, Data); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x17, 0x0CC0); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x001B); + if (re_mdio_read(sc, 0x06) == 0xBF00) { + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfaef); + re_mdio_write(sc, 0x06, 0x59ee); + re_mdio_write(sc, 0x06, 0xf8ea); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xf8eb); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0xf87c); + re_mdio_write(sc, 0x06, 0xe1f8); + re_mdio_write(sc, 0x06, 0x7d59); + re_mdio_write(sc, 0x06, 0x0fef); + re_mdio_write(sc, 0x06, 0x0139); + re_mdio_write(sc, 0x06, 0x029e); + re_mdio_write(sc, 0x06, 0x06ef); + re_mdio_write(sc, 0x06, 0x1039); + re_mdio_write(sc, 0x06, 0x089f); + re_mdio_write(sc, 0x06, 0x2aee); + re_mdio_write(sc, 0x06, 0xf8ea); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xf8eb); + re_mdio_write(sc, 0x06, 0x01e0); + re_mdio_write(sc, 0x06, 0xf87c); + re_mdio_write(sc, 0x06, 0xe1f8); + re_mdio_write(sc, 0x06, 0x7d58); + re_mdio_write(sc, 0x06, 0x409e); + re_mdio_write(sc, 0x06, 0x0f39); + re_mdio_write(sc, 0x06, 0x46aa); + re_mdio_write(sc, 0x06, 0x0bbf); + re_mdio_write(sc, 0x06, 0x8290); + re_mdio_write(sc, 0x06, 0xd682); + re_mdio_write(sc, 0x06, 0x9802); + re_mdio_write(sc, 0x06, 0x014f); + re_mdio_write(sc, 0x06, 0xae09); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0x98d6); + re_mdio_write(sc, 0x06, 0x82a0); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x4fef); + re_mdio_write(sc, 0x06, 0x95fe); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x05f8); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xeef8); + re_mdio_write(sc, 0x06, 0xea00); + re_mdio_write(sc, 0x06, 0xeef8); + re_mdio_write(sc, 0x06, 0xeb00); + re_mdio_write(sc, 0x06, 0xe2f8); + re_mdio_write(sc, 0x06, 0x7ce3); + re_mdio_write(sc, 0x06, 0xf87d); + re_mdio_write(sc, 0x06, 0xa511); + re_mdio_write(sc, 0x06, 0x1112); + re_mdio_write(sc, 0x06, 0xd240); + re_mdio_write(sc, 0x06, 0xd644); + re_mdio_write(sc, 0x06, 0x4402); + re_mdio_write(sc, 0x06, 0x8217); + re_mdio_write(sc, 0x06, 0xd2a0); + re_mdio_write(sc, 0x06, 0xd6aa); + re_mdio_write(sc, 0x06, 0xaa02); + re_mdio_write(sc, 0x06, 0x8217); + re_mdio_write(sc, 0x06, 0xae0f); + re_mdio_write(sc, 0x06, 0xa544); + re_mdio_write(sc, 0x06, 0x4402); + re_mdio_write(sc, 0x06, 0xae4d); + re_mdio_write(sc, 0x06, 0xa5aa); + re_mdio_write(sc, 0x06, 0xaa02); + re_mdio_write(sc, 0x06, 0xae47); + re_mdio_write(sc, 0x06, 0xaf82); + re_mdio_write(sc, 0x06, 0x13ee); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x834d); + re_mdio_write(sc, 0x06, 0x0fee); + re_mdio_write(sc, 0x06, 0x834c); + re_mdio_write(sc, 0x06, 0x0fee); + re_mdio_write(sc, 0x06, 0x834f); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8351); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x834a); + re_mdio_write(sc, 0x06, 0xffee); + re_mdio_write(sc, 0x06, 0x834b); + re_mdio_write(sc, 0x06, 0xffe0); + re_mdio_write(sc, 0x06, 0x8330); + re_mdio_write(sc, 0x06, 0xe183); + re_mdio_write(sc, 0x06, 0x3158); + re_mdio_write(sc, 0x06, 0xfee4); + re_mdio_write(sc, 0x06, 0xf88a); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0x8be0); + re_mdio_write(sc, 0x06, 0x8332); + re_mdio_write(sc, 0x06, 0xe183); + re_mdio_write(sc, 0x06, 0x3359); + re_mdio_write(sc, 0x06, 0x0fe2); + re_mdio_write(sc, 0x06, 0x834d); + re_mdio_write(sc, 0x06, 0x0c24); + re_mdio_write(sc, 0x06, 0x5af0); + re_mdio_write(sc, 0x06, 0x1e12); + re_mdio_write(sc, 0x06, 0xe4f8); + re_mdio_write(sc, 0x06, 0x8ce5); + re_mdio_write(sc, 0x06, 0xf88d); + re_mdio_write(sc, 0x06, 0xaf82); + re_mdio_write(sc, 0x06, 0x13e0); + re_mdio_write(sc, 0x06, 0x834f); + re_mdio_write(sc, 0x06, 0x10e4); + re_mdio_write(sc, 0x06, 0x834f); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4e78); + re_mdio_write(sc, 0x06, 0x009f); + re_mdio_write(sc, 0x06, 0x0ae0); + re_mdio_write(sc, 0x06, 0x834f); + re_mdio_write(sc, 0x06, 0xa010); + re_mdio_write(sc, 0x06, 0xa5ee); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x01e0); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x7805); + re_mdio_write(sc, 0x06, 0x9e9a); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4e78); + re_mdio_write(sc, 0x06, 0x049e); + re_mdio_write(sc, 0x06, 0x10e0); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x7803); + re_mdio_write(sc, 0x06, 0x9e0f); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4e78); + re_mdio_write(sc, 0x06, 0x019e); + re_mdio_write(sc, 0x06, 0x05ae); + re_mdio_write(sc, 0x06, 0x0caf); + re_mdio_write(sc, 0x06, 0x81f8); + re_mdio_write(sc, 0x06, 0xaf81); + re_mdio_write(sc, 0x06, 0xa3af); + re_mdio_write(sc, 0x06, 0x81dc); + re_mdio_write(sc, 0x06, 0xaf82); + re_mdio_write(sc, 0x06, 0x13ee); + re_mdio_write(sc, 0x06, 0x8348); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0x8349); + re_mdio_write(sc, 0x06, 0x00e0); + re_mdio_write(sc, 0x06, 0x8351); + re_mdio_write(sc, 0x06, 0x10e4); + re_mdio_write(sc, 0x06, 0x8351); + re_mdio_write(sc, 0x06, 0x5801); + re_mdio_write(sc, 0x06, 0x9fea); + re_mdio_write(sc, 0x06, 0xd000); + re_mdio_write(sc, 0x06, 0xd180); + re_mdio_write(sc, 0x06, 0x1f66); + re_mdio_write(sc, 0x06, 0xe2f8); + re_mdio_write(sc, 0x06, 0xeae3); + re_mdio_write(sc, 0x06, 0xf8eb); + re_mdio_write(sc, 0x06, 0x5af8); + re_mdio_write(sc, 0x06, 0x1e20); + re_mdio_write(sc, 0x06, 0xe6f8); + re_mdio_write(sc, 0x06, 0xeae5); + re_mdio_write(sc, 0x06, 0xf8eb); + re_mdio_write(sc, 0x06, 0xd302); + re_mdio_write(sc, 0x06, 0xb3fe); + re_mdio_write(sc, 0x06, 0xe2f8); + re_mdio_write(sc, 0x06, 0x7cef); + re_mdio_write(sc, 0x06, 0x325b); + re_mdio_write(sc, 0x06, 0x80e3); + re_mdio_write(sc, 0x06, 0xf87d); + re_mdio_write(sc, 0x06, 0x9e03); + re_mdio_write(sc, 0x06, 0x7dff); + re_mdio_write(sc, 0x06, 0xff0d); + re_mdio_write(sc, 0x06, 0x581c); + re_mdio_write(sc, 0x06, 0x551a); + re_mdio_write(sc, 0x06, 0x6511); + re_mdio_write(sc, 0x06, 0xa190); + re_mdio_write(sc, 0x06, 0xd3e2); + re_mdio_write(sc, 0x06, 0x8348); + re_mdio_write(sc, 0x06, 0xe383); + re_mdio_write(sc, 0x06, 0x491b); + re_mdio_write(sc, 0x06, 0x56ab); + re_mdio_write(sc, 0x06, 0x08ef); + re_mdio_write(sc, 0x06, 0x56e6); + re_mdio_write(sc, 0x06, 0x8348); + re_mdio_write(sc, 0x06, 0xe783); + re_mdio_write(sc, 0x06, 0x4910); + re_mdio_write(sc, 0x06, 0xd180); + re_mdio_write(sc, 0x06, 0x1f66); + re_mdio_write(sc, 0x06, 0xa004); + re_mdio_write(sc, 0x06, 0xb9e2); + re_mdio_write(sc, 0x06, 0x8348); + re_mdio_write(sc, 0x06, 0xe383); + re_mdio_write(sc, 0x06, 0x49ef); + re_mdio_write(sc, 0x06, 0x65e2); + re_mdio_write(sc, 0x06, 0x834a); + re_mdio_write(sc, 0x06, 0xe383); + re_mdio_write(sc, 0x06, 0x4b1b); + re_mdio_write(sc, 0x06, 0x56aa); + re_mdio_write(sc, 0x06, 0x0eef); + re_mdio_write(sc, 0x06, 0x56e6); + re_mdio_write(sc, 0x06, 0x834a); + re_mdio_write(sc, 0x06, 0xe783); + re_mdio_write(sc, 0x06, 0x4be2); + re_mdio_write(sc, 0x06, 0x834d); + re_mdio_write(sc, 0x06, 0xe683); + re_mdio_write(sc, 0x06, 0x4ce0); + re_mdio_write(sc, 0x06, 0x834d); + re_mdio_write(sc, 0x06, 0xa000); + re_mdio_write(sc, 0x06, 0x0caf); + re_mdio_write(sc, 0x06, 0x81dc); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4d10); + re_mdio_write(sc, 0x06, 0xe483); + re_mdio_write(sc, 0x06, 0x4dae); + re_mdio_write(sc, 0x06, 0x0480); + re_mdio_write(sc, 0x06, 0xe483); + re_mdio_write(sc, 0x06, 0x4de0); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x7803); + re_mdio_write(sc, 0x06, 0x9e0b); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4e78); + re_mdio_write(sc, 0x06, 0x049e); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x02e0); + re_mdio_write(sc, 0x06, 0x8332); + re_mdio_write(sc, 0x06, 0xe183); + re_mdio_write(sc, 0x06, 0x3359); + re_mdio_write(sc, 0x06, 0x0fe2); + re_mdio_write(sc, 0x06, 0x834d); + re_mdio_write(sc, 0x06, 0x0c24); + re_mdio_write(sc, 0x06, 0x5af0); + re_mdio_write(sc, 0x06, 0x1e12); + re_mdio_write(sc, 0x06, 0xe4f8); + re_mdio_write(sc, 0x06, 0x8ce5); + re_mdio_write(sc, 0x06, 0xf88d); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x30e1); + re_mdio_write(sc, 0x06, 0x8331); + re_mdio_write(sc, 0x06, 0x6801); + re_mdio_write(sc, 0x06, 0xe4f8); + re_mdio_write(sc, 0x06, 0x8ae5); + re_mdio_write(sc, 0x06, 0xf88b); + re_mdio_write(sc, 0x06, 0xae37); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4e03); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4ce1); + re_mdio_write(sc, 0x06, 0x834d); + re_mdio_write(sc, 0x06, 0x1b01); + re_mdio_write(sc, 0x06, 0x9e04); + re_mdio_write(sc, 0x06, 0xaaa1); + re_mdio_write(sc, 0x06, 0xaea8); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4e04); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4f00); + re_mdio_write(sc, 0x06, 0xaeab); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4f78); + re_mdio_write(sc, 0x06, 0x039f); + re_mdio_write(sc, 0x06, 0x14ee); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x05d2); + re_mdio_write(sc, 0x06, 0x40d6); + re_mdio_write(sc, 0x06, 0x5554); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x17d2); + re_mdio_write(sc, 0x06, 0xa0d6); + re_mdio_write(sc, 0x06, 0xba00); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x17fe); + re_mdio_write(sc, 0x06, 0xfdfc); + re_mdio_write(sc, 0x06, 0x05f8); + re_mdio_write(sc, 0x06, 0xe0f8); + re_mdio_write(sc, 0x06, 0x60e1); + re_mdio_write(sc, 0x06, 0xf861); + re_mdio_write(sc, 0x06, 0x6802); + re_mdio_write(sc, 0x06, 0xe4f8); + re_mdio_write(sc, 0x06, 0x60e5); + re_mdio_write(sc, 0x06, 0xf861); + re_mdio_write(sc, 0x06, 0xe0f8); + re_mdio_write(sc, 0x06, 0x48e1); + re_mdio_write(sc, 0x06, 0xf849); + re_mdio_write(sc, 0x06, 0x580f); + re_mdio_write(sc, 0x06, 0x1e02); + re_mdio_write(sc, 0x06, 0xe4f8); + re_mdio_write(sc, 0x06, 0x48e5); + re_mdio_write(sc, 0x06, 0xf849); + re_mdio_write(sc, 0x06, 0xd000); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x5bbf); + re_mdio_write(sc, 0x06, 0x8350); + re_mdio_write(sc, 0x06, 0xef46); + re_mdio_write(sc, 0x06, 0xdc19); + re_mdio_write(sc, 0x06, 0xddd0); + re_mdio_write(sc, 0x06, 0x0102); + re_mdio_write(sc, 0x06, 0x825b); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x77e0); + re_mdio_write(sc, 0x06, 0xf860); + re_mdio_write(sc, 0x06, 0xe1f8); + re_mdio_write(sc, 0x06, 0x6158); + re_mdio_write(sc, 0x06, 0xfde4); + re_mdio_write(sc, 0x06, 0xf860); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0x61fc); + re_mdio_write(sc, 0x06, 0x04f9); + re_mdio_write(sc, 0x06, 0xfafb); + re_mdio_write(sc, 0x06, 0xc6bf); + re_mdio_write(sc, 0x06, 0xf840); + re_mdio_write(sc, 0x06, 0xbe83); + re_mdio_write(sc, 0x06, 0x50a0); + re_mdio_write(sc, 0x06, 0x0101); + re_mdio_write(sc, 0x06, 0x071b); + re_mdio_write(sc, 0x06, 0x89cf); + re_mdio_write(sc, 0x06, 0xd208); + re_mdio_write(sc, 0x06, 0xebdb); + re_mdio_write(sc, 0x06, 0x19b2); + re_mdio_write(sc, 0x06, 0xfbff); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0x04f8); + re_mdio_write(sc, 0x06, 0xe0f8); + re_mdio_write(sc, 0x06, 0x48e1); + re_mdio_write(sc, 0x06, 0xf849); + re_mdio_write(sc, 0x06, 0x6808); + re_mdio_write(sc, 0x06, 0xe4f8); + re_mdio_write(sc, 0x06, 0x48e5); + re_mdio_write(sc, 0x06, 0xf849); + re_mdio_write(sc, 0x06, 0x58f7); + re_mdio_write(sc, 0x06, 0xe4f8); + re_mdio_write(sc, 0x06, 0x48e5); + re_mdio_write(sc, 0x06, 0xf849); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0x4d20); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x4e22); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x4ddf); + re_mdio_write(sc, 0x06, 0xff01); + re_mdio_write(sc, 0x06, 0x4edd); + re_mdio_write(sc, 0x06, 0xff01); + re_mdio_write(sc, 0x06, 0xf8fa); + re_mdio_write(sc, 0x06, 0xfbef); + re_mdio_write(sc, 0x06, 0x79bf); + re_mdio_write(sc, 0x06, 0xf822); + re_mdio_write(sc, 0x06, 0xd819); + re_mdio_write(sc, 0x06, 0xd958); + re_mdio_write(sc, 0x06, 0x849f); + re_mdio_write(sc, 0x06, 0x09bf); + re_mdio_write(sc, 0x06, 0x82be); + re_mdio_write(sc, 0x06, 0xd682); + re_mdio_write(sc, 0x06, 0xc602); + re_mdio_write(sc, 0x06, 0x014f); + re_mdio_write(sc, 0x06, 0xef97); + re_mdio_write(sc, 0x06, 0xfffe); + re_mdio_write(sc, 0x06, 0xfc05); + re_mdio_write(sc, 0x06, 0x17ff); + re_mdio_write(sc, 0x06, 0xfe01); + re_mdio_write(sc, 0x06, 0x1700); + re_mdio_write(sc, 0x06, 0x0102); + re_mdio_write(sc, 0x05, 0x83d8); + re_mdio_write(sc, 0x06, 0x8051); + re_mdio_write(sc, 0x05, 0x83d6); + re_mdio_write(sc, 0x06, 0x82a0); + re_mdio_write(sc, 0x05, 0x83d4); + re_mdio_write(sc, 0x06, 0x8000); + re_mdio_write(sc, 0x02, 0x2010); + re_mdio_write(sc, 0x03, 0xdc00); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x0b, 0x0600); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x00fc); + re_mdio_write(sc, 0x1f, 0x0000); + } - if (phy_power_saving == 1) { - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x8310); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x0310); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - DELAY(20000); - } - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0007); - MP_WritePhyUshort(sc, 0x0E, 0x003C); - MP_WritePhyUshort(sc, 0x0D, 0x4007); - MP_WritePhyUshort(sc, 0x0E, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0000); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0003); - MP_WritePhyUshort(sc, 0x0E, 0x0015); - MP_WritePhyUshort(sc, 0x0D, 0x4003); - MP_WritePhyUshort(sc, 0x0E, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0000); - - } - else if (sc->re_type == MACFG_50) { - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B80); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_2 | BIT_1; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x002D); - Data = MP_ReadPhyUshort(sc, 0x18); - Data |= BIT_4; - MP_WritePhyUshort(sc, 0x18, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - Data = MP_ReadPhyUshort(sc, 0x14); - Data |= BIT_15; - MP_WritePhyUshort(sc, 0x14, Data); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B86); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_0; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B85); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_14; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x09, 0xA20F); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B55); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x05, 0x8B5E); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x05, 0x8B67); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x05, 0x8B70); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x0078); - MP_WritePhyUshort(sc, 0x17, 0x0000); - MP_WritePhyUshort(sc, 0x19, 0x00FB); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B79); - MP_WritePhyUshort(sc, 0x06, 0xAA00); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x01, 0x328A); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B54); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_11; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8B5D); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_11; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A7C); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A7F); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A82); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A85); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A88); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B85); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_15; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0003); - Data = MP_ReadPhyUshort(sc, 0x19); - Data &= ~BIT_0; - MP_WritePhyUshort(sc, 0x19, Data); - Data = MP_ReadPhyUshort(sc, 0x10); - Data &= ~BIT_10; - MP_WritePhyUshort(sc, 0x10, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - } - else if (sc->re_type == MACFG_51) { - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B80); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_2 | BIT_1; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x002D); - Data = MP_ReadPhyUshort(sc, 0x18); - Data |= BIT_4; - MP_WritePhyUshort(sc, 0x18, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - Data = MP_ReadPhyUshort(sc, 0x14); - Data |= BIT_15; - MP_WritePhyUshort(sc, 0x14, Data); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B86); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_0; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B54); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_11; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8B5D); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_11; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A7C); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A7F); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A82); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A85); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A88); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x0023); - ClearEthPhyBit(sc, 0x17, BIT_1); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B85); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_15; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0003); - Data = MP_ReadPhyUshort(sc, 0x19); - Data &= ~BIT_0; - MP_WritePhyUshort(sc, 0x19, Data); - Data = MP_ReadPhyUshort(sc, 0x10); - Data &= ~BIT_10; - MP_WritePhyUshort(sc, 0x10, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - } - else if (sc->re_type == MACFG_52) { - Data_u32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); - Data_u32 &= ~BIT_1; - re_eri_write(sc, 0x1D0, 4, Data_u32, ERIAR_ExGMAC); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B80); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_2 | BIT_1; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x002D); - Data = MP_ReadPhyUshort(sc, 0x18); - Data |= BIT_4; - MP_WritePhyUshort(sc, 0x18, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0002); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - Data = MP_ReadPhyUshort(sc, 0x14); - Data |= BIT_15; - MP_WritePhyUshort(sc, 0x14, Data); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B86); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_0; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B85); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_14; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x09, 0xA20F); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B55); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x05, 0x8B5E); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x05, 0x8B67); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x05, 0x8B70); - MP_WritePhyUshort(sc, 0x06, 0x0000); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x0078); - MP_WritePhyUshort(sc, 0x17, 0x0000); - MP_WritePhyUshort(sc, 0x19, 0x00FB); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B79); - MP_WritePhyUshort(sc, 0x06, 0xAA00); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x01, 0x328A); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B54); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_11; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8B5D); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_11; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A7C); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A7F); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A82); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A85); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x05, 0x8A88); - Data = MP_ReadPhyUshort(sc, 0x06); - Data &= ~BIT_8; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x05, 0x8B85); - Data = MP_ReadPhyUshort(sc, 0x06); - Data |= BIT_15; - MP_WritePhyUshort(sc, 0x06, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0003); - Data = MP_ReadPhyUshort(sc, 0x19); - Data &= ~BIT_0; - MP_WritePhyUshort(sc, 0x19, Data); - Data = MP_ReadPhyUshort(sc, 0x10); - Data &= ~BIT_10; - MP_WritePhyUshort(sc, 0x10, Data); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - } - else if (sc->re_type == MACFG_53) { - Data_u32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); - Data_u32 &= 0xFFFF0000; - re_eri_write(sc, 0x1D0, 4, Data_u32, ERIAR_ExGMAC); - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x0310); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0004); - MP_WritePhyUshort(sc, 0x1f, 0x0004); - MP_WritePhyUshort(sc, 0x19, 0x7070); - MP_WritePhyUshort(sc, 0x1c, 0x0600); - MP_WritePhyUshort(sc, 0x1d, 0x9700); - MP_WritePhyUshort(sc, 0x1d, 0x7d00); - MP_WritePhyUshort(sc, 0x1d, 0x6900); - MP_WritePhyUshort(sc, 0x1d, 0x7d00); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x4899); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x8000); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x4007); - MP_WritePhyUshort(sc, 0x1d, 0x4400); - MP_WritePhyUshort(sc, 0x1d, 0x4800); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x5310); - MP_WritePhyUshort(sc, 0x1d, 0x6000); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x6736); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x571f); - MP_WritePhyUshort(sc, 0x1d, 0x5ffb); - MP_WritePhyUshort(sc, 0x1d, 0xaa03); - MP_WritePhyUshort(sc, 0x1d, 0x5b58); - MP_WritePhyUshort(sc, 0x1d, 0x301e); - MP_WritePhyUshort(sc, 0x1d, 0x5b64); - MP_WritePhyUshort(sc, 0x1d, 0xa6fc); - MP_WritePhyUshort(sc, 0x1d, 0xdcdb); - MP_WritePhyUshort(sc, 0x1d, 0x0015); - MP_WritePhyUshort(sc, 0x1d, 0xb915); - MP_WritePhyUshort(sc, 0x1d, 0xb511); - MP_WritePhyUshort(sc, 0x1d, 0xd16b); - MP_WritePhyUshort(sc, 0x1d, 0x000f); - MP_WritePhyUshort(sc, 0x1d, 0xb40f); - MP_WritePhyUshort(sc, 0x1d, 0xd06b); - MP_WritePhyUshort(sc, 0x1d, 0x000d); - MP_WritePhyUshort(sc, 0x1d, 0xb206); - MP_WritePhyUshort(sc, 0x1d, 0x7c01); - MP_WritePhyUshort(sc, 0x1d, 0x5800); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x5c00); - MP_WritePhyUshort(sc, 0x1d, 0x301a); - MP_WritePhyUshort(sc, 0x1d, 0x7c01); - MP_WritePhyUshort(sc, 0x1d, 0x5801); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x5c04); - MP_WritePhyUshort(sc, 0x1d, 0x301e); - MP_WritePhyUshort(sc, 0x1d, 0x3079); - MP_WritePhyUshort(sc, 0x1d, 0x30f1); - MP_WritePhyUshort(sc, 0x1d, 0x3199); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4c60); - MP_WritePhyUshort(sc, 0x1d, 0x6803); - MP_WritePhyUshort(sc, 0x1d, 0x6420); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0xaf03); - MP_WritePhyUshort(sc, 0x1d, 0x6015); - MP_WritePhyUshort(sc, 0x1d, 0x3040); - MP_WritePhyUshort(sc, 0x1d, 0x6017); - MP_WritePhyUshort(sc, 0x1d, 0x57e0); - MP_WritePhyUshort(sc, 0x1d, 0x580c); - MP_WritePhyUshort(sc, 0x1d, 0x588c); - MP_WritePhyUshort(sc, 0x1d, 0x5fa3); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x4827); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c10); - MP_WritePhyUshort(sc, 0x1d, 0x8400); - MP_WritePhyUshort(sc, 0x1d, 0x7c30); - MP_WritePhyUshort(sc, 0x1d, 0x6020); - MP_WritePhyUshort(sc, 0x1d, 0x48bf); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0xd6cf); - MP_WritePhyUshort(sc, 0x1d, 0x0002); - MP_WritePhyUshort(sc, 0x1d, 0x80fe); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4c80); - MP_WritePhyUshort(sc, 0x1d, 0x7c20); - MP_WritePhyUshort(sc, 0x1d, 0x5c20); - MP_WritePhyUshort(sc, 0x1d, 0x481e); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c02); - MP_WritePhyUshort(sc, 0x1d, 0x5310); - MP_WritePhyUshort(sc, 0x1d, 0x81ff); - MP_WritePhyUshort(sc, 0x1d, 0x30ba); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4d00); - MP_WritePhyUshort(sc, 0x1d, 0x4832); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c10); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x6000); - MP_WritePhyUshort(sc, 0x1d, 0xa4cc); - MP_WritePhyUshort(sc, 0x1d, 0xd9b3); - MP_WritePhyUshort(sc, 0x1d, 0xfffe); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4d20); - MP_WritePhyUshort(sc, 0x1d, 0x7e00); - MP_WritePhyUshort(sc, 0x1d, 0x6200); - MP_WritePhyUshort(sc, 0x1d, 0x300b); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4dc0); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0xd09d); - MP_WritePhyUshort(sc, 0x1d, 0x0002); - MP_WritePhyUshort(sc, 0x1d, 0xb4fe); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4d80); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x6004); - MP_WritePhyUshort(sc, 0x1d, 0x5310); - MP_WritePhyUshort(sc, 0x1d, 0x6802); - MP_WritePhyUshort(sc, 0x1d, 0x6720); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x6000); - MP_WritePhyUshort(sc, 0x1d, 0x486c); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x9503); - MP_WritePhyUshort(sc, 0x1d, 0x7e00); - MP_WritePhyUshort(sc, 0x1d, 0x6200); - MP_WritePhyUshort(sc, 0x1d, 0x571f); - MP_WritePhyUshort(sc, 0x1d, 0x5fbb); - MP_WritePhyUshort(sc, 0x1d, 0xaa03); - MP_WritePhyUshort(sc, 0x1d, 0x5b58); - MP_WritePhyUshort(sc, 0x1d, 0x3092); - MP_WritePhyUshort(sc, 0x1d, 0x5b64); - MP_WritePhyUshort(sc, 0x1d, 0xcdab); - MP_WritePhyUshort(sc, 0x1d, 0xff78); - MP_WritePhyUshort(sc, 0x1d, 0xcd8d); - MP_WritePhyUshort(sc, 0x1d, 0xff76); - MP_WritePhyUshort(sc, 0x1d, 0xd96b); - MP_WritePhyUshort(sc, 0x1d, 0xff74); - MP_WritePhyUshort(sc, 0x1d, 0xd0a0); - MP_WritePhyUshort(sc, 0x1d, 0xffd9); - MP_WritePhyUshort(sc, 0x1d, 0xcba0); - MP_WritePhyUshort(sc, 0x1d, 0x0003); - MP_WritePhyUshort(sc, 0x1d, 0x80f0); - MP_WritePhyUshort(sc, 0x1d, 0x309f); - MP_WritePhyUshort(sc, 0x1d, 0x30ac); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4ce0); - MP_WritePhyUshort(sc, 0x1d, 0x4832); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c08); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x6008); - MP_WritePhyUshort(sc, 0x1d, 0x8300); - MP_WritePhyUshort(sc, 0x1d, 0xb902); - MP_WritePhyUshort(sc, 0x1d, 0x3079); - MP_WritePhyUshort(sc, 0x1d, 0x3061); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4da0); - MP_WritePhyUshort(sc, 0x1d, 0x6400); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x57a0); - MP_WritePhyUshort(sc, 0x1d, 0x590c); - MP_WritePhyUshort(sc, 0x1d, 0x5fa3); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0xcba4); - MP_WritePhyUshort(sc, 0x1d, 0x0004); - MP_WritePhyUshort(sc, 0x1d, 0xcd8d); - MP_WritePhyUshort(sc, 0x1d, 0x0002); - MP_WritePhyUshort(sc, 0x1d, 0x80fc); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4ca0); - MP_WritePhyUshort(sc, 0x1d, 0xb603); - MP_WritePhyUshort(sc, 0x1d, 0x7c10); - MP_WritePhyUshort(sc, 0x1d, 0x6010); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x541f); - MP_WritePhyUshort(sc, 0x1d, 0x5fb3); - MP_WritePhyUshort(sc, 0x1d, 0xaa05); - MP_WritePhyUshort(sc, 0x1d, 0x7c80); - MP_WritePhyUshort(sc, 0x1d, 0x5800); - MP_WritePhyUshort(sc, 0x1d, 0x5b58); - MP_WritePhyUshort(sc, 0x1d, 0x30ca); - MP_WritePhyUshort(sc, 0x1d, 0x7c80); - MP_WritePhyUshort(sc, 0x1d, 0x5800); - MP_WritePhyUshort(sc, 0x1d, 0x5b64); - MP_WritePhyUshort(sc, 0x1d, 0x4824); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c04); - MP_WritePhyUshort(sc, 0x1d, 0x8200); - MP_WritePhyUshort(sc, 0x1d, 0x4827); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c10); - MP_WritePhyUshort(sc, 0x1d, 0x8400); - MP_WritePhyUshort(sc, 0x1d, 0x7c10); - MP_WritePhyUshort(sc, 0x1d, 0x6000); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4cc0); - MP_WritePhyUshort(sc, 0x1d, 0x5fbb); - MP_WritePhyUshort(sc, 0x1d, 0x4824); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c04); - MP_WritePhyUshort(sc, 0x1d, 0x8200); - MP_WritePhyUshort(sc, 0x1d, 0x7ce0); - MP_WritePhyUshort(sc, 0x1d, 0x5400); - MP_WritePhyUshort(sc, 0x1d, 0x6720); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x7e00); - MP_WritePhyUshort(sc, 0x1d, 0x6a00); - MP_WritePhyUshort(sc, 0x1d, 0x4824); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c04); - MP_WritePhyUshort(sc, 0x1d, 0x8200); - MP_WritePhyUshort(sc, 0x1d, 0x7e00); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x309f); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4e00); - MP_WritePhyUshort(sc, 0x1d, 0x4007); - MP_WritePhyUshort(sc, 0x1d, 0x4400); - MP_WritePhyUshort(sc, 0x1d, 0x5310); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x6736); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x570f); - MP_WritePhyUshort(sc, 0x1d, 0x5fff); - MP_WritePhyUshort(sc, 0x1d, 0xaa03); - MP_WritePhyUshort(sc, 0x1d, 0x585b); - MP_WritePhyUshort(sc, 0x1d, 0x3100); - MP_WritePhyUshort(sc, 0x1d, 0x5867); - MP_WritePhyUshort(sc, 0x1d, 0x9403); - MP_WritePhyUshort(sc, 0x1d, 0x7e00); - MP_WritePhyUshort(sc, 0x1d, 0x6200); - MP_WritePhyUshort(sc, 0x1d, 0xcda3); - MP_WritePhyUshort(sc, 0x1d, 0x002d); - MP_WritePhyUshort(sc, 0x1d, 0xcd85); - MP_WritePhyUshort(sc, 0x1d, 0x002b); - MP_WritePhyUshort(sc, 0x1d, 0xd96b); - MP_WritePhyUshort(sc, 0x1d, 0x0029); - MP_WritePhyUshort(sc, 0x1d, 0x9629); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x6736); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x9624); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4e20); - MP_WritePhyUshort(sc, 0x1d, 0x8b04); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x5008); - MP_WritePhyUshort(sc, 0x1d, 0xab03); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x5000); - MP_WritePhyUshort(sc, 0x1d, 0x6801); - MP_WritePhyUshort(sc, 0x1d, 0x6776); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0xdb7c); - MP_WritePhyUshort(sc, 0x1d, 0xffee); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x7fe1); - MP_WritePhyUshort(sc, 0x1d, 0x4e40); - MP_WritePhyUshort(sc, 0x1d, 0x4837); - MP_WritePhyUshort(sc, 0x1d, 0x4418); - MP_WritePhyUshort(sc, 0x1d, 0x41c7); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4e40); - MP_WritePhyUshort(sc, 0x1d, 0x7c40); - MP_WritePhyUshort(sc, 0x1d, 0x5400); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x8f07); - MP_WritePhyUshort(sc, 0x1d, 0xd2a0); - MP_WritePhyUshort(sc, 0x1d, 0x004c); - MP_WritePhyUshort(sc, 0x1d, 0x9205); - MP_WritePhyUshort(sc, 0x1d, 0xa043); - MP_WritePhyUshort(sc, 0x1d, 0x312b); - MP_WritePhyUshort(sc, 0x1d, 0x300b); - MP_WritePhyUshort(sc, 0x1d, 0x30f1); - MP_WritePhyUshort(sc, 0x1d, 0x7fe1); - MP_WritePhyUshort(sc, 0x1d, 0x4e60); - MP_WritePhyUshort(sc, 0x1d, 0x489c); - MP_WritePhyUshort(sc, 0x1d, 0x4628); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4e60); - MP_WritePhyUshort(sc, 0x1d, 0x7e28); - MP_WritePhyUshort(sc, 0x1d, 0x4628); - MP_WritePhyUshort(sc, 0x1d, 0x7c40); - MP_WritePhyUshort(sc, 0x1d, 0x5400); - MP_WritePhyUshort(sc, 0x1d, 0x7c01); - MP_WritePhyUshort(sc, 0x1d, 0x5800); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x5c00); - MP_WritePhyUshort(sc, 0x1d, 0x41e8); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x8fec); - MP_WritePhyUshort(sc, 0x1d, 0xb241); - MP_WritePhyUshort(sc, 0x1d, 0xa02a); - MP_WritePhyUshort(sc, 0x1d, 0x3146); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4ea0); - MP_WritePhyUshort(sc, 0x1d, 0x7c02); - MP_WritePhyUshort(sc, 0x1d, 0x4402); - MP_WritePhyUshort(sc, 0x1d, 0x4448); - MP_WritePhyUshort(sc, 0x1d, 0x4894); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c03); - MP_WritePhyUshort(sc, 0x1d, 0x4824); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c07); - MP_WritePhyUshort(sc, 0x1d, 0x41ef); - MP_WritePhyUshort(sc, 0x1d, 0x41ff); - MP_WritePhyUshort(sc, 0x1d, 0x4891); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c07); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c17); - MP_WritePhyUshort(sc, 0x1d, 0x8400); - MP_WritePhyUshort(sc, 0x1d, 0x8ef8); - MP_WritePhyUshort(sc, 0x1d, 0x41c7); - MP_WritePhyUshort(sc, 0x1d, 0x8fd1); - MP_WritePhyUshort(sc, 0x1d, 0x92d5); - MP_WritePhyUshort(sc, 0x1d, 0xa10f); - MP_WritePhyUshort(sc, 0x1d, 0xd480); - MP_WritePhyUshort(sc, 0x1d, 0x0008); - MP_WritePhyUshort(sc, 0x1d, 0xd580); - MP_WritePhyUshort(sc, 0x1d, 0xffb7); - MP_WritePhyUshort(sc, 0x1d, 0xa202); - MP_WritePhyUshort(sc, 0x1d, 0x3161); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x4404); - MP_WritePhyUshort(sc, 0x1d, 0x3161); - MP_WritePhyUshort(sc, 0x1d, 0xd484); - MP_WritePhyUshort(sc, 0x1d, 0xfff3); - MP_WritePhyUshort(sc, 0x1d, 0xd484); - MP_WritePhyUshort(sc, 0x1d, 0xfff1); - MP_WritePhyUshort(sc, 0x1d, 0x30f1); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4ee0); - MP_WritePhyUshort(sc, 0x1d, 0x7c40); - MP_WritePhyUshort(sc, 0x1d, 0x5400); - MP_WritePhyUshort(sc, 0x1d, 0x4488); - MP_WritePhyUshort(sc, 0x1d, 0x41cf); - MP_WritePhyUshort(sc, 0x1d, 0x30f1); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4ec0); - MP_WritePhyUshort(sc, 0x1d, 0x48f3); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c09); - MP_WritePhyUshort(sc, 0x1d, 0x4508); - MP_WritePhyUshort(sc, 0x1d, 0x41c7); - MP_WritePhyUshort(sc, 0x1d, 0x8fb0); - MP_WritePhyUshort(sc, 0x1d, 0xd218); - MP_WritePhyUshort(sc, 0x1d, 0xffae); - MP_WritePhyUshort(sc, 0x1d, 0xd2a4); - MP_WritePhyUshort(sc, 0x1d, 0xff9d); - MP_WritePhyUshort(sc, 0x1d, 0x3182); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4e80); - MP_WritePhyUshort(sc, 0x1d, 0x4832); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c11); - MP_WritePhyUshort(sc, 0x1d, 0x4428); - MP_WritePhyUshort(sc, 0x1d, 0x7c40); - MP_WritePhyUshort(sc, 0x1d, 0x5440); - MP_WritePhyUshort(sc, 0x1d, 0x7c01); - MP_WritePhyUshort(sc, 0x1d, 0x5801); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x5c04); - MP_WritePhyUshort(sc, 0x1d, 0x41e8); - MP_WritePhyUshort(sc, 0x1d, 0xa4b3); - MP_WritePhyUshort(sc, 0x1d, 0x3197); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4f20); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x6736); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x570f); - MP_WritePhyUshort(sc, 0x1d, 0x5fff); - MP_WritePhyUshort(sc, 0x1d, 0xaa03); - MP_WritePhyUshort(sc, 0x1d, 0x585b); - MP_WritePhyUshort(sc, 0x1d, 0x31a5); - MP_WritePhyUshort(sc, 0x1d, 0x5867); - MP_WritePhyUshort(sc, 0x1d, 0xbcf4); - MP_WritePhyUshort(sc, 0x1d, 0x300b); - MP_WritePhyUshort(sc, 0x1f, 0x0004); - MP_WritePhyUshort(sc, 0x1c, 0x0200); - MP_WritePhyUshort(sc, 0x19, 0x7030); - MP_WritePhyUshort(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0xF880); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_32) { + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x06, 0x4064); + re_mdio_write(sc, 0x07, 0x2863); + re_mdio_write(sc, 0x08, 0x059C); + re_mdio_write(sc, 0x09, 0x26B4); + re_mdio_write(sc, 0x0A, 0x6A19); + re_mdio_write(sc, 0x0B, 0xBCC0); + re_mdio_write(sc, 0x10, 0xF06D); + re_mdio_write(sc, 0x14, 0x7F68); + re_mdio_write(sc, 0x18, 0x7FD9); + re_mdio_write(sc, 0x1C, 0xF0FF); + re_mdio_write(sc, 0x1D, 0x3D9C); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x12, 0xF49F); + re_mdio_write(sc, 0x13, 0x070B); + re_mdio_write(sc, 0x1A, 0x05AD); + re_mdio_write(sc, 0x14, 0x94C0); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x06, 0x5571); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x05, 0x2642); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x02, 0xC107); + re_mdio_write(sc, 0x03, 0x1002); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x16, 0x0CC0); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x0F, 0x0017); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8200); + re_mdio_write(sc, 0x06, 0xF8F9); + re_mdio_write(sc, 0x06, 0xFAEF); + re_mdio_write(sc, 0x06, 0x59EE); + re_mdio_write(sc, 0x06, 0xF8EA); + re_mdio_write(sc, 0x06, 0x00EE); + re_mdio_write(sc, 0x06, 0xF8EB); + re_mdio_write(sc, 0x06, 0x00E0); + re_mdio_write(sc, 0x06, 0xF87C); + re_mdio_write(sc, 0x06, 0xE1F8); + re_mdio_write(sc, 0x06, 0x7D59); + re_mdio_write(sc, 0x06, 0x0FEF); + re_mdio_write(sc, 0x06, 0x0139); + re_mdio_write(sc, 0x06, 0x029E); + re_mdio_write(sc, 0x06, 0x06EF); + re_mdio_write(sc, 0x06, 0x1039); + re_mdio_write(sc, 0x06, 0x089F); + re_mdio_write(sc, 0x06, 0x2AEE); + re_mdio_write(sc, 0x06, 0xF8EA); + re_mdio_write(sc, 0x06, 0x00EE); + re_mdio_write(sc, 0x06, 0xF8EB); + re_mdio_write(sc, 0x06, 0x01E0); + re_mdio_write(sc, 0x06, 0xF87C); + re_mdio_write(sc, 0x06, 0xE1F8); + re_mdio_write(sc, 0x06, 0x7D58); + re_mdio_write(sc, 0x06, 0x409E); + re_mdio_write(sc, 0x06, 0x0F39); + re_mdio_write(sc, 0x06, 0x46AA); + re_mdio_write(sc, 0x06, 0x0BBF); + re_mdio_write(sc, 0x06, 0x8251); + re_mdio_write(sc, 0x06, 0xD682); + re_mdio_write(sc, 0x06, 0x5902); + re_mdio_write(sc, 0x06, 0x014F); + re_mdio_write(sc, 0x06, 0xAE09); + re_mdio_write(sc, 0x06, 0xBF82); + re_mdio_write(sc, 0x06, 0x59D6); + re_mdio_write(sc, 0x06, 0x8261); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x4FEF); + re_mdio_write(sc, 0x06, 0x95FE); + re_mdio_write(sc, 0x06, 0xFDFC); + re_mdio_write(sc, 0x06, 0x054D); + re_mdio_write(sc, 0x06, 0x2000); + re_mdio_write(sc, 0x06, 0x024E); + re_mdio_write(sc, 0x06, 0x2200); + re_mdio_write(sc, 0x06, 0x024D); + re_mdio_write(sc, 0x06, 0xDFFF); + re_mdio_write(sc, 0x06, 0x014E); + re_mdio_write(sc, 0x06, 0xDDFF); + re_mdio_write(sc, 0x06, 0x0100); + re_mdio_write(sc, 0x02, 0x6010); + re_mdio_write(sc, 0x05, 0xFFF6); + re_mdio_write(sc, 0x06, 0x00EC); + re_mdio_write(sc, 0x05, 0x83D4); + re_mdio_write(sc, 0x06, 0x8200); + + } else if (sc->re_type == MACFG_33) { + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x06, 0x4064); + re_mdio_write(sc, 0x07, 0x2863); + re_mdio_write(sc, 0x08, 0x059C); + re_mdio_write(sc, 0x09, 0x26B4); + re_mdio_write(sc, 0x0A, 0x6A19); + re_mdio_write(sc, 0x0B, 0xDCC8); + re_mdio_write(sc, 0x10, 0xF06D); + re_mdio_write(sc, 0x14, 0x7F68); + re_mdio_write(sc, 0x18, 0x7FD9); + re_mdio_write(sc, 0x1C, 0xF0FF); + re_mdio_write(sc, 0x1D, 0x3D9C); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x12, 0xF49F); + re_mdio_write(sc, 0x13, 0x070B); + re_mdio_write(sc, 0x1A, 0x05AD); + re_mdio_write(sc, 0x14, 0x94C0); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x06, 0x5561); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8332); + re_mdio_write(sc, 0x06, 0x5561); + + if (re_efuse_read(sc, 0x01) == 0xb1) { + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x05, 0x669A); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8330); + re_mdio_write(sc, 0x06, 0x669A); + + re_mdio_write(sc, 0x1F, 0x0002); + Data = re_mdio_read(sc, 0x0D); + if ((Data & 0x00FF) != 0x006C) { + Data &= 0xFF00; + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x0D, Data | 0x0065); + re_mdio_write(sc, 0x0D, Data | 0x0066); + re_mdio_write(sc, 0x0D, Data | 0x0067); + re_mdio_write(sc, 0x0D, Data | 0x0068); + re_mdio_write(sc, 0x0D, Data | 0x0069); + re_mdio_write(sc, 0x0D, Data | 0x006A); + re_mdio_write(sc, 0x0D, Data | 0x006B); + re_mdio_write(sc, 0x0D, Data | 0x006C); + } + } else { + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x05, 0x2642); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8330); + re_mdio_write(sc, 0x06, 0x2642); + } - if (phy_power_saving == 1) { - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x8310); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x0310); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - DELAY(20000); - } - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0007); - MP_WritePhyUshort(sc, 0x0E, 0x003C); - MP_WritePhyUshort(sc, 0x0D, 0x4007); - MP_WritePhyUshort(sc, 0x0E, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0000); - } - else if (sc->re_type == MACFG_54 || sc->re_type == MACFG_55) { - Data_u32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); - Data_u32 &= 0xFFFF0000; - re_eri_write(sc, 0x1D0, 4, Data_u32, ERIAR_ExGMAC); - - if (sc->re_type == MACFG_55) { - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x0310); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0004); - MP_WritePhyUshort(sc, 0x1f, 0x0004); - MP_WritePhyUshort(sc, 0x19, 0x7070); - MP_WritePhyUshort(sc, 0x1c, 0x0600); - MP_WritePhyUshort(sc, 0x1d, 0x9700); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x4007); - MP_WritePhyUshort(sc, 0x1d, 0x4400); - MP_WritePhyUshort(sc, 0x1d, 0x4800); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x5310); - MP_WritePhyUshort(sc, 0x1d, 0x6000); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x673e); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x571f); - MP_WritePhyUshort(sc, 0x1d, 0x5ffb); - MP_WritePhyUshort(sc, 0x1d, 0xaa04); - MP_WritePhyUshort(sc, 0x1d, 0x5b58); - MP_WritePhyUshort(sc, 0x1d, 0x6100); - MP_WritePhyUshort(sc, 0x1d, 0x3016); - MP_WritePhyUshort(sc, 0x1d, 0x5b64); - MP_WritePhyUshort(sc, 0x1d, 0x6080); - MP_WritePhyUshort(sc, 0x1d, 0xa6fa); - MP_WritePhyUshort(sc, 0x1d, 0xdcdb); - MP_WritePhyUshort(sc, 0x1d, 0x0015); - MP_WritePhyUshort(sc, 0x1d, 0xb915); - MP_WritePhyUshort(sc, 0x1d, 0xb511); - MP_WritePhyUshort(sc, 0x1d, 0xd16b); - MP_WritePhyUshort(sc, 0x1d, 0x000f); - MP_WritePhyUshort(sc, 0x1d, 0xb40f); - MP_WritePhyUshort(sc, 0x1d, 0xd06b); - MP_WritePhyUshort(sc, 0x1d, 0x000d); - MP_WritePhyUshort(sc, 0x1d, 0xb206); - MP_WritePhyUshort(sc, 0x1d, 0x7c01); - MP_WritePhyUshort(sc, 0x1d, 0x5800); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x5c00); - MP_WritePhyUshort(sc, 0x1d, 0x3010); - MP_WritePhyUshort(sc, 0x1d, 0x7c01); - MP_WritePhyUshort(sc, 0x1d, 0x5801); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x5c04); - MP_WritePhyUshort(sc, 0x1d, 0x3016); - MP_WritePhyUshort(sc, 0x1d, 0x307e); - MP_WritePhyUshort(sc, 0x1d, 0x30f4); - MP_WritePhyUshort(sc, 0x1d, 0x319f); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4c60); - MP_WritePhyUshort(sc, 0x1d, 0x6803); - MP_WritePhyUshort(sc, 0x1d, 0x7d00); - MP_WritePhyUshort(sc, 0x1d, 0x6900); - MP_WritePhyUshort(sc, 0x1d, 0x6520); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0xaf03); - MP_WritePhyUshort(sc, 0x1d, 0x6115); - MP_WritePhyUshort(sc, 0x1d, 0x303a); - MP_WritePhyUshort(sc, 0x1d, 0x6097); - MP_WritePhyUshort(sc, 0x1d, 0x57e0); - MP_WritePhyUshort(sc, 0x1d, 0x580c); - MP_WritePhyUshort(sc, 0x1d, 0x588c); - MP_WritePhyUshort(sc, 0x1d, 0x5f80); - MP_WritePhyUshort(sc, 0x1d, 0x4827); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c10); - MP_WritePhyUshort(sc, 0x1d, 0x8400); - MP_WritePhyUshort(sc, 0x1d, 0x7c30); - MP_WritePhyUshort(sc, 0x1d, 0x6020); - MP_WritePhyUshort(sc, 0x1d, 0x48bf); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0xb802); - MP_WritePhyUshort(sc, 0x1d, 0x3053); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x6808); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x7c10); - MP_WritePhyUshort(sc, 0x1d, 0x6810); - MP_WritePhyUshort(sc, 0x1d, 0xd6cf); - MP_WritePhyUshort(sc, 0x1d, 0x0002); - MP_WritePhyUshort(sc, 0x1d, 0x80fe); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4c80); - MP_WritePhyUshort(sc, 0x1d, 0x7c10); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x7c23); - MP_WritePhyUshort(sc, 0x1d, 0x5c23); - MP_WritePhyUshort(sc, 0x1d, 0x481e); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c02); - MP_WritePhyUshort(sc, 0x1d, 0x5310); - MP_WritePhyUshort(sc, 0x1d, 0x81ff); - MP_WritePhyUshort(sc, 0x1d, 0x30c1); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4d00); - MP_WritePhyUshort(sc, 0x1d, 0x4832); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c10); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x6000); - MP_WritePhyUshort(sc, 0x1d, 0xa4bd); - MP_WritePhyUshort(sc, 0x1d, 0xd9b3); - MP_WritePhyUshort(sc, 0x1d, 0x00fe); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4d20); - MP_WritePhyUshort(sc, 0x1d, 0x7e00); - MP_WritePhyUshort(sc, 0x1d, 0x6200); - MP_WritePhyUshort(sc, 0x1d, 0x3001); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4dc0); - MP_WritePhyUshort(sc, 0x1d, 0xd09d); - MP_WritePhyUshort(sc, 0x1d, 0x0002); - MP_WritePhyUshort(sc, 0x1d, 0xb4fe); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4d80); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x6004); - MP_WritePhyUshort(sc, 0x1d, 0x6802); - MP_WritePhyUshort(sc, 0x1d, 0x6728); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x6000); - MP_WritePhyUshort(sc, 0x1d, 0x486c); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x9503); - MP_WritePhyUshort(sc, 0x1d, 0x7e00); - MP_WritePhyUshort(sc, 0x1d, 0x6200); - MP_WritePhyUshort(sc, 0x1d, 0x571f); - MP_WritePhyUshort(sc, 0x1d, 0x5fbb); - MP_WritePhyUshort(sc, 0x1d, 0xaa05); - MP_WritePhyUshort(sc, 0x1d, 0x5b58); - MP_WritePhyUshort(sc, 0x1d, 0x7d80); - MP_WritePhyUshort(sc, 0x1d, 0x6100); - MP_WritePhyUshort(sc, 0x1d, 0x309a); - MP_WritePhyUshort(sc, 0x1d, 0x5b64); - MP_WritePhyUshort(sc, 0x1d, 0x7d80); - MP_WritePhyUshort(sc, 0x1d, 0x6080); - MP_WritePhyUshort(sc, 0x1d, 0xcdab); - MP_WritePhyUshort(sc, 0x1d, 0x0058); - MP_WritePhyUshort(sc, 0x1d, 0xcd8d); - MP_WritePhyUshort(sc, 0x1d, 0x0056); - MP_WritePhyUshort(sc, 0x1d, 0xd96b); - MP_WritePhyUshort(sc, 0x1d, 0x0054); - MP_WritePhyUshort(sc, 0x1d, 0xd0a0); - MP_WritePhyUshort(sc, 0x1d, 0x00d8); - MP_WritePhyUshort(sc, 0x1d, 0xcba0); - MP_WritePhyUshort(sc, 0x1d, 0x0003); - MP_WritePhyUshort(sc, 0x1d, 0x80ec); - MP_WritePhyUshort(sc, 0x1d, 0x30a7); - MP_WritePhyUshort(sc, 0x1d, 0x30b4); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4ce0); - MP_WritePhyUshort(sc, 0x1d, 0x4832); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c08); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x6008); - MP_WritePhyUshort(sc, 0x1d, 0x8300); - MP_WritePhyUshort(sc, 0x1d, 0xb902); - MP_WritePhyUshort(sc, 0x1d, 0x307e); - MP_WritePhyUshort(sc, 0x1d, 0x3068); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4da0); - MP_WritePhyUshort(sc, 0x1d, 0x6608); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x56a0); - MP_WritePhyUshort(sc, 0x1d, 0x590c); - MP_WritePhyUshort(sc, 0x1d, 0x5fa0); - MP_WritePhyUshort(sc, 0x1d, 0xcba4); - MP_WritePhyUshort(sc, 0x1d, 0x0004); - MP_WritePhyUshort(sc, 0x1d, 0xcd8d); - MP_WritePhyUshort(sc, 0x1d, 0x0002); - MP_WritePhyUshort(sc, 0x1d, 0x80fc); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4ca0); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x6408); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x7d00); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0xb603); - MP_WritePhyUshort(sc, 0x1d, 0x7c10); - MP_WritePhyUshort(sc, 0x1d, 0x6010); - MP_WritePhyUshort(sc, 0x1d, 0x7d1f); - MP_WritePhyUshort(sc, 0x1d, 0x551f); - MP_WritePhyUshort(sc, 0x1d, 0x5fb3); - MP_WritePhyUshort(sc, 0x1d, 0xaa05); - MP_WritePhyUshort(sc, 0x1d, 0x7c80); - MP_WritePhyUshort(sc, 0x1d, 0x5800); - MP_WritePhyUshort(sc, 0x1d, 0x5b58); - MP_WritePhyUshort(sc, 0x1d, 0x30d7); - MP_WritePhyUshort(sc, 0x1d, 0x7c80); - MP_WritePhyUshort(sc, 0x1d, 0x5800); - MP_WritePhyUshort(sc, 0x1d, 0x5b64); - MP_WritePhyUshort(sc, 0x1d, 0x4827); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c10); - MP_WritePhyUshort(sc, 0x1d, 0x8400); - MP_WritePhyUshort(sc, 0x1d, 0x7c10); - MP_WritePhyUshort(sc, 0x1d, 0x6000); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4cc0); - MP_WritePhyUshort(sc, 0x1d, 0x7d00); - MP_WritePhyUshort(sc, 0x1d, 0x6400); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x5fbb); - MP_WritePhyUshort(sc, 0x1d, 0x4824); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c00); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c04); - MP_WritePhyUshort(sc, 0x1d, 0x8200); - MP_WritePhyUshort(sc, 0x1d, 0x7ce0); - MP_WritePhyUshort(sc, 0x1d, 0x5400); - MP_WritePhyUshort(sc, 0x1d, 0x7d00); - MP_WritePhyUshort(sc, 0x1d, 0x6500); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x30a7); - MP_WritePhyUshort(sc, 0x1d, 0x3001); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4e00); - MP_WritePhyUshort(sc, 0x1d, 0x4007); - MP_WritePhyUshort(sc, 0x1d, 0x4400); - MP_WritePhyUshort(sc, 0x1d, 0x5310); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x673e); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x570f); - MP_WritePhyUshort(sc, 0x1d, 0x5fff); - MP_WritePhyUshort(sc, 0x1d, 0xaa05); - MP_WritePhyUshort(sc, 0x1d, 0x585b); - MP_WritePhyUshort(sc, 0x1d, 0x7d80); - MP_WritePhyUshort(sc, 0x1d, 0x6100); - MP_WritePhyUshort(sc, 0x1d, 0x3107); - MP_WritePhyUshort(sc, 0x1d, 0x5867); - MP_WritePhyUshort(sc, 0x1d, 0x7d80); - MP_WritePhyUshort(sc, 0x1d, 0x6080); - MP_WritePhyUshort(sc, 0x1d, 0x9403); - MP_WritePhyUshort(sc, 0x1d, 0x7e00); - MP_WritePhyUshort(sc, 0x1d, 0x6200); - MP_WritePhyUshort(sc, 0x1d, 0xcda3); - MP_WritePhyUshort(sc, 0x1d, 0x00e8); - MP_WritePhyUshort(sc, 0x1d, 0xcd85); - MP_WritePhyUshort(sc, 0x1d, 0x00e6); - MP_WritePhyUshort(sc, 0x1d, 0xd96b); - MP_WritePhyUshort(sc, 0x1d, 0x00e4); - MP_WritePhyUshort(sc, 0x1d, 0x96e4); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x673e); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4e20); - MP_WritePhyUshort(sc, 0x1d, 0x96dd); - MP_WritePhyUshort(sc, 0x1d, 0x8b04); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x5008); - MP_WritePhyUshort(sc, 0x1d, 0xab03); - MP_WritePhyUshort(sc, 0x1d, 0x7c08); - MP_WritePhyUshort(sc, 0x1d, 0x5000); - MP_WritePhyUshort(sc, 0x1d, 0x6801); - MP_WritePhyUshort(sc, 0x1d, 0x677e); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0xdb7c); - MP_WritePhyUshort(sc, 0x1d, 0x00ee); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x7fe1); - MP_WritePhyUshort(sc, 0x1d, 0x4e40); - MP_WritePhyUshort(sc, 0x1d, 0x4837); - MP_WritePhyUshort(sc, 0x1d, 0x4418); - MP_WritePhyUshort(sc, 0x1d, 0x41c7); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4e40); - MP_WritePhyUshort(sc, 0x1d, 0x7c40); - MP_WritePhyUshort(sc, 0x1d, 0x5400); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x8fc2); - MP_WritePhyUshort(sc, 0x1d, 0xd2a0); - MP_WritePhyUshort(sc, 0x1d, 0x004b); - MP_WritePhyUshort(sc, 0x1d, 0x9204); - MP_WritePhyUshort(sc, 0x1d, 0xa042); - MP_WritePhyUshort(sc, 0x1d, 0x3132); - MP_WritePhyUshort(sc, 0x1d, 0x30f4); - MP_WritePhyUshort(sc, 0x1d, 0x7fe1); - MP_WritePhyUshort(sc, 0x1d, 0x4e60); - MP_WritePhyUshort(sc, 0x1d, 0x489c); - MP_WritePhyUshort(sc, 0x1d, 0x4628); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4e60); - MP_WritePhyUshort(sc, 0x1d, 0x7e28); - MP_WritePhyUshort(sc, 0x1d, 0x4628); - MP_WritePhyUshort(sc, 0x1d, 0x7c40); - MP_WritePhyUshort(sc, 0x1d, 0x5400); - MP_WritePhyUshort(sc, 0x1d, 0x7c01); - MP_WritePhyUshort(sc, 0x1d, 0x5800); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x5c00); - MP_WritePhyUshort(sc, 0x1d, 0x41e8); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x8fa8); - MP_WritePhyUshort(sc, 0x1d, 0xb241); - MP_WritePhyUshort(sc, 0x1d, 0xa02a); - MP_WritePhyUshort(sc, 0x1d, 0x314c); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4ea0); - MP_WritePhyUshort(sc, 0x1d, 0x7c02); - MP_WritePhyUshort(sc, 0x1d, 0x4402); - MP_WritePhyUshort(sc, 0x1d, 0x4448); - MP_WritePhyUshort(sc, 0x1d, 0x4894); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c03); - MP_WritePhyUshort(sc, 0x1d, 0x4824); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c07); - MP_WritePhyUshort(sc, 0x1d, 0x41ef); - MP_WritePhyUshort(sc, 0x1d, 0x41ff); - MP_WritePhyUshort(sc, 0x1d, 0x4891); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c07); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c17); - MP_WritePhyUshort(sc, 0x1d, 0x8400); - MP_WritePhyUshort(sc, 0x1d, 0x8ef8); - MP_WritePhyUshort(sc, 0x1d, 0x41c7); - MP_WritePhyUshort(sc, 0x1d, 0x8f8d); - MP_WritePhyUshort(sc, 0x1d, 0x92d5); - MP_WritePhyUshort(sc, 0x1d, 0xa10f); - MP_WritePhyUshort(sc, 0x1d, 0xd480); - MP_WritePhyUshort(sc, 0x1d, 0x0008); - MP_WritePhyUshort(sc, 0x1d, 0xd580); - MP_WritePhyUshort(sc, 0x1d, 0x00b8); - MP_WritePhyUshort(sc, 0x1d, 0xa202); - MP_WritePhyUshort(sc, 0x1d, 0x3167); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x4404); - MP_WritePhyUshort(sc, 0x1d, 0x3167); - MP_WritePhyUshort(sc, 0x1d, 0xd484); - MP_WritePhyUshort(sc, 0x1d, 0x00f3); - MP_WritePhyUshort(sc, 0x1d, 0xd484); - MP_WritePhyUshort(sc, 0x1d, 0x00f1); - MP_WritePhyUshort(sc, 0x1d, 0x30f4); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4ee0); - MP_WritePhyUshort(sc, 0x1d, 0x7c40); - MP_WritePhyUshort(sc, 0x1d, 0x5400); - MP_WritePhyUshort(sc, 0x1d, 0x4488); - MP_WritePhyUshort(sc, 0x1d, 0x41cf); - MP_WritePhyUshort(sc, 0x1d, 0x30f4); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4ec0); - MP_WritePhyUshort(sc, 0x1d, 0x48f3); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c09); - MP_WritePhyUshort(sc, 0x1d, 0x4508); - MP_WritePhyUshort(sc, 0x1d, 0x41c7); - MP_WritePhyUshort(sc, 0x1d, 0x8fb0); - MP_WritePhyUshort(sc, 0x1d, 0xd218); - MP_WritePhyUshort(sc, 0x1d, 0x00ae); - MP_WritePhyUshort(sc, 0x1d, 0xd2a4); - MP_WritePhyUshort(sc, 0x1d, 0x009e); - MP_WritePhyUshort(sc, 0x1d, 0x3188); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4e80); - MP_WritePhyUshort(sc, 0x1d, 0x4832); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c01); - MP_WritePhyUshort(sc, 0x1d, 0x7c1f); - MP_WritePhyUshort(sc, 0x1d, 0x4c11); - MP_WritePhyUshort(sc, 0x1d, 0x4428); - MP_WritePhyUshort(sc, 0x1d, 0x7c40); - MP_WritePhyUshort(sc, 0x1d, 0x5440); - MP_WritePhyUshort(sc, 0x1d, 0x7c01); - MP_WritePhyUshort(sc, 0x1d, 0x5801); - MP_WritePhyUshort(sc, 0x1d, 0x7c04); - MP_WritePhyUshort(sc, 0x1d, 0x5c04); - MP_WritePhyUshort(sc, 0x1d, 0x41e8); - MP_WritePhyUshort(sc, 0x1d, 0xa4b3); - MP_WritePhyUshort(sc, 0x1d, 0x319d); - MP_WritePhyUshort(sc, 0x1d, 0x7fe0); - MP_WritePhyUshort(sc, 0x1d, 0x4f20); - MP_WritePhyUshort(sc, 0x1d, 0x6800); - MP_WritePhyUshort(sc, 0x1d, 0x673e); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x0000); - MP_WritePhyUshort(sc, 0x1d, 0x570f); - MP_WritePhyUshort(sc, 0x1d, 0x5fff); - MP_WritePhyUshort(sc, 0x1d, 0xaa04); - MP_WritePhyUshort(sc, 0x1d, 0x585b); - MP_WritePhyUshort(sc, 0x1d, 0x6100); - MP_WritePhyUshort(sc, 0x1d, 0x31ad); - MP_WritePhyUshort(sc, 0x1d, 0x5867); - MP_WritePhyUshort(sc, 0x1d, 0x6080); - MP_WritePhyUshort(sc, 0x1d, 0xbcf2); - MP_WritePhyUshort(sc, 0x1d, 0x3001); - MP_WritePhyUshort(sc, 0x1f, 0x0004); - MP_WritePhyUshort(sc, 0x1c, 0x0200); - MP_WritePhyUshort(sc, 0x19, 0x7030); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - } - - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x11, 0x83BA); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - ClearEthPhyBit(sc, 0x1A, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); + if (re_efuse_read(sc, 0x30) == 0x98) { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x11, re_mdio_read(sc, 0x11) & ~0x02); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x01, re_mdio_read(sc, 0x01) | 0x200); + } else if (re_efuse_read(sc, 0x30) == 0x90) { + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x01, re_mdio_read(sc, 0x01) & ~0x200); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x16, 0x5101); + } - if (phy_power_saving == 1) { - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x8310); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x18, 0x0310); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - DELAY(20000); - } - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0007); - MP_WritePhyUshort(sc, 0x0E, 0x003C); - MP_WritePhyUshort(sc, 0x0D, 0x4007); - MP_WritePhyUshort(sc, 0x0E, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0000); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0003); - MP_WritePhyUshort(sc, 0x0E, 0x0015); - MP_WritePhyUshort(sc, 0x0D, 0x4003); - MP_WritePhyUshort(sc, 0x0E, 0x0000); - MP_WritePhyUshort(sc, 0x0D, 0x0000); - } - else if (sc->re_type == MACFG_56) { - MP_WritePhyUshort(sc, 0x1F, 0x0A46); - PhyRegValue = MP_ReadPhyUshort(sc, 0x10); - TmpUshort = (PhyRegValue & BIT_8) ? 0 : BIT_15; - - MP_WritePhyUshort(sc, 0x1F, 0x0BCC); - ClearEthPhyBit(sc, 0x12, BIT_15); - SetEthPhyBit(sc, 0x12, TmpUshort); - - - MP_WritePhyUshort(sc, 0x1F, 0x0A46); - PhyRegValue = MP_ReadPhyUshort(sc, 0x13); - TmpUshort = (PhyRegValue & BIT_8) ? BIT_1 : 0; - - MP_WritePhyUshort(sc, 0x1F, 0x0C41); - ClearEthPhyBit(sc, 0x15, BIT_1); - SetEthPhyBit(sc, 0x15, TmpUshort); - - MP_WritePhyUshort(sc, 0x1F, 0x0A44); - SetEthPhyBit(sc, 0x11, (BIT_3 | BIT_2)); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - - MP_WritePhyUshort(sc, 0x1F, 0x0BCC); - ClearEthPhyBit(sc, 0x14, BIT_8); - MP_WritePhyUshort(sc, 0x1F, 0x0A44); - SetEthPhyBit(sc, 0x11, BIT_7); - SetEthPhyBit(sc, 0x11, BIT_6); - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8084); - ClearEthPhyBit(sc, 0x14, (BIT_14 | BIT_13)); - SetEthPhyBit(sc, 0x10, BIT_12); - SetEthPhyBit(sc, 0x10, BIT_1); - SetEthPhyBit(sc, 0x10, BIT_0); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - - MP_WritePhyUshort(sc, 0x1F, 0x0A4B); - SetEthPhyBit(sc, 0x11, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8012); - SetEthPhyBit(sc, 0x14, BIT_15); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - - - MP_WritePhyUshort(sc, 0x1F, 0x0C42); - ClearAndSetEthPhyBit(sc, - 0x11, - BIT_13, - BIT_14 - ); - MP_WritePhyUshort(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x1F, 0x0002); + Data = re_mdio_read(sc, 0x02); + Data &= ~0x600; + Data |= 0x100; + re_mdio_write(sc, 0x02, Data); + Data = re_mdio_read(sc, 0x03); + Data &= ~0xE000; + re_mdio_write(sc, 0x03, Data); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x17, 0x0CC0); + + re_mdio_write(sc, 0x1F, 0x0002); + Data = re_mdio_read(sc, 0x0F); + Data |= 0x17; + re_mdio_write(sc, 0x0F, Data); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x001B); + if (re_mdio_read(sc, 0x06) == 0xB300) { + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x0080); + re_mdio_write(sc, 0x05, 0x8000); + re_mdio_write(sc, 0x06, 0xf8f9); + re_mdio_write(sc, 0x06, 0xfaee); + re_mdio_write(sc, 0x06, 0xf8ea); + re_mdio_write(sc, 0x06, 0x00ee); + re_mdio_write(sc, 0x06, 0xf8eb); + re_mdio_write(sc, 0x06, 0x00e2); + re_mdio_write(sc, 0x06, 0xf87c); + re_mdio_write(sc, 0x06, 0xe3f8); + re_mdio_write(sc, 0x06, 0x7da5); + re_mdio_write(sc, 0x06, 0x1111); + re_mdio_write(sc, 0x06, 0x12d2); + re_mdio_write(sc, 0x06, 0x40d6); + re_mdio_write(sc, 0x06, 0x4444); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0xc6d2); + re_mdio_write(sc, 0x06, 0xa0d6); + re_mdio_write(sc, 0x06, 0xaaaa); + re_mdio_write(sc, 0x06, 0x0281); + re_mdio_write(sc, 0x06, 0xc6ae); + re_mdio_write(sc, 0x06, 0x0fa5); + re_mdio_write(sc, 0x06, 0x4444); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x4da5); + re_mdio_write(sc, 0x06, 0xaaaa); + re_mdio_write(sc, 0x06, 0x02ae); + re_mdio_write(sc, 0x06, 0x47af); + re_mdio_write(sc, 0x06, 0x81c2); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4e00); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4d0f); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4c0f); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4f00); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x5100); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4aff); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4bff); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x30e1); + re_mdio_write(sc, 0x06, 0x8331); + re_mdio_write(sc, 0x06, 0x58fe); + re_mdio_write(sc, 0x06, 0xe4f8); + re_mdio_write(sc, 0x06, 0x8ae5); + re_mdio_write(sc, 0x06, 0xf88b); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x32e1); + re_mdio_write(sc, 0x06, 0x8333); + re_mdio_write(sc, 0x06, 0x590f); + re_mdio_write(sc, 0x06, 0xe283); + re_mdio_write(sc, 0x06, 0x4d0c); + re_mdio_write(sc, 0x06, 0x245a); + re_mdio_write(sc, 0x06, 0xf01e); + re_mdio_write(sc, 0x06, 0x12e4); + re_mdio_write(sc, 0x06, 0xf88c); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0x8daf); + re_mdio_write(sc, 0x06, 0x81c2); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4f10); + re_mdio_write(sc, 0x06, 0xe483); + re_mdio_write(sc, 0x06, 0x4fe0); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x7800); + re_mdio_write(sc, 0x06, 0x9f0a); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4fa0); + re_mdio_write(sc, 0x06, 0x10a5); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4e01); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4e78); + re_mdio_write(sc, 0x06, 0x059e); + re_mdio_write(sc, 0x06, 0x9ae0); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x7804); + re_mdio_write(sc, 0x06, 0x9e10); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4e78); + re_mdio_write(sc, 0x06, 0x039e); + re_mdio_write(sc, 0x06, 0x0fe0); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x7801); + re_mdio_write(sc, 0x06, 0x9e05); + re_mdio_write(sc, 0x06, 0xae0c); + re_mdio_write(sc, 0x06, 0xaf81); + re_mdio_write(sc, 0x06, 0xa7af); + re_mdio_write(sc, 0x06, 0x8152); + re_mdio_write(sc, 0x06, 0xaf81); + re_mdio_write(sc, 0x06, 0x8baf); + re_mdio_write(sc, 0x06, 0x81c2); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4800); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4900); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x5110); + re_mdio_write(sc, 0x06, 0xe483); + re_mdio_write(sc, 0x06, 0x5158); + re_mdio_write(sc, 0x06, 0x019f); + re_mdio_write(sc, 0x06, 0xead0); + re_mdio_write(sc, 0x06, 0x00d1); + re_mdio_write(sc, 0x06, 0x801f); + re_mdio_write(sc, 0x06, 0x66e2); + re_mdio_write(sc, 0x06, 0xf8ea); + re_mdio_write(sc, 0x06, 0xe3f8); + re_mdio_write(sc, 0x06, 0xeb5a); + re_mdio_write(sc, 0x06, 0xf81e); + re_mdio_write(sc, 0x06, 0x20e6); + re_mdio_write(sc, 0x06, 0xf8ea); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0xebd3); + re_mdio_write(sc, 0x06, 0x02b3); + re_mdio_write(sc, 0x06, 0xfee2); + re_mdio_write(sc, 0x06, 0xf87c); + re_mdio_write(sc, 0x06, 0xef32); + re_mdio_write(sc, 0x06, 0x5b80); + re_mdio_write(sc, 0x06, 0xe3f8); + re_mdio_write(sc, 0x06, 0x7d9e); + re_mdio_write(sc, 0x06, 0x037d); + re_mdio_write(sc, 0x06, 0xffff); + re_mdio_write(sc, 0x06, 0x0d58); + re_mdio_write(sc, 0x06, 0x1c55); + re_mdio_write(sc, 0x06, 0x1a65); + re_mdio_write(sc, 0x06, 0x11a1); + re_mdio_write(sc, 0x06, 0x90d3); + re_mdio_write(sc, 0x06, 0xe283); + re_mdio_write(sc, 0x06, 0x48e3); + re_mdio_write(sc, 0x06, 0x8349); + re_mdio_write(sc, 0x06, 0x1b56); + re_mdio_write(sc, 0x06, 0xab08); + re_mdio_write(sc, 0x06, 0xef56); + re_mdio_write(sc, 0x06, 0xe683); + re_mdio_write(sc, 0x06, 0x48e7); + re_mdio_write(sc, 0x06, 0x8349); + re_mdio_write(sc, 0x06, 0x10d1); + re_mdio_write(sc, 0x06, 0x801f); + re_mdio_write(sc, 0x06, 0x66a0); + re_mdio_write(sc, 0x06, 0x04b9); + re_mdio_write(sc, 0x06, 0xe283); + re_mdio_write(sc, 0x06, 0x48e3); + re_mdio_write(sc, 0x06, 0x8349); + re_mdio_write(sc, 0x06, 0xef65); + re_mdio_write(sc, 0x06, 0xe283); + re_mdio_write(sc, 0x06, 0x4ae3); + re_mdio_write(sc, 0x06, 0x834b); + re_mdio_write(sc, 0x06, 0x1b56); + re_mdio_write(sc, 0x06, 0xaa0e); + re_mdio_write(sc, 0x06, 0xef56); + re_mdio_write(sc, 0x06, 0xe683); + re_mdio_write(sc, 0x06, 0x4ae7); + re_mdio_write(sc, 0x06, 0x834b); + re_mdio_write(sc, 0x06, 0xe283); + re_mdio_write(sc, 0x06, 0x4de6); + re_mdio_write(sc, 0x06, 0x834c); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4da0); + re_mdio_write(sc, 0x06, 0x000c); + re_mdio_write(sc, 0x06, 0xaf81); + re_mdio_write(sc, 0x06, 0x8be0); + re_mdio_write(sc, 0x06, 0x834d); + re_mdio_write(sc, 0x06, 0x10e4); + re_mdio_write(sc, 0x06, 0x834d); + re_mdio_write(sc, 0x06, 0xae04); + re_mdio_write(sc, 0x06, 0x80e4); + re_mdio_write(sc, 0x06, 0x834d); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x4e78); + re_mdio_write(sc, 0x06, 0x039e); + re_mdio_write(sc, 0x06, 0x0be0); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x7804); + re_mdio_write(sc, 0x06, 0x9e04); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4e02); + re_mdio_write(sc, 0x06, 0xe083); + re_mdio_write(sc, 0x06, 0x32e1); + re_mdio_write(sc, 0x06, 0x8333); + re_mdio_write(sc, 0x06, 0x590f); + re_mdio_write(sc, 0x06, 0xe283); + re_mdio_write(sc, 0x06, 0x4d0c); + re_mdio_write(sc, 0x06, 0x245a); + re_mdio_write(sc, 0x06, 0xf01e); + re_mdio_write(sc, 0x06, 0x12e4); + re_mdio_write(sc, 0x06, 0xf88c); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0x8de0); + re_mdio_write(sc, 0x06, 0x8330); + re_mdio_write(sc, 0x06, 0xe183); + re_mdio_write(sc, 0x06, 0x3168); + re_mdio_write(sc, 0x06, 0x01e4); + re_mdio_write(sc, 0x06, 0xf88a); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0x8bae); + re_mdio_write(sc, 0x06, 0x37ee); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x03e0); + re_mdio_write(sc, 0x06, 0x834c); + re_mdio_write(sc, 0x06, 0xe183); + re_mdio_write(sc, 0x06, 0x4d1b); + re_mdio_write(sc, 0x06, 0x019e); + re_mdio_write(sc, 0x06, 0x04aa); + re_mdio_write(sc, 0x06, 0xa1ae); + re_mdio_write(sc, 0x06, 0xa8ee); + re_mdio_write(sc, 0x06, 0x834e); + re_mdio_write(sc, 0x06, 0x04ee); + re_mdio_write(sc, 0x06, 0x834f); + re_mdio_write(sc, 0x06, 0x00ae); + re_mdio_write(sc, 0x06, 0xabe0); + re_mdio_write(sc, 0x06, 0x834f); + re_mdio_write(sc, 0x06, 0x7803); + re_mdio_write(sc, 0x06, 0x9f14); + re_mdio_write(sc, 0x06, 0xee83); + re_mdio_write(sc, 0x06, 0x4e05); + re_mdio_write(sc, 0x06, 0xd240); + re_mdio_write(sc, 0x06, 0xd655); + re_mdio_write(sc, 0x06, 0x5402); + re_mdio_write(sc, 0x06, 0x81c6); + re_mdio_write(sc, 0x06, 0xd2a0); + re_mdio_write(sc, 0x06, 0xd6ba); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x81c6); + re_mdio_write(sc, 0x06, 0xfefd); + re_mdio_write(sc, 0x06, 0xfc05); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0xf860); + re_mdio_write(sc, 0x06, 0xe1f8); + re_mdio_write(sc, 0x06, 0x6168); + re_mdio_write(sc, 0x06, 0x02e4); + re_mdio_write(sc, 0x06, 0xf860); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0x61e0); + re_mdio_write(sc, 0x06, 0xf848); + re_mdio_write(sc, 0x06, 0xe1f8); + re_mdio_write(sc, 0x06, 0x4958); + re_mdio_write(sc, 0x06, 0x0f1e); + re_mdio_write(sc, 0x06, 0x02e4); + re_mdio_write(sc, 0x06, 0xf848); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0x49d0); + re_mdio_write(sc, 0x06, 0x0002); + re_mdio_write(sc, 0x06, 0x820a); + re_mdio_write(sc, 0x06, 0xbf83); + re_mdio_write(sc, 0x06, 0x50ef); + re_mdio_write(sc, 0x06, 0x46dc); + re_mdio_write(sc, 0x06, 0x19dd); + re_mdio_write(sc, 0x06, 0xd001); + re_mdio_write(sc, 0x06, 0x0282); + re_mdio_write(sc, 0x06, 0x0a02); + re_mdio_write(sc, 0x06, 0x8226); + re_mdio_write(sc, 0x06, 0xe0f8); + re_mdio_write(sc, 0x06, 0x60e1); + re_mdio_write(sc, 0x06, 0xf861); + re_mdio_write(sc, 0x06, 0x58fd); + re_mdio_write(sc, 0x06, 0xe4f8); + re_mdio_write(sc, 0x06, 0x60e5); + re_mdio_write(sc, 0x06, 0xf861); + re_mdio_write(sc, 0x06, 0xfc04); + re_mdio_write(sc, 0x06, 0xf9fa); + re_mdio_write(sc, 0x06, 0xfbc6); + re_mdio_write(sc, 0x06, 0xbff8); + re_mdio_write(sc, 0x06, 0x40be); + re_mdio_write(sc, 0x06, 0x8350); + re_mdio_write(sc, 0x06, 0xa001); + re_mdio_write(sc, 0x06, 0x0107); + re_mdio_write(sc, 0x06, 0x1b89); + re_mdio_write(sc, 0x06, 0xcfd2); + re_mdio_write(sc, 0x06, 0x08eb); + re_mdio_write(sc, 0x06, 0xdb19); + re_mdio_write(sc, 0x06, 0xb2fb); + re_mdio_write(sc, 0x06, 0xfffe); + re_mdio_write(sc, 0x06, 0xfd04); + re_mdio_write(sc, 0x06, 0xf8e0); + re_mdio_write(sc, 0x06, 0xf848); + re_mdio_write(sc, 0x06, 0xe1f8); + re_mdio_write(sc, 0x06, 0x4968); + re_mdio_write(sc, 0x06, 0x08e4); + re_mdio_write(sc, 0x06, 0xf848); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0x4958); + re_mdio_write(sc, 0x06, 0xf7e4); + re_mdio_write(sc, 0x06, 0xf848); + re_mdio_write(sc, 0x06, 0xe5f8); + re_mdio_write(sc, 0x06, 0x49fc); + re_mdio_write(sc, 0x06, 0x044d); + re_mdio_write(sc, 0x06, 0x2000); + re_mdio_write(sc, 0x06, 0x024e); + re_mdio_write(sc, 0x06, 0x2200); + re_mdio_write(sc, 0x06, 0x024d); + re_mdio_write(sc, 0x06, 0xdfff); + re_mdio_write(sc, 0x06, 0x014e); + re_mdio_write(sc, 0x06, 0xddff); + re_mdio_write(sc, 0x06, 0x01f8); + re_mdio_write(sc, 0x06, 0xfafb); + re_mdio_write(sc, 0x06, 0xef79); + re_mdio_write(sc, 0x06, 0xbff8); + re_mdio_write(sc, 0x06, 0x22d8); + re_mdio_write(sc, 0x06, 0x19d9); + re_mdio_write(sc, 0x06, 0x5884); + re_mdio_write(sc, 0x06, 0x9f09); + re_mdio_write(sc, 0x06, 0xbf82); + re_mdio_write(sc, 0x06, 0x6dd6); + re_mdio_write(sc, 0x06, 0x8275); + re_mdio_write(sc, 0x06, 0x0201); + re_mdio_write(sc, 0x06, 0x4fef); + re_mdio_write(sc, 0x06, 0x97ff); + re_mdio_write(sc, 0x06, 0xfefc); + re_mdio_write(sc, 0x06, 0x0517); + re_mdio_write(sc, 0x06, 0xfffe); + re_mdio_write(sc, 0x06, 0x0117); + re_mdio_write(sc, 0x06, 0x0001); + re_mdio_write(sc, 0x06, 0x0200); + re_mdio_write(sc, 0x05, 0x83d8); + re_mdio_write(sc, 0x06, 0x8000); + re_mdio_write(sc, 0x05, 0x83d6); + re_mdio_write(sc, 0x06, 0x824f); + re_mdio_write(sc, 0x02, 0x2010); + re_mdio_write(sc, 0x03, 0xdc00); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x0b, 0x0600); + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0xfff6); + re_mdio_write(sc, 0x06, 0x00fc); + re_mdio_write(sc, 0x1f, 0x0000); + } - if (phy_power_saving == 1) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - SetEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - ClearEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - DELAY(20000); - } - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x809A); - MP_WritePhyUshort(sc, 0x14, 0x8022); - MP_WritePhyUshort(sc, 0x13, 0x80A0); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x1000 - ); - MP_WritePhyUshort(sc, 0x13, 0x8088); - MP_WritePhyUshort(sc, 0x14, 0x9222); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8011); - ClearEthPhyBit(sc, 0x14, BIT_14); - MP_WritePhyUshort(sc, 0x1F, 0x0A40); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x9200); - } - else if (sc->re_type == MACFG_58) { - MP_WritePhyUshort(sc, 0x1F, 0x0BCC); - ClearEthPhyBit(sc, 0x14, BIT_8); - MP_WritePhyUshort(sc, 0x1F, 0x0A44); - SetEthPhyBit(sc, 0x11, BIT_7); - SetEthPhyBit(sc, 0x11, BIT_6); - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8084); - ClearEthPhyBit(sc, 0x14, (BIT_14 | BIT_13)); - SetEthPhyBit(sc, 0x10, BIT_12); - SetEthPhyBit(sc, 0x10, BIT_1); - SetEthPhyBit(sc, 0x10, BIT_0); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8012); - SetEthPhyBit(sc, 0x14, BIT_15); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0C42); - ClearAndSetEthPhyBit(sc, - 0x11, - BIT_13, - BIT_14 - ); - MP_WritePhyUshort(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0xF880); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_36 || sc->re_type == MACFG_37) { + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0023); + Data = re_mdio_read(sc, 0x17) | 0x0006; + if (sc->RequiredSecLanDonglePatch) + Data &= ~(BIT_2); + else + Data |= (BIT_2); + re_mdio_write(sc, 0x17, Data); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0005); + re_mdio_write(sc, 0x05, 0x8b80); + re_mdio_write(sc, 0x06, 0xc896); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x0B, 0x6C20); + re_mdio_write(sc, 0x07, 0x2872); + re_mdio_write(sc, 0x1C, 0xEFFF); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x14, 0x6420); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0002); + Data = re_mdio_read(sc, 0x08) & 0x00FF; + re_mdio_write(sc, 0x08, Data | 0x8000); + + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x002D); + Data = re_mdio_read(sc, 0x18); + re_mdio_write(sc, 0x18, Data | 0x0050); + re_mdio_write(sc, 0x1F, 0x0000); + Data = re_mdio_read(sc, 0x14); + re_mdio_write(sc, 0x14, Data | 0x8000); + + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x00, 0x080B); + re_mdio_write(sc, 0x0B, 0x09D7); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x15, 0x1006); + + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x002F); + re_mdio_write(sc, 0x15, 0x1919); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x19, 0x7F46); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8AD2); + re_mdio_write(sc, 0x06, 0x6810); + re_mdio_write(sc, 0x05, 0x8AD4); + re_mdio_write(sc, 0x06, 0x8002); + re_mdio_write(sc, 0x05, 0x8ADE); + re_mdio_write(sc, 0x06, 0x8025); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_38) { + CSR_WRITE_1(sc, 0x6E, CSR_READ_1(sc, 0x6E)| (1<<6)); + + Data_u32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); + Data_u32 &= ~BIT_1; + re_eri_write(sc, 0x1D0, 4, Data_u32, ERIAR_ExGMAC); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B80); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_2 | BIT_1; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x002D); + Data = re_mdio_read(sc, 0x18); + Data |= BIT_4; + re_mdio_write(sc, 0x18, Data); + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x1f, 0x0000); + Data = re_mdio_read(sc, 0x14); + Data |= BIT_15; + re_mdio_write(sc, 0x14, Data); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B86); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_0; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x0B, 0x6C14); + re_mdio_write(sc, 0x14, 0x7F3D); + re_mdio_write(sc, 0x1C, 0xFAFE); + re_mdio_write(sc, 0x08, 0x07C5); + re_mdio_write(sc, 0x10, 0xF090); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x14, 0x641A); + re_mdio_write(sc, 0x1A, 0x0606); + re_mdio_write(sc, 0x12, 0xF480); + re_mdio_write(sc, 0x13, 0x0747); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0078); + re_mdio_write(sc, 0x15, 0xA408); + re_mdio_write(sc, 0x17, 0x5100); + re_mdio_write(sc, 0x19, 0x0008); + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x0D, 0x0207); + re_mdio_write(sc, 0x02, 0x5FD0); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x00A1); + Data = re_mdio_read(sc, 0x1A); + Data &= ~BIT_2; + re_mdio_write(sc, 0x1A, Data); + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x002D); + Data = re_mdio_read(sc, 0x16); + Data |= BIT_5; + re_mdio_write(sc, 0x16, Data); + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x00AC); + re_mdio_write(sc, 0x18, 0x0006); + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x09, 0xA20F); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_14; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B54); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8B5D); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7C); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7F); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A82); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A85); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A88); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_15; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + Data = re_mdio_read(sc, 0x19); + Data &= ~BIT_0; + re_mdio_write(sc, 0x19, Data); + Data = re_mdio_read(sc, 0x10); + Data &= ~BIT_10; + re_mdio_write(sc, 0x10, Data); + re_mdio_write(sc, 0x1f, 0x0000); + } else if (sc->re_type == MACFG_39) { + Data_u32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); + Data_u32 &= ~BIT_1; + re_eri_write(sc, 0x1D0, 4, Data_u32, ERIAR_ExGMAC); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B80); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_2 | BIT_1; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_15; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0007); + re_mdio_write(sc, 0x1e, 0x002D); + Data = re_mdio_read(sc, 0x18); + Data |= BIT_4; + re_mdio_write(sc, 0x18, Data); + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x1f, 0x0000); + Data = re_mdio_read(sc, 0x14); + Data |= BIT_15; + re_mdio_write(sc, 0x14, Data); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B86); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_0; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x00AC); + re_mdio_write(sc, 0x18, 0x0006); + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x09, 0xA20F); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_14; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B54); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8B5D); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7C); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7F); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A82); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A85); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A88); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + Data = re_mdio_read(sc, 0x19); + Data &= ~BIT_0; + re_mdio_write(sc, 0x19, Data); + Data = re_mdio_read(sc, 0x10); + Data &= ~BIT_10; + re_mdio_write(sc, 0x10, Data); + re_mdio_write(sc, 0x1f, 0x0000); + } else if (sc->re_type == MACFG_41) { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x11, re_mdio_read(sc, 0x11) | 0x1000); + re_mdio_write(sc, 0x1F, 0x0002); + re_mdio_write(sc, 0x0F, re_mdio_read(sc, 0x0F) | 0x0003); + re_mdio_write(sc, 0x1F, 0x0000); + + for (Data_u32=0x800E0068; Data_u32<0x800E006D; Data_u32++) { + CSR_WRITE_4(sc, 0xF8, Data_u32); + for (i=0; i<10; i++) { + DELAY(400); + if ((CSR_READ_4(sc, 0xF8)&0x80000000)==0) + break; + } + } + } else if (sc->re_type == MACFG_42 || sc->re_type == MACFG_43) { + Data_u32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); + Data_u32 &= 0xFFFF0000; + re_eri_write(sc, 0x1D0, 4, Data_u32, ERIAR_ExGMAC); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x18, 0x0310); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x19, 0x7070); + re_mdio_write(sc, 0x1c, 0x0600); + re_mdio_write(sc, 0x1d, 0x9700); + re_mdio_write(sc, 0x1d, 0x7d00); + re_mdio_write(sc, 0x1d, 0x6900); + re_mdio_write(sc, 0x1d, 0x7d00); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x4899); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x8000); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x4007); + re_mdio_write(sc, 0x1d, 0x4400); + re_mdio_write(sc, 0x1d, 0x4800); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6736); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x571f); + re_mdio_write(sc, 0x1d, 0x5ffb); + re_mdio_write(sc, 0x1d, 0xaa03); + re_mdio_write(sc, 0x1d, 0x5b58); + re_mdio_write(sc, 0x1d, 0x301e); + re_mdio_write(sc, 0x1d, 0x5b64); + re_mdio_write(sc, 0x1d, 0xa6fc); + re_mdio_write(sc, 0x1d, 0xdcdb); + re_mdio_write(sc, 0x1d, 0x0014); + re_mdio_write(sc, 0x1d, 0xd9a9); + re_mdio_write(sc, 0x1d, 0x0013); + re_mdio_write(sc, 0x1d, 0xd16b); + re_mdio_write(sc, 0x1d, 0x0011); + re_mdio_write(sc, 0x1d, 0xb40e); + re_mdio_write(sc, 0x1d, 0xd06b); + re_mdio_write(sc, 0x1d, 0x000c); + re_mdio_write(sc, 0x1d, 0xb206); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c00); + re_mdio_write(sc, 0x1d, 0x301a); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5801); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c04); + re_mdio_write(sc, 0x1d, 0x301e); + re_mdio_write(sc, 0x1d, 0x314d); + re_mdio_write(sc, 0x1d, 0x31f0); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c20); + re_mdio_write(sc, 0x1d, 0x6004); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x4833); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c08); + re_mdio_write(sc, 0x1d, 0x8300); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6600); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xb90c); + re_mdio_write(sc, 0x1d, 0x30d3); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4de0); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6736); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x300b); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c60); + re_mdio_write(sc, 0x1d, 0x6803); + re_mdio_write(sc, 0x1d, 0x6520); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xaf03); + re_mdio_write(sc, 0x1d, 0x6015); + re_mdio_write(sc, 0x1d, 0x3059); + re_mdio_write(sc, 0x1d, 0x6017); + re_mdio_write(sc, 0x1d, 0x57e0); + re_mdio_write(sc, 0x1d, 0x580c); + re_mdio_write(sc, 0x1d, 0x588c); + re_mdio_write(sc, 0x1d, 0x7ffc); + re_mdio_write(sc, 0x1d, 0x5fa3); + re_mdio_write(sc, 0x1d, 0x4827); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c10); + re_mdio_write(sc, 0x1d, 0x8400); + re_mdio_write(sc, 0x1d, 0x7c30); + re_mdio_write(sc, 0x1d, 0x6020); + re_mdio_write(sc, 0x1d, 0x48bf); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0xad09); + re_mdio_write(sc, 0x1d, 0x7c03); + re_mdio_write(sc, 0x1d, 0x5c03); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x4400); + re_mdio_write(sc, 0x1d, 0xad2c); + re_mdio_write(sc, 0x1d, 0xd6cf); + re_mdio_write(sc, 0x1d, 0x0002); + re_mdio_write(sc, 0x1d, 0x80f4); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c80); + re_mdio_write(sc, 0x1d, 0x7c20); + re_mdio_write(sc, 0x1d, 0x5c20); + re_mdio_write(sc, 0x1d, 0x481e); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c02); + re_mdio_write(sc, 0x1d, 0xad0a); + re_mdio_write(sc, 0x1d, 0x7c03); + re_mdio_write(sc, 0x1d, 0x5c03); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x4400); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x8d02); + re_mdio_write(sc, 0x1d, 0x4401); + re_mdio_write(sc, 0x1d, 0x81f4); + re_mdio_write(sc, 0x1d, 0x3114); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d00); + re_mdio_write(sc, 0x1d, 0x4832); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c10); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0xa4b7); + re_mdio_write(sc, 0x1d, 0xd9b3); + re_mdio_write(sc, 0x1d, 0xfffe); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d20); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6200); + re_mdio_write(sc, 0x1d, 0x3045); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d40); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x4401); + re_mdio_write(sc, 0x1d, 0x5210); + re_mdio_write(sc, 0x1d, 0x4833); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x4c08); + re_mdio_write(sc, 0x1d, 0x8300); + re_mdio_write(sc, 0x1d, 0x5f80); + re_mdio_write(sc, 0x1d, 0x55e0); + re_mdio_write(sc, 0x1d, 0xc06f); + re_mdio_write(sc, 0x1d, 0x0005); + re_mdio_write(sc, 0x1d, 0xd9b3); + re_mdio_write(sc, 0x1d, 0xfffd); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x6040); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d60); + re_mdio_write(sc, 0x1d, 0x57e0); + re_mdio_write(sc, 0x1d, 0x4814); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x4c04); + re_mdio_write(sc, 0x1d, 0x8200); + re_mdio_write(sc, 0x1d, 0x7c03); + re_mdio_write(sc, 0x1d, 0x5c03); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xad02); + re_mdio_write(sc, 0x1d, 0x4400); + re_mdio_write(sc, 0x1d, 0xc0e9); + re_mdio_write(sc, 0x1d, 0x0003); + re_mdio_write(sc, 0x1d, 0xadd8); + re_mdio_write(sc, 0x1d, 0x30c6); + re_mdio_write(sc, 0x1d, 0x3078); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4dc0); + re_mdio_write(sc, 0x1d, 0x6730); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xd09d); + re_mdio_write(sc, 0x1d, 0x0002); + re_mdio_write(sc, 0x1d, 0xb4fe); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d80); + re_mdio_write(sc, 0x1d, 0x6802); + re_mdio_write(sc, 0x1d, 0x6600); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x486c); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x9503); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6200); + re_mdio_write(sc, 0x1d, 0x571f); + re_mdio_write(sc, 0x1d, 0x5fbb); + re_mdio_write(sc, 0x1d, 0xaa03); + re_mdio_write(sc, 0x1d, 0x5b58); + re_mdio_write(sc, 0x1d, 0x30e9); + re_mdio_write(sc, 0x1d, 0x5b64); + re_mdio_write(sc, 0x1d, 0xcdab); + re_mdio_write(sc, 0x1d, 0xff5b); + re_mdio_write(sc, 0x1d, 0xcd8d); + re_mdio_write(sc, 0x1d, 0xff59); + re_mdio_write(sc, 0x1d, 0xd96b); + re_mdio_write(sc, 0x1d, 0xff57); + re_mdio_write(sc, 0x1d, 0xd0a0); + re_mdio_write(sc, 0x1d, 0xffdb); + re_mdio_write(sc, 0x1d, 0xcba0); + re_mdio_write(sc, 0x1d, 0x0003); + re_mdio_write(sc, 0x1d, 0x80f0); + re_mdio_write(sc, 0x1d, 0x30f6); + re_mdio_write(sc, 0x1d, 0x3109); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ce0); + re_mdio_write(sc, 0x1d, 0x7d30); + re_mdio_write(sc, 0x1d, 0x6530); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7ce0); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x4832); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c08); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6008); + re_mdio_write(sc, 0x1d, 0x8300); + re_mdio_write(sc, 0x1d, 0xb902); + re_mdio_write(sc, 0x1d, 0x30d3); + re_mdio_write(sc, 0x1d, 0x308f); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4da0); + re_mdio_write(sc, 0x1d, 0x57a0); + re_mdio_write(sc, 0x1d, 0x590c); + re_mdio_write(sc, 0x1d, 0x5fa2); + re_mdio_write(sc, 0x1d, 0xcba4); + re_mdio_write(sc, 0x1d, 0x0005); + re_mdio_write(sc, 0x1d, 0xcd8d); + re_mdio_write(sc, 0x1d, 0x0003); + re_mdio_write(sc, 0x1d, 0x80fc); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ca0); + re_mdio_write(sc, 0x1d, 0xb603); + re_mdio_write(sc, 0x1d, 0x7c10); + re_mdio_write(sc, 0x1d, 0x6010); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x541f); + re_mdio_write(sc, 0x1d, 0x7ffc); + re_mdio_write(sc, 0x1d, 0x5fb3); + re_mdio_write(sc, 0x1d, 0x9403); + re_mdio_write(sc, 0x1d, 0x7c03); + re_mdio_write(sc, 0x1d, 0x5c03); + re_mdio_write(sc, 0x1d, 0xaa05); + re_mdio_write(sc, 0x1d, 0x7c80); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x5b58); + re_mdio_write(sc, 0x1d, 0x3128); + re_mdio_write(sc, 0x1d, 0x7c80); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x5b64); + re_mdio_write(sc, 0x1d, 0x4827); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c10); + re_mdio_write(sc, 0x1d, 0x8400); + re_mdio_write(sc, 0x1d, 0x7c10); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c04); + re_mdio_write(sc, 0x1d, 0x8200); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4cc0); + re_mdio_write(sc, 0x1d, 0x7d00); + re_mdio_write(sc, 0x1d, 0x6400); + re_mdio_write(sc, 0x1d, 0x7ffc); + re_mdio_write(sc, 0x1d, 0x5fbb); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c04); + re_mdio_write(sc, 0x1d, 0x8200); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6a00); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c04); + re_mdio_write(sc, 0x1d, 0x8200); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x30f6); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e00); + re_mdio_write(sc, 0x1d, 0x4007); + re_mdio_write(sc, 0x1d, 0x4400); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6736); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x570f); + re_mdio_write(sc, 0x1d, 0x5fff); + re_mdio_write(sc, 0x1d, 0xaa03); + re_mdio_write(sc, 0x1d, 0x585b); + re_mdio_write(sc, 0x1d, 0x315c); + re_mdio_write(sc, 0x1d, 0x5867); + re_mdio_write(sc, 0x1d, 0x9402); + re_mdio_write(sc, 0x1d, 0x6200); + re_mdio_write(sc, 0x1d, 0xcda3); + re_mdio_write(sc, 0x1d, 0x009d); + re_mdio_write(sc, 0x1d, 0xcd85); + re_mdio_write(sc, 0x1d, 0x009b); + re_mdio_write(sc, 0x1d, 0xd96b); + re_mdio_write(sc, 0x1d, 0x0099); + re_mdio_write(sc, 0x1d, 0x96e9); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6736); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e20); + re_mdio_write(sc, 0x1d, 0x96e4); + re_mdio_write(sc, 0x1d, 0x8b04); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x5008); + re_mdio_write(sc, 0x1d, 0xab03); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x5000); + re_mdio_write(sc, 0x1d, 0x6801); + re_mdio_write(sc, 0x1d, 0x6776); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xdb7c); + re_mdio_write(sc, 0x1d, 0xfff0); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7fe1); + re_mdio_write(sc, 0x1d, 0x4e40); + re_mdio_write(sc, 0x1d, 0x4837); + re_mdio_write(sc, 0x1d, 0x4418); + re_mdio_write(sc, 0x1d, 0x41c7); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e40); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x8fc9); + re_mdio_write(sc, 0x1d, 0xd2a0); + re_mdio_write(sc, 0x1d, 0x004a); + re_mdio_write(sc, 0x1d, 0x9203); + re_mdio_write(sc, 0x1d, 0xa041); + re_mdio_write(sc, 0x1d, 0x3184); + re_mdio_write(sc, 0x1d, 0x7fe1); + re_mdio_write(sc, 0x1d, 0x4e60); + re_mdio_write(sc, 0x1d, 0x489c); + re_mdio_write(sc, 0x1d, 0x4628); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e60); + re_mdio_write(sc, 0x1d, 0x7e28); + re_mdio_write(sc, 0x1d, 0x4628); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c00); + re_mdio_write(sc, 0x1d, 0x41e8); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x8fb0); + re_mdio_write(sc, 0x1d, 0xb241); + re_mdio_write(sc, 0x1d, 0xa02a); + re_mdio_write(sc, 0x1d, 0x319d); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ea0); + re_mdio_write(sc, 0x1d, 0x7c02); + re_mdio_write(sc, 0x1d, 0x4402); + re_mdio_write(sc, 0x1d, 0x4448); + re_mdio_write(sc, 0x1d, 0x4894); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c03); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c07); + re_mdio_write(sc, 0x1d, 0x41ef); + re_mdio_write(sc, 0x1d, 0x41ff); + re_mdio_write(sc, 0x1d, 0x4891); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c07); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c17); + re_mdio_write(sc, 0x1d, 0x8400); + re_mdio_write(sc, 0x1d, 0x8ef8); + re_mdio_write(sc, 0x1d, 0x41c7); + re_mdio_write(sc, 0x1d, 0x8f95); + re_mdio_write(sc, 0x1d, 0x92d5); + re_mdio_write(sc, 0x1d, 0xa10f); + re_mdio_write(sc, 0x1d, 0xd480); + re_mdio_write(sc, 0x1d, 0x0008); + re_mdio_write(sc, 0x1d, 0xd580); + re_mdio_write(sc, 0x1d, 0xffb9); + re_mdio_write(sc, 0x1d, 0xa202); + re_mdio_write(sc, 0x1d, 0x31b8); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x4404); + re_mdio_write(sc, 0x1d, 0x31b8); + re_mdio_write(sc, 0x1d, 0xd484); + re_mdio_write(sc, 0x1d, 0xfff3); + re_mdio_write(sc, 0x1d, 0xd484); + re_mdio_write(sc, 0x1d, 0xfff1); + re_mdio_write(sc, 0x1d, 0x314d); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ee0); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x4488); + re_mdio_write(sc, 0x1d, 0x41cf); + re_mdio_write(sc, 0x1d, 0x314d); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ec0); + re_mdio_write(sc, 0x1d, 0x48f3); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c09); + re_mdio_write(sc, 0x1d, 0x4508); + re_mdio_write(sc, 0x1d, 0x41c7); + re_mdio_write(sc, 0x1d, 0x8f24); + re_mdio_write(sc, 0x1d, 0xd218); + re_mdio_write(sc, 0x1d, 0x0022); + re_mdio_write(sc, 0x1d, 0xd2a4); + re_mdio_write(sc, 0x1d, 0xff9f); + re_mdio_write(sc, 0x1d, 0x31d9); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e80); + re_mdio_write(sc, 0x1d, 0x4832); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c11); + re_mdio_write(sc, 0x1d, 0x4428); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5440); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5801); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c04); + re_mdio_write(sc, 0x1d, 0x41e8); + re_mdio_write(sc, 0x1d, 0xa4b3); + re_mdio_write(sc, 0x1d, 0x31ee); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6736); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x570f); + re_mdio_write(sc, 0x1d, 0x5fff); + re_mdio_write(sc, 0x1d, 0xaa03); + re_mdio_write(sc, 0x1d, 0x585b); + re_mdio_write(sc, 0x1d, 0x31fa); + re_mdio_write(sc, 0x1d, 0x5867); + re_mdio_write(sc, 0x1d, 0xbcf6); + re_mdio_write(sc, 0x1d, 0x300b); + re_mdio_write(sc, 0x1d, 0x300b); + re_mdio_write(sc, 0x1d, 0x314d); + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1c, 0x0200); + re_mdio_write(sc, 0x19, 0x7030); + re_mdio_write(sc, 0x1f, 0x0000); + + if (CSR_READ_1(sc, 0xEF)&0x08) { + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x1A, 0x0004); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x1A, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + } - if (phy_power_saving == 1) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - SetEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - ClearEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - DELAY(20000); - } - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8011); - ClearEthPhyBit(sc, 0x14, BIT_14); - MP_WritePhyUshort(sc, 0x1F, 0x0A40); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x9200); - } - else if (sc->re_type == MACFG_59) { - MP_WritePhyUshort(sc, 0x1F, 0x0BCC); - ClearEthPhyBit(sc, 0x14, BIT_8); - MP_WritePhyUshort(sc, 0x1F, 0x0A44); - SetEthPhyBit(sc, 0x11, BIT_7); - SetEthPhyBit(sc, 0x11, BIT_6); - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8084); - ClearEthPhyBit(sc, 0x14, (BIT_14 | BIT_13)); - SetEthPhyBit(sc, 0x10, BIT_12); - SetEthPhyBit(sc, 0x10, BIT_1); - SetEthPhyBit(sc, 0x10, BIT_0); - - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8012); - SetEthPhyBit(sc, 0x14, BIT_15); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0BCE); - MP_WritePhyUshort(sc, 0x12, 0x8860); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x80F3); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x8B00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80F0); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x3A00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80EF); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x0500 - ); - MP_WritePhyUshort(sc, 0x13, 0x80F6); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x6E00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80EC); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x6800 - ); - MP_WritePhyUshort(sc, 0x13, 0x80ED); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x7C00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80F2); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xF400 - ); - MP_WritePhyUshort(sc, 0x13, 0x80F4); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x8500 - ); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8110); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xA800 - ); - MP_WritePhyUshort(sc, 0x13, 0x810F); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x1D00 - ); - MP_WritePhyUshort(sc, 0x13, 0x8111); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xF500 - ); - MP_WritePhyUshort(sc, 0x13, 0x8113); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x6100 - ); - MP_WritePhyUshort(sc, 0x13, 0x8115); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x9200 - ); - MP_WritePhyUshort(sc, 0x13, 0x810E); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x0400 - ); - MP_WritePhyUshort(sc, 0x13, 0x810C); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x7C00 - ); - MP_WritePhyUshort(sc, 0x13, 0x810B); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x5A00 - ); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x80D1); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xFF00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80CD); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x9E00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80D3); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x0E00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80D5); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xCA00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80D7); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x8400 - ); + if (CSR_READ_1(sc, 0xEF)&0x10) { + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x1C, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0004); + re_mdio_write(sc, 0x1C, 0x0200); + re_mdio_write(sc, 0x1F, 0x0000); + } - if (phy_power_saving == 1) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - SetEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - ClearEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - DELAY(20000); - } - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8011); - ClearEthPhyBit(sc, 0x14, BIT_14); - MP_WritePhyUshort(sc, 0x1F, 0x0A40); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x9200); - } - else if (sc->re_type == MACFG_60) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8012); - SetEthPhyBit(sc, 0x14, BIT_15); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0BCE); - MP_WritePhyUshort(sc, 0x12, 0x8860); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x80F3); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x8B00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80F0); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x3A00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80EF); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x0500 - ); - MP_WritePhyUshort(sc, 0x13, 0x80F6); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x6E00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80EC); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x6800 - ); - MP_WritePhyUshort(sc, 0x13, 0x80ED); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x7C00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80F2); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xF400 - ); - MP_WritePhyUshort(sc, 0x13, 0x80F4); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x8500 - ); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8110); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xA800 - ); - MP_WritePhyUshort(sc, 0x13, 0x810F); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x1D00 - ); - MP_WritePhyUshort(sc, 0x13, 0x8111); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xF500 - ); - MP_WritePhyUshort(sc, 0x13, 0x8113); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x6100 - ); - MP_WritePhyUshort(sc, 0x13, 0x8115); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x9200 - ); - MP_WritePhyUshort(sc, 0x13, 0x810E); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x0400 - ); - MP_WritePhyUshort(sc, 0x13, 0x810C); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x7C00 - ); - MP_WritePhyUshort(sc, 0x13, 0x810B); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x5A00 - ); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x80D1); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xFF00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80CD); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x9E00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80D3); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x0E00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80D5); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xCA00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80D7); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x8400 - ); + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x15, 0x7701); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + re_clear_eth_phy_bit(sc, 0x1A, BIT_14); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x18, 0x8310); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x18, 0x0310); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } - if (phy_power_saving == 1) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - SetEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - ClearEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - DELAY(20000); - } - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8011); - ClearEthPhyBit(sc, 0x14, BIT_14); - MP_WritePhyUshort(sc, 0x1F, 0x0A40); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x9200); - } - else if (sc->re_type == MACFG_61) { - MP_WritePhyUshort(sc, 0x1F, 0x0A44); - SetEthPhyBit(sc, 0x11, (BIT_3 | BIT_2)); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - - MP_WritePhyUshort(sc, 0x1F, 0x0BCC); - ClearEthPhyBit(sc, 0x14, BIT_8); - MP_WritePhyUshort(sc, 0x1F, 0x0A44); - SetEthPhyBit(sc, 0x11, BIT_7); - SetEthPhyBit(sc, 0x11, BIT_6); - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8084); - ClearEthPhyBit(sc, 0x14, (BIT_14 | BIT_13)); - SetEthPhyBit(sc, 0x10, BIT_12); - SetEthPhyBit(sc, 0x10, BIT_1); - SetEthPhyBit(sc, 0x10, BIT_0); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0A4B); - SetEthPhyBit(sc, 0x11, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8012); - SetEthPhyBit(sc, 0x14, BIT_15); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0C42); - ClearAndSetEthPhyBit(sc, - 0x11, - BIT_13, - BIT_14 - ); - MP_WritePhyUshort(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0003); + re_mdio_write(sc, 0x0E, 0x0015); + re_mdio_write(sc, 0x0D, 0x4003); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + + } else if (sc->re_type == MACFG_50) { + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B80); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_2 | BIT_1; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x002D); + Data = re_mdio_read(sc, 0x18); + Data |= BIT_4; + re_mdio_write(sc, 0x18, Data); + re_mdio_write(sc, 0x1f, 0x0000); + Data = re_mdio_read(sc, 0x14); + Data |= BIT_15; + re_mdio_write(sc, 0x14, Data); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B86); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_0; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_14; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x09, 0xA20F); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B55); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x05, 0x8B5E); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x05, 0x8B67); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x05, 0x8B70); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0078); + re_mdio_write(sc, 0x17, 0x0000); + re_mdio_write(sc, 0x19, 0x00FB); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B79); + re_mdio_write(sc, 0x06, 0xAA00); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x01, 0x328A); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B54); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8B5D); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7C); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7F); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A82); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A85); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A88); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_15; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + Data = re_mdio_read(sc, 0x19); + Data &= ~BIT_0; + re_mdio_write(sc, 0x19, Data); + Data = re_mdio_read(sc, 0x10); + Data &= ~BIT_10; + re_mdio_write(sc, 0x10, Data); + re_mdio_write(sc, 0x1f, 0x0000); + } else if (sc->re_type == MACFG_51) { + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B80); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_2 | BIT_1; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x002D); + Data = re_mdio_read(sc, 0x18); + Data |= BIT_4; + re_mdio_write(sc, 0x18, Data); + re_mdio_write(sc, 0x1f, 0x0000); + Data = re_mdio_read(sc, 0x14); + Data |= BIT_15; + re_mdio_write(sc, 0x14, Data); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B86); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_0; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B54); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8B5D); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7C); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7F); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A82); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A85); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A88); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0023); + re_clear_eth_phy_bit(sc, 0x17, BIT_1); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_15; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + Data = re_mdio_read(sc, 0x19); + Data &= ~BIT_0; + re_mdio_write(sc, 0x19, Data); + Data = re_mdio_read(sc, 0x10); + Data &= ~BIT_10; + re_mdio_write(sc, 0x10, Data); + re_mdio_write(sc, 0x1f, 0x0000); + } else if (sc->re_type == MACFG_52) { + Data_u32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); + Data_u32 &= ~BIT_1; + re_eri_write(sc, 0x1D0, 4, Data_u32, ERIAR_ExGMAC); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B80); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_2 | BIT_1; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x002D); + Data = re_mdio_read(sc, 0x18); + Data |= BIT_4; + re_mdio_write(sc, 0x18, Data); + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x1f, 0x0000); + Data = re_mdio_read(sc, 0x14); + Data |= BIT_15; + re_mdio_write(sc, 0x14, Data); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B86); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_0; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_14; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x09, 0xA20F); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B55); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x05, 0x8B5E); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x05, 0x8B67); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x05, 0x8B70); + re_mdio_write(sc, 0x06, 0x0000); + re_mdio_write(sc, 0x1f, 0x0000); + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0078); + re_mdio_write(sc, 0x17, 0x0000); + re_mdio_write(sc, 0x19, 0x00FB); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B79); + re_mdio_write(sc, 0x06, 0xAA00); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x01, 0x328A); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B54); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8B5D); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_11; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7C); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A7F); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A82); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A85); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x05, 0x8A88); + Data = re_mdio_read(sc, 0x06); + Data &= ~BIT_8; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x05, 0x8B85); + Data = re_mdio_read(sc, 0x06); + Data |= BIT_15; + re_mdio_write(sc, 0x06, Data); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0003); + Data = re_mdio_read(sc, 0x19); + Data &= ~BIT_0; + re_mdio_write(sc, 0x19, Data); + Data = re_mdio_read(sc, 0x10); + Data &= ~BIT_10; + re_mdio_write(sc, 0x10, Data); + re_mdio_write(sc, 0x1f, 0x0000); + } else if (sc->re_type == MACFG_53) { + Data_u32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); + Data_u32 &= 0xFFFF0000; + re_eri_write(sc, 0x1D0, 4, Data_u32, ERIAR_ExGMAC); + + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x18, 0x0310); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x19, 0x7070); + re_mdio_write(sc, 0x1c, 0x0600); + re_mdio_write(sc, 0x1d, 0x9700); + re_mdio_write(sc, 0x1d, 0x7d00); + re_mdio_write(sc, 0x1d, 0x6900); + re_mdio_write(sc, 0x1d, 0x7d00); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x4899); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x8000); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x4007); + re_mdio_write(sc, 0x1d, 0x4400); + re_mdio_write(sc, 0x1d, 0x4800); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6736); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x571f); + re_mdio_write(sc, 0x1d, 0x5ffb); + re_mdio_write(sc, 0x1d, 0xaa03); + re_mdio_write(sc, 0x1d, 0x5b58); + re_mdio_write(sc, 0x1d, 0x301e); + re_mdio_write(sc, 0x1d, 0x5b64); + re_mdio_write(sc, 0x1d, 0xa6fc); + re_mdio_write(sc, 0x1d, 0xdcdb); + re_mdio_write(sc, 0x1d, 0x0015); + re_mdio_write(sc, 0x1d, 0xb915); + re_mdio_write(sc, 0x1d, 0xb511); + re_mdio_write(sc, 0x1d, 0xd16b); + re_mdio_write(sc, 0x1d, 0x000f); + re_mdio_write(sc, 0x1d, 0xb40f); + re_mdio_write(sc, 0x1d, 0xd06b); + re_mdio_write(sc, 0x1d, 0x000d); + re_mdio_write(sc, 0x1d, 0xb206); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c00); + re_mdio_write(sc, 0x1d, 0x301a); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5801); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c04); + re_mdio_write(sc, 0x1d, 0x301e); + re_mdio_write(sc, 0x1d, 0x3079); + re_mdio_write(sc, 0x1d, 0x30f1); + re_mdio_write(sc, 0x1d, 0x3199); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c60); + re_mdio_write(sc, 0x1d, 0x6803); + re_mdio_write(sc, 0x1d, 0x6420); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xaf03); + re_mdio_write(sc, 0x1d, 0x6015); + re_mdio_write(sc, 0x1d, 0x3040); + re_mdio_write(sc, 0x1d, 0x6017); + re_mdio_write(sc, 0x1d, 0x57e0); + re_mdio_write(sc, 0x1d, 0x580c); + re_mdio_write(sc, 0x1d, 0x588c); + re_mdio_write(sc, 0x1d, 0x5fa3); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x4827); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c10); + re_mdio_write(sc, 0x1d, 0x8400); + re_mdio_write(sc, 0x1d, 0x7c30); + re_mdio_write(sc, 0x1d, 0x6020); + re_mdio_write(sc, 0x1d, 0x48bf); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0xd6cf); + re_mdio_write(sc, 0x1d, 0x0002); + re_mdio_write(sc, 0x1d, 0x80fe); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c80); + re_mdio_write(sc, 0x1d, 0x7c20); + re_mdio_write(sc, 0x1d, 0x5c20); + re_mdio_write(sc, 0x1d, 0x481e); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c02); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x81ff); + re_mdio_write(sc, 0x1d, 0x30ba); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d00); + re_mdio_write(sc, 0x1d, 0x4832); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c10); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0xa4cc); + re_mdio_write(sc, 0x1d, 0xd9b3); + re_mdio_write(sc, 0x1d, 0xfffe); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d20); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6200); + re_mdio_write(sc, 0x1d, 0x300b); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4dc0); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xd09d); + re_mdio_write(sc, 0x1d, 0x0002); + re_mdio_write(sc, 0x1d, 0xb4fe); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d80); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x6004); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x6802); + re_mdio_write(sc, 0x1d, 0x6720); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x486c); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x9503); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6200); + re_mdio_write(sc, 0x1d, 0x571f); + re_mdio_write(sc, 0x1d, 0x5fbb); + re_mdio_write(sc, 0x1d, 0xaa03); + re_mdio_write(sc, 0x1d, 0x5b58); + re_mdio_write(sc, 0x1d, 0x3092); + re_mdio_write(sc, 0x1d, 0x5b64); + re_mdio_write(sc, 0x1d, 0xcdab); + re_mdio_write(sc, 0x1d, 0xff78); + re_mdio_write(sc, 0x1d, 0xcd8d); + re_mdio_write(sc, 0x1d, 0xff76); + re_mdio_write(sc, 0x1d, 0xd96b); + re_mdio_write(sc, 0x1d, 0xff74); + re_mdio_write(sc, 0x1d, 0xd0a0); + re_mdio_write(sc, 0x1d, 0xffd9); + re_mdio_write(sc, 0x1d, 0xcba0); + re_mdio_write(sc, 0x1d, 0x0003); + re_mdio_write(sc, 0x1d, 0x80f0); + re_mdio_write(sc, 0x1d, 0x309f); + re_mdio_write(sc, 0x1d, 0x30ac); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ce0); + re_mdio_write(sc, 0x1d, 0x4832); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c08); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6008); + re_mdio_write(sc, 0x1d, 0x8300); + re_mdio_write(sc, 0x1d, 0xb902); + re_mdio_write(sc, 0x1d, 0x3079); + re_mdio_write(sc, 0x1d, 0x3061); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4da0); + re_mdio_write(sc, 0x1d, 0x6400); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x57a0); + re_mdio_write(sc, 0x1d, 0x590c); + re_mdio_write(sc, 0x1d, 0x5fa3); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xcba4); + re_mdio_write(sc, 0x1d, 0x0004); + re_mdio_write(sc, 0x1d, 0xcd8d); + re_mdio_write(sc, 0x1d, 0x0002); + re_mdio_write(sc, 0x1d, 0x80fc); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ca0); + re_mdio_write(sc, 0x1d, 0xb603); + re_mdio_write(sc, 0x1d, 0x7c10); + re_mdio_write(sc, 0x1d, 0x6010); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x541f); + re_mdio_write(sc, 0x1d, 0x5fb3); + re_mdio_write(sc, 0x1d, 0xaa05); + re_mdio_write(sc, 0x1d, 0x7c80); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x5b58); + re_mdio_write(sc, 0x1d, 0x30ca); + re_mdio_write(sc, 0x1d, 0x7c80); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x5b64); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c04); + re_mdio_write(sc, 0x1d, 0x8200); + re_mdio_write(sc, 0x1d, 0x4827); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c10); + re_mdio_write(sc, 0x1d, 0x8400); + re_mdio_write(sc, 0x1d, 0x7c10); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4cc0); + re_mdio_write(sc, 0x1d, 0x5fbb); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c04); + re_mdio_write(sc, 0x1d, 0x8200); + re_mdio_write(sc, 0x1d, 0x7ce0); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x6720); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6a00); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c04); + re_mdio_write(sc, 0x1d, 0x8200); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x309f); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e00); + re_mdio_write(sc, 0x1d, 0x4007); + re_mdio_write(sc, 0x1d, 0x4400); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6736); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x570f); + re_mdio_write(sc, 0x1d, 0x5fff); + re_mdio_write(sc, 0x1d, 0xaa03); + re_mdio_write(sc, 0x1d, 0x585b); + re_mdio_write(sc, 0x1d, 0x3100); + re_mdio_write(sc, 0x1d, 0x5867); + re_mdio_write(sc, 0x1d, 0x9403); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6200); + re_mdio_write(sc, 0x1d, 0xcda3); + re_mdio_write(sc, 0x1d, 0x002d); + re_mdio_write(sc, 0x1d, 0xcd85); + re_mdio_write(sc, 0x1d, 0x002b); + re_mdio_write(sc, 0x1d, 0xd96b); + re_mdio_write(sc, 0x1d, 0x0029); + re_mdio_write(sc, 0x1d, 0x9629); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6736); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x9624); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e20); + re_mdio_write(sc, 0x1d, 0x8b04); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x5008); + re_mdio_write(sc, 0x1d, 0xab03); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x5000); + re_mdio_write(sc, 0x1d, 0x6801); + re_mdio_write(sc, 0x1d, 0x6776); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xdb7c); + re_mdio_write(sc, 0x1d, 0xffee); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7fe1); + re_mdio_write(sc, 0x1d, 0x4e40); + re_mdio_write(sc, 0x1d, 0x4837); + re_mdio_write(sc, 0x1d, 0x4418); + re_mdio_write(sc, 0x1d, 0x41c7); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e40); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x8f07); + re_mdio_write(sc, 0x1d, 0xd2a0); + re_mdio_write(sc, 0x1d, 0x004c); + re_mdio_write(sc, 0x1d, 0x9205); + re_mdio_write(sc, 0x1d, 0xa043); + re_mdio_write(sc, 0x1d, 0x312b); + re_mdio_write(sc, 0x1d, 0x300b); + re_mdio_write(sc, 0x1d, 0x30f1); + re_mdio_write(sc, 0x1d, 0x7fe1); + re_mdio_write(sc, 0x1d, 0x4e60); + re_mdio_write(sc, 0x1d, 0x489c); + re_mdio_write(sc, 0x1d, 0x4628); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e60); + re_mdio_write(sc, 0x1d, 0x7e28); + re_mdio_write(sc, 0x1d, 0x4628); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c00); + re_mdio_write(sc, 0x1d, 0x41e8); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x8fec); + re_mdio_write(sc, 0x1d, 0xb241); + re_mdio_write(sc, 0x1d, 0xa02a); + re_mdio_write(sc, 0x1d, 0x3146); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ea0); + re_mdio_write(sc, 0x1d, 0x7c02); + re_mdio_write(sc, 0x1d, 0x4402); + re_mdio_write(sc, 0x1d, 0x4448); + re_mdio_write(sc, 0x1d, 0x4894); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c03); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c07); + re_mdio_write(sc, 0x1d, 0x41ef); + re_mdio_write(sc, 0x1d, 0x41ff); + re_mdio_write(sc, 0x1d, 0x4891); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c07); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c17); + re_mdio_write(sc, 0x1d, 0x8400); + re_mdio_write(sc, 0x1d, 0x8ef8); + re_mdio_write(sc, 0x1d, 0x41c7); + re_mdio_write(sc, 0x1d, 0x8fd1); + re_mdio_write(sc, 0x1d, 0x92d5); + re_mdio_write(sc, 0x1d, 0xa10f); + re_mdio_write(sc, 0x1d, 0xd480); + re_mdio_write(sc, 0x1d, 0x0008); + re_mdio_write(sc, 0x1d, 0xd580); + re_mdio_write(sc, 0x1d, 0xffb7); + re_mdio_write(sc, 0x1d, 0xa202); + re_mdio_write(sc, 0x1d, 0x3161); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x4404); + re_mdio_write(sc, 0x1d, 0x3161); + re_mdio_write(sc, 0x1d, 0xd484); + re_mdio_write(sc, 0x1d, 0xfff3); + re_mdio_write(sc, 0x1d, 0xd484); + re_mdio_write(sc, 0x1d, 0xfff1); + re_mdio_write(sc, 0x1d, 0x30f1); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ee0); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x4488); + re_mdio_write(sc, 0x1d, 0x41cf); + re_mdio_write(sc, 0x1d, 0x30f1); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ec0); + re_mdio_write(sc, 0x1d, 0x48f3); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c09); + re_mdio_write(sc, 0x1d, 0x4508); + re_mdio_write(sc, 0x1d, 0x41c7); + re_mdio_write(sc, 0x1d, 0x8fb0); + re_mdio_write(sc, 0x1d, 0xd218); + re_mdio_write(sc, 0x1d, 0xffae); + re_mdio_write(sc, 0x1d, 0xd2a4); + re_mdio_write(sc, 0x1d, 0xff9d); + re_mdio_write(sc, 0x1d, 0x3182); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e80); + re_mdio_write(sc, 0x1d, 0x4832); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c11); + re_mdio_write(sc, 0x1d, 0x4428); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5440); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5801); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c04); + re_mdio_write(sc, 0x1d, 0x41e8); + re_mdio_write(sc, 0x1d, 0xa4b3); + re_mdio_write(sc, 0x1d, 0x3197); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4f20); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x6736); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x570f); + re_mdio_write(sc, 0x1d, 0x5fff); + re_mdio_write(sc, 0x1d, 0xaa03); + re_mdio_write(sc, 0x1d, 0x585b); + re_mdio_write(sc, 0x1d, 0x31a5); + re_mdio_write(sc, 0x1d, 0x5867); + re_mdio_write(sc, 0x1d, 0xbcf4); + re_mdio_write(sc, 0x1d, 0x300b); + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1c, 0x0200); + re_mdio_write(sc, 0x19, 0x7030); + re_mdio_write(sc, 0x1f, 0x0000); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x18, 0x8310); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x18, 0x0310); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } - if (phy_power_saving == 1) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - SetEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - ClearEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - DELAY(20000); - } - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8011); - ClearEthPhyBit(sc, 0x14, BIT_14); - MP_WritePhyUshort(sc, 0x1F, 0x0A40); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x9200); - } - else if (sc->re_type == MACFG_62 || sc->re_type == MACFG_67) { - MP_WritePhyUshort(sc, 0x1F, 0x0BCC); - ClearEthPhyBit(sc, 0x14, BIT_8); - MP_WritePhyUshort(sc, 0x1F, 0x0A44); - SetEthPhyBit(sc, 0x11, BIT_7); - SetEthPhyBit(sc, 0x11, BIT_6); - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8084); - ClearEthPhyBit(sc, 0x14, (BIT_14 | BIT_13)); - SetEthPhyBit(sc, 0x10, BIT_12); - SetEthPhyBit(sc, 0x10, BIT_1); - SetEthPhyBit(sc, 0x10, BIT_0); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8012); - SetEthPhyBit(sc, 0x14, BIT_15); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0C42); - ClearAndSetEthPhyBit(sc, - 0x11, - BIT_13, - BIT_14 - ); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x80F3); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x8B00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80F0); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x3A00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80EF); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x0500 - ); - MP_WritePhyUshort(sc, 0x13, 0x80F6); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x6E00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80EC); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x6800 - ); - MP_WritePhyUshort(sc, 0x13, 0x80ED); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x7C00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80F2); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xF400 - ); - MP_WritePhyUshort(sc, 0x13, 0x80F4); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x8500 - ); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8110); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xA800 - ); - MP_WritePhyUshort(sc, 0x13, 0x810F); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x1D00 - ); - MP_WritePhyUshort(sc, 0x13, 0x8111); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xF500 - ); - MP_WritePhyUshort(sc, 0x13, 0x8113); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x6100 - ); - MP_WritePhyUshort(sc, 0x13, 0x8115); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x9200 - ); - MP_WritePhyUshort(sc, 0x13, 0x810E); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x0400 - ); - MP_WritePhyUshort(sc, 0x13, 0x810C); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x7C00 - ); - MP_WritePhyUshort(sc, 0x13, 0x810B); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x5A00 - ); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x80D1); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xFF00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80CD); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x9E00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80D3); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x0E00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80D5); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xCA00 - ); - MP_WritePhyUshort(sc, 0x13, 0x80D7); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x8400 - ); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + } else if (sc->re_type == MACFG_54 || sc->re_type == MACFG_55) { + Data_u32 = re_eri_read(sc, 0x1D0, 4, ERIAR_ExGMAC); + Data_u32 &= 0xFFFF0000; + re_eri_write(sc, 0x1D0, 4, Data_u32, ERIAR_ExGMAC); + + if (sc->re_type == MACFG_55) { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x18, 0x0310); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x19, 0x7070); + re_mdio_write(sc, 0x1c, 0x0600); + re_mdio_write(sc, 0x1d, 0x9700); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x4007); + re_mdio_write(sc, 0x1d, 0x4400); + re_mdio_write(sc, 0x1d, 0x4800); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x673e); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x571f); + re_mdio_write(sc, 0x1d, 0x5ffb); + re_mdio_write(sc, 0x1d, 0xaa04); + re_mdio_write(sc, 0x1d, 0x5b58); + re_mdio_write(sc, 0x1d, 0x6100); + re_mdio_write(sc, 0x1d, 0x3016); + re_mdio_write(sc, 0x1d, 0x5b64); + re_mdio_write(sc, 0x1d, 0x6080); + re_mdio_write(sc, 0x1d, 0xa6fa); + re_mdio_write(sc, 0x1d, 0xdcdb); + re_mdio_write(sc, 0x1d, 0x0015); + re_mdio_write(sc, 0x1d, 0xb915); + re_mdio_write(sc, 0x1d, 0xb511); + re_mdio_write(sc, 0x1d, 0xd16b); + re_mdio_write(sc, 0x1d, 0x000f); + re_mdio_write(sc, 0x1d, 0xb40f); + re_mdio_write(sc, 0x1d, 0xd06b); + re_mdio_write(sc, 0x1d, 0x000d); + re_mdio_write(sc, 0x1d, 0xb206); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c00); + re_mdio_write(sc, 0x1d, 0x3010); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5801); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c04); + re_mdio_write(sc, 0x1d, 0x3016); + re_mdio_write(sc, 0x1d, 0x307e); + re_mdio_write(sc, 0x1d, 0x30f4); + re_mdio_write(sc, 0x1d, 0x319f); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c60); + re_mdio_write(sc, 0x1d, 0x6803); + re_mdio_write(sc, 0x1d, 0x7d00); + re_mdio_write(sc, 0x1d, 0x6900); + re_mdio_write(sc, 0x1d, 0x6520); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xaf03); + re_mdio_write(sc, 0x1d, 0x6115); + re_mdio_write(sc, 0x1d, 0x303a); + re_mdio_write(sc, 0x1d, 0x6097); + re_mdio_write(sc, 0x1d, 0x57e0); + re_mdio_write(sc, 0x1d, 0x580c); + re_mdio_write(sc, 0x1d, 0x588c); + re_mdio_write(sc, 0x1d, 0x5f80); + re_mdio_write(sc, 0x1d, 0x4827); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c10); + re_mdio_write(sc, 0x1d, 0x8400); + re_mdio_write(sc, 0x1d, 0x7c30); + re_mdio_write(sc, 0x1d, 0x6020); + re_mdio_write(sc, 0x1d, 0x48bf); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0xb802); + re_mdio_write(sc, 0x1d, 0x3053); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6808); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7c10); + re_mdio_write(sc, 0x1d, 0x6810); + re_mdio_write(sc, 0x1d, 0xd6cf); + re_mdio_write(sc, 0x1d, 0x0002); + re_mdio_write(sc, 0x1d, 0x80fe); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4c80); + re_mdio_write(sc, 0x1d, 0x7c10); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7c23); + re_mdio_write(sc, 0x1d, 0x5c23); + re_mdio_write(sc, 0x1d, 0x481e); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c02); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x81ff); + re_mdio_write(sc, 0x1d, 0x30c1); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d00); + re_mdio_write(sc, 0x1d, 0x4832); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c10); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0xa4bd); + re_mdio_write(sc, 0x1d, 0xd9b3); + re_mdio_write(sc, 0x1d, 0x00fe); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d20); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6200); + re_mdio_write(sc, 0x1d, 0x3001); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4dc0); + re_mdio_write(sc, 0x1d, 0xd09d); + re_mdio_write(sc, 0x1d, 0x0002); + re_mdio_write(sc, 0x1d, 0xb4fe); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4d80); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x6004); + re_mdio_write(sc, 0x1d, 0x6802); + re_mdio_write(sc, 0x1d, 0x6728); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x486c); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x9503); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6200); + re_mdio_write(sc, 0x1d, 0x571f); + re_mdio_write(sc, 0x1d, 0x5fbb); + re_mdio_write(sc, 0x1d, 0xaa05); + re_mdio_write(sc, 0x1d, 0x5b58); + re_mdio_write(sc, 0x1d, 0x7d80); + re_mdio_write(sc, 0x1d, 0x6100); + re_mdio_write(sc, 0x1d, 0x309a); + re_mdio_write(sc, 0x1d, 0x5b64); + re_mdio_write(sc, 0x1d, 0x7d80); + re_mdio_write(sc, 0x1d, 0x6080); + re_mdio_write(sc, 0x1d, 0xcdab); + re_mdio_write(sc, 0x1d, 0x0058); + re_mdio_write(sc, 0x1d, 0xcd8d); + re_mdio_write(sc, 0x1d, 0x0056); + re_mdio_write(sc, 0x1d, 0xd96b); + re_mdio_write(sc, 0x1d, 0x0054); + re_mdio_write(sc, 0x1d, 0xd0a0); + re_mdio_write(sc, 0x1d, 0x00d8); + re_mdio_write(sc, 0x1d, 0xcba0); + re_mdio_write(sc, 0x1d, 0x0003); + re_mdio_write(sc, 0x1d, 0x80ec); + re_mdio_write(sc, 0x1d, 0x30a7); + re_mdio_write(sc, 0x1d, 0x30b4); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ce0); + re_mdio_write(sc, 0x1d, 0x4832); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c08); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6008); + re_mdio_write(sc, 0x1d, 0x8300); + re_mdio_write(sc, 0x1d, 0xb902); + re_mdio_write(sc, 0x1d, 0x307e); + re_mdio_write(sc, 0x1d, 0x3068); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4da0); + re_mdio_write(sc, 0x1d, 0x6608); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x56a0); + re_mdio_write(sc, 0x1d, 0x590c); + re_mdio_write(sc, 0x1d, 0x5fa0); + re_mdio_write(sc, 0x1d, 0xcba4); + re_mdio_write(sc, 0x1d, 0x0004); + re_mdio_write(sc, 0x1d, 0xcd8d); + re_mdio_write(sc, 0x1d, 0x0002); + re_mdio_write(sc, 0x1d, 0x80fc); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ca0); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x6408); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7d00); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0xb603); + re_mdio_write(sc, 0x1d, 0x7c10); + re_mdio_write(sc, 0x1d, 0x6010); + re_mdio_write(sc, 0x1d, 0x7d1f); + re_mdio_write(sc, 0x1d, 0x551f); + re_mdio_write(sc, 0x1d, 0x5fb3); + re_mdio_write(sc, 0x1d, 0xaa05); + re_mdio_write(sc, 0x1d, 0x7c80); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x5b58); + re_mdio_write(sc, 0x1d, 0x30d7); + re_mdio_write(sc, 0x1d, 0x7c80); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x5b64); + re_mdio_write(sc, 0x1d, 0x4827); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c10); + re_mdio_write(sc, 0x1d, 0x8400); + re_mdio_write(sc, 0x1d, 0x7c10); + re_mdio_write(sc, 0x1d, 0x6000); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4cc0); + re_mdio_write(sc, 0x1d, 0x7d00); + re_mdio_write(sc, 0x1d, 0x6400); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x5fbb); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c00); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c04); + re_mdio_write(sc, 0x1d, 0x8200); + re_mdio_write(sc, 0x1d, 0x7ce0); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x7d00); + re_mdio_write(sc, 0x1d, 0x6500); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x30a7); + re_mdio_write(sc, 0x1d, 0x3001); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e00); + re_mdio_write(sc, 0x1d, 0x4007); + re_mdio_write(sc, 0x1d, 0x4400); + re_mdio_write(sc, 0x1d, 0x5310); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x673e); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x570f); + re_mdio_write(sc, 0x1d, 0x5fff); + re_mdio_write(sc, 0x1d, 0xaa05); + re_mdio_write(sc, 0x1d, 0x585b); + re_mdio_write(sc, 0x1d, 0x7d80); + re_mdio_write(sc, 0x1d, 0x6100); + re_mdio_write(sc, 0x1d, 0x3107); + re_mdio_write(sc, 0x1d, 0x5867); + re_mdio_write(sc, 0x1d, 0x7d80); + re_mdio_write(sc, 0x1d, 0x6080); + re_mdio_write(sc, 0x1d, 0x9403); + re_mdio_write(sc, 0x1d, 0x7e00); + re_mdio_write(sc, 0x1d, 0x6200); + re_mdio_write(sc, 0x1d, 0xcda3); + re_mdio_write(sc, 0x1d, 0x00e8); + re_mdio_write(sc, 0x1d, 0xcd85); + re_mdio_write(sc, 0x1d, 0x00e6); + re_mdio_write(sc, 0x1d, 0xd96b); + re_mdio_write(sc, 0x1d, 0x00e4); + re_mdio_write(sc, 0x1d, 0x96e4); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x673e); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e20); + re_mdio_write(sc, 0x1d, 0x96dd); + re_mdio_write(sc, 0x1d, 0x8b04); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x5008); + re_mdio_write(sc, 0x1d, 0xab03); + re_mdio_write(sc, 0x1d, 0x7c08); + re_mdio_write(sc, 0x1d, 0x5000); + re_mdio_write(sc, 0x1d, 0x6801); + re_mdio_write(sc, 0x1d, 0x677e); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0xdb7c); + re_mdio_write(sc, 0x1d, 0x00ee); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x7fe1); + re_mdio_write(sc, 0x1d, 0x4e40); + re_mdio_write(sc, 0x1d, 0x4837); + re_mdio_write(sc, 0x1d, 0x4418); + re_mdio_write(sc, 0x1d, 0x41c7); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e40); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x8fc2); + re_mdio_write(sc, 0x1d, 0xd2a0); + re_mdio_write(sc, 0x1d, 0x004b); + re_mdio_write(sc, 0x1d, 0x9204); + re_mdio_write(sc, 0x1d, 0xa042); + re_mdio_write(sc, 0x1d, 0x3132); + re_mdio_write(sc, 0x1d, 0x30f4); + re_mdio_write(sc, 0x1d, 0x7fe1); + re_mdio_write(sc, 0x1d, 0x4e60); + re_mdio_write(sc, 0x1d, 0x489c); + re_mdio_write(sc, 0x1d, 0x4628); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e60); + re_mdio_write(sc, 0x1d, 0x7e28); + re_mdio_write(sc, 0x1d, 0x4628); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5800); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c00); + re_mdio_write(sc, 0x1d, 0x41e8); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x8fa8); + re_mdio_write(sc, 0x1d, 0xb241); + re_mdio_write(sc, 0x1d, 0xa02a); + re_mdio_write(sc, 0x1d, 0x314c); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ea0); + re_mdio_write(sc, 0x1d, 0x7c02); + re_mdio_write(sc, 0x1d, 0x4402); + re_mdio_write(sc, 0x1d, 0x4448); + re_mdio_write(sc, 0x1d, 0x4894); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c03); + re_mdio_write(sc, 0x1d, 0x4824); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c07); + re_mdio_write(sc, 0x1d, 0x41ef); + re_mdio_write(sc, 0x1d, 0x41ff); + re_mdio_write(sc, 0x1d, 0x4891); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c07); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c17); + re_mdio_write(sc, 0x1d, 0x8400); + re_mdio_write(sc, 0x1d, 0x8ef8); + re_mdio_write(sc, 0x1d, 0x41c7); + re_mdio_write(sc, 0x1d, 0x8f8d); + re_mdio_write(sc, 0x1d, 0x92d5); + re_mdio_write(sc, 0x1d, 0xa10f); + re_mdio_write(sc, 0x1d, 0xd480); + re_mdio_write(sc, 0x1d, 0x0008); + re_mdio_write(sc, 0x1d, 0xd580); + re_mdio_write(sc, 0x1d, 0x00b8); + re_mdio_write(sc, 0x1d, 0xa202); + re_mdio_write(sc, 0x1d, 0x3167); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x4404); + re_mdio_write(sc, 0x1d, 0x3167); + re_mdio_write(sc, 0x1d, 0xd484); + re_mdio_write(sc, 0x1d, 0x00f3); + re_mdio_write(sc, 0x1d, 0xd484); + re_mdio_write(sc, 0x1d, 0x00f1); + re_mdio_write(sc, 0x1d, 0x30f4); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ee0); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5400); + re_mdio_write(sc, 0x1d, 0x4488); + re_mdio_write(sc, 0x1d, 0x41cf); + re_mdio_write(sc, 0x1d, 0x30f4); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4ec0); + re_mdio_write(sc, 0x1d, 0x48f3); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c09); + re_mdio_write(sc, 0x1d, 0x4508); + re_mdio_write(sc, 0x1d, 0x41c7); + re_mdio_write(sc, 0x1d, 0x8fb0); + re_mdio_write(sc, 0x1d, 0xd218); + re_mdio_write(sc, 0x1d, 0x00ae); + re_mdio_write(sc, 0x1d, 0xd2a4); + re_mdio_write(sc, 0x1d, 0x009e); + re_mdio_write(sc, 0x1d, 0x3188); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4e80); + re_mdio_write(sc, 0x1d, 0x4832); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c01); + re_mdio_write(sc, 0x1d, 0x7c1f); + re_mdio_write(sc, 0x1d, 0x4c11); + re_mdio_write(sc, 0x1d, 0x4428); + re_mdio_write(sc, 0x1d, 0x7c40); + re_mdio_write(sc, 0x1d, 0x5440); + re_mdio_write(sc, 0x1d, 0x7c01); + re_mdio_write(sc, 0x1d, 0x5801); + re_mdio_write(sc, 0x1d, 0x7c04); + re_mdio_write(sc, 0x1d, 0x5c04); + re_mdio_write(sc, 0x1d, 0x41e8); + re_mdio_write(sc, 0x1d, 0xa4b3); + re_mdio_write(sc, 0x1d, 0x319d); + re_mdio_write(sc, 0x1d, 0x7fe0); + re_mdio_write(sc, 0x1d, 0x4f20); + re_mdio_write(sc, 0x1d, 0x6800); + re_mdio_write(sc, 0x1d, 0x673e); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x0000); + re_mdio_write(sc, 0x1d, 0x570f); + re_mdio_write(sc, 0x1d, 0x5fff); + re_mdio_write(sc, 0x1d, 0xaa04); + re_mdio_write(sc, 0x1d, 0x585b); + re_mdio_write(sc, 0x1d, 0x6100); + re_mdio_write(sc, 0x1d, 0x31ad); + re_mdio_write(sc, 0x1d, 0x5867); + re_mdio_write(sc, 0x1d, 0x6080); + re_mdio_write(sc, 0x1d, 0xbcf2); + re_mdio_write(sc, 0x1d, 0x3001); + re_mdio_write(sc, 0x1f, 0x0004); + re_mdio_write(sc, 0x1c, 0x0200); + re_mdio_write(sc, 0x19, 0x7030); + re_mdio_write(sc, 0x1f, 0x0000); + } - if (phy_power_saving == 1) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - SetEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - ClearEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - DELAY(20000); - } - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8011); - ClearEthPhyBit(sc, 0x14, BIT_14); - MP_WritePhyUshort(sc, 0x1F, 0x0A40); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x9200); - } - else if (sc->re_type == MACFG_63) { - MP_WritePhyUshort(sc, 0x1f, 0x0002); - MP_WritePhyUshort(sc, 0x10, 0x0008); - MP_WritePhyUshort(sc, 0x0d, 0x006c); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1f, 0x0001); - MP_WritePhyUshort(sc, 0x17, 0x0cc0); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x0B, 0xA4D8); - MP_WritePhyUshort(sc, 0x09, 0x281C); - MP_WritePhyUshort(sc, 0x07, 0x2883); - MP_WritePhyUshort(sc, 0x0A, 0x6B35); - MP_WritePhyUshort(sc, 0x1D, 0x3DA4); - MP_WritePhyUshort(sc, 0x1C, 0xEFFD); - MP_WritePhyUshort(sc, 0x14, 0x7F52); - MP_WritePhyUshort(sc, 0x18, 0x7FC6); - MP_WritePhyUshort(sc, 0x08, 0x0601); - MP_WritePhyUshort(sc, 0x06, 0x4063); - MP_WritePhyUshort(sc, 0x10, 0xF074); - MP_WritePhyUshort(sc, 0x1F, 0x0003); - MP_WritePhyUshort(sc, 0x13, 0x0789); - MP_WritePhyUshort(sc, 0x12, 0xF4BD); - MP_WritePhyUshort(sc, 0x1A, 0x04FD); - MP_WritePhyUshort(sc, 0x14, 0x84B0); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x01, 0x0340); - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x04, 0x4000); - MP_WritePhyUshort(sc, 0x03, 0x1D21); - MP_WritePhyUshort(sc, 0x02, 0x0C32); - MP_WritePhyUshort(sc, 0x01, 0x0200); - MP_WritePhyUshort(sc, 0x00, 0x5554); - MP_WritePhyUshort(sc, 0x04, 0x4800); - MP_WritePhyUshort(sc, 0x04, 0x4000); - MP_WritePhyUshort(sc, 0x04, 0xF000); - MP_WritePhyUshort(sc, 0x03, 0xDF01); - MP_WritePhyUshort(sc, 0x02, 0xDF20); - MP_WritePhyUshort(sc, 0x01, 0x101A); - MP_WritePhyUshort(sc, 0x00, 0xA0FF); - MP_WritePhyUshort(sc, 0x04, 0xF800); - MP_WritePhyUshort(sc, 0x04, 0xF000); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x0023); - MP_WritePhyUshort(sc, 0x16, 0x0000); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - PhyRegValue = MP_ReadPhyUshort(sc, 0x0D); - PhyRegValue |= (BIT_5); - MP_WritePhyUshort(sc, 0x0D, PhyRegValue); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - PhyRegValue = MP_ReadPhyUshort(sc, 0x0C); - PhyRegValue |= (BIT_10); - MP_WritePhyUshort(sc, 0x0C, PhyRegValue); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else if (sc->re_type == MACFG_64) { - MP_WritePhyUshort(sc, 0x1f, 0x0001); - MP_WritePhyUshort(sc, 0x17, 0x0cc0); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x01, 0x0340); - MP_WritePhyUshort(sc, 0x1F, 0x0001); - MP_WritePhyUshort(sc, 0x04, 0x4000); - MP_WritePhyUshort(sc, 0x03, 0x1D21); - MP_WritePhyUshort(sc, 0x02, 0x0C32); - MP_WritePhyUshort(sc, 0x01, 0x0200); - MP_WritePhyUshort(sc, 0x00, 0x5554); - MP_WritePhyUshort(sc, 0x04, 0x4800); - MP_WritePhyUshort(sc, 0x04, 0x4000); - MP_WritePhyUshort(sc, 0x04, 0xF000); - MP_WritePhyUshort(sc, 0x03, 0xDF01); - MP_WritePhyUshort(sc, 0x02, 0xDF20); - MP_WritePhyUshort(sc, 0x01, 0x101A); - MP_WritePhyUshort(sc, 0x00, 0xA0FF); - MP_WritePhyUshort(sc, 0x04, 0xF800); - MP_WritePhyUshort(sc, 0x04, 0xF000); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x0023); - MP_WritePhyUshort(sc, 0x16, 0x0000); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - PhyRegValue = MP_ReadPhyUshort(sc, 0x0D); - PhyRegValue |= (BIT_5); - MP_WritePhyUshort(sc, 0x0D, PhyRegValue); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - PhyRegValue = MP_ReadPhyUshort(sc, 0x0C); - PhyRegValue |= (BIT_10); - MP_WritePhyUshort(sc, 0x0C, PhyRegValue); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else if (sc->re_type == MACFG_65) { - MP_WritePhyUshort(sc, 0x1f, 0x0001); - MP_WritePhyUshort(sc, 0x17, 0x0cc0); - MP_WritePhyUshort(sc, 0x1f, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0000); - PhyRegValue = MP_ReadPhyUshort(sc, 0x0D); - PhyRegValue |= (BIT_5); - MP_WritePhyUshort(sc, 0x0D, PhyRegValue); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - PhyRegValue = MP_ReadPhyUshort(sc, 0x0C); - PhyRegValue |= (BIT_10); - MP_WritePhyUshort(sc, 0x0C, PhyRegValue); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0007); - MP_WritePhyUshort(sc, 0x1E, 0x002C); - MP_WritePhyUshort(sc, 0x15, 0x035D); - MP_WritePhyUshort(sc, 0x1F, 0x0005); - MP_WritePhyUshort(sc, 0x01, 0x0300); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else if (sc->re_type == MACFG_66) { - MP_WritePhyUshort(sc, 0x1F, 0x0000); - PhyRegValue = MP_ReadPhyUshort(sc, 0x0D); - PhyRegValue |= (BIT_5); - MP_WritePhyUshort(sc, 0x0D, PhyRegValue); - - MP_WritePhyUshort(sc, 0x1F, 0x0002); - PhyRegValue = MP_ReadPhyUshort(sc, 0x0C); - PhyRegValue |= (BIT_10); - MP_WritePhyUshort(sc, 0x0C, PhyRegValue); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else if (sc->re_type == MACFG_68) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x809b); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xF800, - 0x8000 - ); - MP_WritePhyUshort(sc, 0x13, 0x80A2); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x8000 - ); - MP_WritePhyUshort(sc, 0x13, 0x80A4); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x8500 - ); - MP_WritePhyUshort(sc, 0x13, 0x809C); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xbd00 - ); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x80AD); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xF800, - 0x7000 - ); - MP_WritePhyUshort(sc, 0x13, 0x80B4); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x5000 - ); - MP_WritePhyUshort(sc, 0x13, 0x80AC); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x4000 - ); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x808E); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x1200 - ); - MP_WritePhyUshort(sc, 0x13, 0x8090); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xE500 - ); - MP_WritePhyUshort(sc, 0x13, 0x8092); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x9F00 - ); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - dout_tapbin = 0x0000; - MP_WritePhyUshort(sc, 0x1F, 0x0A46); - TmpUshort = MP_ReadPhyUshort(sc, 0x13); - TmpUshort &= (BIT_1 | BIT_0); - TmpUshort <<= 2; - dout_tapbin |= TmpUshort; - - TmpUshort = MP_ReadPhyUshort(sc, 0x12); - TmpUshort &= (BIT_15 | BIT_14); - TmpUshort >>= 14; - dout_tapbin |= TmpUshort; - - dout_tapbin = ~(dout_tapbin ^ BIT_3); - dout_tapbin <<= 12; - dout_tapbin &= 0xF000; - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - - MP_WritePhyUshort(sc, 0x13, 0x827A); - ClearAndSetEthPhyBit(sc, - 0x14, - BIT_15 | BIT_14 | BIT_13 | BIT_12, - dout_tapbin - ); - - - MP_WritePhyUshort(sc, 0x13, 0x827B); - ClearAndSetEthPhyBit(sc, - 0x14, - BIT_15 | BIT_14 | BIT_13 | BIT_12, - dout_tapbin - ); - - - MP_WritePhyUshort(sc, 0x13, 0x827C); - ClearAndSetEthPhyBit(sc, - 0x14, - BIT_15 | BIT_14 | BIT_13 | BIT_12, - dout_tapbin - ); - - - MP_WritePhyUshort(sc, 0x13, 0x827D); - ClearAndSetEthPhyBit(sc, - 0x14, - BIT_15 | BIT_14 | BIT_13 | BIT_12, - dout_tapbin - ); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8011); - SetEthPhyBit(sc, 0x14, BIT_11); - MP_WritePhyUshort(sc, 0x1F, 0x0A42); - SetEthPhyBit(sc, 0x16, BIT_1); - - MP_WritePhyUshort(sc, 0x1F, 0x0A44); - SetEthPhyBit(sc, 0x11, BIT_11); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0BCA); - ClearAndSetEthPhyBit(sc, - 0x17, - (BIT_13 | BIT_12), - BIT_14 - ); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x803F); - ClearEthPhyBit(sc, 0x14, (BIT_13 | BIT_12)); - MP_WritePhyUshort(sc, 0x13, 0x8047); - ClearEthPhyBit(sc, 0x14, (BIT_13 | BIT_12)); - MP_WritePhyUshort(sc, 0x13, 0x804F); - ClearEthPhyBit(sc, 0x14, (BIT_13 | BIT_12)); - MP_WritePhyUshort(sc, 0x13, 0x8057); - ClearEthPhyBit(sc, 0x14, (BIT_13 | BIT_12)); - MP_WritePhyUshort(sc, 0x13, 0x805F); - ClearEthPhyBit(sc, 0x14, (BIT_13 | BIT_12)); - MP_WritePhyUshort(sc, 0x13, 0x8067); - ClearEthPhyBit(sc, 0x14, (BIT_13 | BIT_12)); - MP_WritePhyUshort(sc, 0x13, 0x806F); - ClearEthPhyBit(sc, 0x14, (BIT_13 | BIT_12)); - MP_WritePhyUshort(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x11, 0x83BA); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_clear_eth_phy_bit(sc, 0x1A, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x18, 0x8310); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x18, 0x0310); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } - if (phy_power_saving == 1) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - SetEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - ClearEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - DELAY(20000); - } - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8045); - MP_WritePhyUshort(sc, 0x14, 0x2444); - MP_WritePhyUshort(sc, 0x13, 0x804d); - MP_WritePhyUshort(sc, 0x14, 0x2444); - MP_WritePhyUshort(sc, 0x13, 0x805d); - MP_WritePhyUshort(sc, 0x14, 0x2444); - MP_WritePhyUshort(sc, 0x13, 0x8011); - SetEthPhyBit(sc, 0x14, BIT_15); - MP_WritePhyUshort(sc, 0x1F, 0x0A40); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x9200); - } - else if (sc->re_type == MACFG_69 || sc->re_type == MACFG_76) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x808A); - ClearAndSetEthPhyBit(sc, - 0x14, - BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0, - 0x0A); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8011); - SetEthPhyBit(sc, 0x14, BIT_11); - MP_WritePhyUshort(sc, 0x1F, 0x0A42); - SetEthPhyBit(sc, 0x16, BIT_1); - - MP_WritePhyUshort(sc, 0x1F, 0x0A44); - SetEthPhyBit(sc, 0x11, BIT_11); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - if (sc->RequireAdcBiasPatch) { - MP_WritePhyUshort(sc, 0x1F, 0x0BCF); - MP_WritePhyUshort(sc, 0x16, sc->AdcBiasPatchIoffset); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0007); + re_mdio_write(sc, 0x0E, 0x003C); + re_mdio_write(sc, 0x0D, 0x4007); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x0D, 0x0003); + re_mdio_write(sc, 0x0E, 0x0015); + re_mdio_write(sc, 0x0D, 0x4003); + re_mdio_write(sc, 0x0E, 0x0000); + re_mdio_write(sc, 0x0D, 0x0000); + } else if (sc->re_type == MACFG_56) { + re_mdio_write(sc, 0x1F, 0x0A46); + PhyRegValue = re_mdio_read(sc, 0x10); + TmpUshort = (PhyRegValue & BIT_8) ? 0 : BIT_15; + + re_mdio_write(sc, 0x1F, 0x0BCC); + re_clear_eth_phy_bit(sc, 0x12, BIT_15); + re_set_eth_phy_bit(sc, 0x12, TmpUshort); + + + re_mdio_write(sc, 0x1F, 0x0A46); + PhyRegValue = re_mdio_read(sc, 0x13); + TmpUshort = (PhyRegValue & BIT_8) ? BIT_1 : 0; + + re_mdio_write(sc, 0x1F, 0x0C41); + re_clear_eth_phy_bit(sc, 0x15, BIT_1); + re_set_eth_phy_bit(sc, 0x15, TmpUshort); + + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, (BIT_3 | BIT_2)); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0BCC); + re_clear_eth_phy_bit(sc, 0x14, BIT_8); + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_7); + re_set_eth_phy_bit(sc, 0x11, BIT_6); + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8084); + re_clear_eth_phy_bit(sc, 0x14, (BIT_14 | BIT_13)); + re_set_eth_phy_bit(sc, 0x10, BIT_12); + re_set_eth_phy_bit(sc, 0x10, BIT_1); + re_set_eth_phy_bit(sc, 0x10, BIT_0); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0A4B); + re_set_eth_phy_bit(sc, 0x11, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8012); + re_set_eth_phy_bit(sc, 0x14, BIT_15); + re_mdio_write(sc, 0x1F, 0x0000); + + + + re_mdio_write(sc, 0x1F, 0x0C42); + re_clear_set_eth_phy_bit(sc, + 0x11, + BIT_13, + BIT_14 + ); + re_mdio_write(sc, 0x1F, 0x0000); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } - { - u_int16_t rlen; + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x809A); + re_mdio_write(sc, 0x14, 0x8022); + re_mdio_write(sc, 0x13, 0x80A0); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x1000 + ); + re_mdio_write(sc, 0x13, 0x8088); + re_mdio_write(sc, 0x14, 0x9222); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8011); + re_clear_eth_phy_bit(sc, 0x14, BIT_14); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + } else if (sc->re_type == MACFG_58) { + re_mdio_write(sc, 0x1F, 0x0BCC); + re_clear_eth_phy_bit(sc, 0x14, BIT_8); + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_7); + re_set_eth_phy_bit(sc, 0x11, BIT_6); + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8084); + re_clear_eth_phy_bit(sc, 0x14, (BIT_14 | BIT_13)); + re_set_eth_phy_bit(sc, 0x10, BIT_12); + re_set_eth_phy_bit(sc, 0x10, BIT_1); + re_set_eth_phy_bit(sc, 0x10, BIT_0); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8012); + re_set_eth_phy_bit(sc, 0x14, BIT_15); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0C42); + re_clear_set_eth_phy_bit(sc, + 0x11, + BIT_13, + BIT_14 + ); + re_mdio_write(sc, 0x1F, 0x0000); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } - MP_WritePhyUshort(sc, 0x1F, 0x0BCD); - PhyRegValue = MP_ReadPhyUshort(sc, 0x16); - PhyRegValue &= 0x000F; + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8011); + re_clear_eth_phy_bit(sc, 0x14, BIT_14); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + } else if (sc->re_type == MACFG_59) { + re_mdio_write(sc, 0x1F, 0x0BCC); + re_clear_eth_phy_bit(sc, 0x14, BIT_8); + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_7); + re_set_eth_phy_bit(sc, 0x11, BIT_6); + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8084); + re_clear_eth_phy_bit(sc, 0x14, (BIT_14 | BIT_13)); + re_set_eth_phy_bit(sc, 0x10, BIT_12); + re_set_eth_phy_bit(sc, 0x10, BIT_1); + re_set_eth_phy_bit(sc, 0x10, BIT_0); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8012); + re_set_eth_phy_bit(sc, 0x14, BIT_15); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0BCE); + re_mdio_write(sc, 0x12, 0x8860); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x80F3); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8B00 + ); + re_mdio_write(sc, 0x13, 0x80F0); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x3A00 + ); + re_mdio_write(sc, 0x13, 0x80EF); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x0500 + ); + re_mdio_write(sc, 0x13, 0x80F6); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6E00 + ); + re_mdio_write(sc, 0x13, 0x80EC); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6800 + ); + re_mdio_write(sc, 0x13, 0x80ED); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x7C00 + ); + re_mdio_write(sc, 0x13, 0x80F2); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xF400 + ); + re_mdio_write(sc, 0x13, 0x80F4); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8500 + ); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8110); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xA800 + ); + re_mdio_write(sc, 0x13, 0x810F); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x1D00 + ); + re_mdio_write(sc, 0x13, 0x8111); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xF500 + ); + re_mdio_write(sc, 0x13, 0x8113); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6100 + ); + re_mdio_write(sc, 0x13, 0x8115); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x9200 + ); + re_mdio_write(sc, 0x13, 0x810E); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x0400 + ); + re_mdio_write(sc, 0x13, 0x810C); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x7C00 + ); + re_mdio_write(sc, 0x13, 0x810B); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x5A00 + ); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x80D1); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xFF00 + ); + re_mdio_write(sc, 0x13, 0x80CD); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x9E00 + ); + re_mdio_write(sc, 0x13, 0x80D3); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x0E00 + ); + re_mdio_write(sc, 0x13, 0x80D5); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xCA00 + ); + re_mdio_write(sc, 0x13, 0x80D7); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8400 + ); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } - if (PhyRegValue > 3) { - rlen = PhyRegValue - 3; - } - else { - rlen = 0; - } + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8011); + re_clear_eth_phy_bit(sc, 0x14, BIT_14); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + } else if (sc->re_type == MACFG_60) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8012); + re_set_eth_phy_bit(sc, 0x14, BIT_15); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0BCE); + re_mdio_write(sc, 0x12, 0x8860); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x80F3); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8B00 + ); + re_mdio_write(sc, 0x13, 0x80F0); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x3A00 + ); + re_mdio_write(sc, 0x13, 0x80EF); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x0500 + ); + re_mdio_write(sc, 0x13, 0x80F6); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6E00 + ); + re_mdio_write(sc, 0x13, 0x80EC); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6800 + ); + re_mdio_write(sc, 0x13, 0x80ED); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x7C00 + ); + re_mdio_write(sc, 0x13, 0x80F2); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xF400 + ); + re_mdio_write(sc, 0x13, 0x80F4); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8500 + ); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8110); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xA800 + ); + re_mdio_write(sc, 0x13, 0x810F); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x1D00 + ); + re_mdio_write(sc, 0x13, 0x8111); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xF500 + ); + re_mdio_write(sc, 0x13, 0x8113); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6100 + ); + re_mdio_write(sc, 0x13, 0x8115); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x9200 + ); + re_mdio_write(sc, 0x13, 0x810E); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x0400 + ); + re_mdio_write(sc, 0x13, 0x810C); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x7C00 + ); + re_mdio_write(sc, 0x13, 0x810B); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x5A00 + ); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x80D1); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xFF00 + ); + re_mdio_write(sc, 0x13, 0x80CD); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x9E00 + ); + re_mdio_write(sc, 0x13, 0x80D3); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x0E00 + ); + re_mdio_write(sc, 0x13, 0x80D5); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xCA00 + ); + re_mdio_write(sc, 0x13, 0x80D7); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8400 + ); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } - PhyRegValue = rlen | (rlen << 4) | (rlen << 8) | (rlen << 12); + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8011); + re_clear_eth_phy_bit(sc, 0x14, BIT_14); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + } else if (sc->re_type == MACFG_61) { + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, (BIT_3 | BIT_2)); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0BCC); + re_clear_eth_phy_bit(sc, 0x14, BIT_8); + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_7); + re_set_eth_phy_bit(sc, 0x11, BIT_6); + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8084); + re_clear_eth_phy_bit(sc, 0x14, (BIT_14 | BIT_13)); + re_set_eth_phy_bit(sc, 0x10, BIT_12); + re_set_eth_phy_bit(sc, 0x10, BIT_1); + re_set_eth_phy_bit(sc, 0x10, BIT_0); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A4B); + re_set_eth_phy_bit(sc, 0x11, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8012); + re_set_eth_phy_bit(sc, 0x14, BIT_15); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0C42); + re_clear_set_eth_phy_bit(sc, + 0x11, + BIT_13, + BIT_14 + ); + re_mdio_write(sc, 0x1F, 0x0000); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } - MP_WritePhyUshort(sc, 0x1F, 0x0BCD); - MP_WritePhyUshort(sc, 0x17, PhyRegValue); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8011); + re_clear_eth_phy_bit(sc, 0x14, BIT_14); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + } else if (sc->re_type == MACFG_62 || sc->re_type == MACFG_67) { + re_mdio_write(sc, 0x1F, 0x0BCC); + re_clear_eth_phy_bit(sc, 0x14, BIT_8); + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_7); + re_set_eth_phy_bit(sc, 0x11, BIT_6); + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8084); + re_clear_eth_phy_bit(sc, 0x14, (BIT_14 | BIT_13)); + re_set_eth_phy_bit(sc, 0x10, BIT_12); + re_set_eth_phy_bit(sc, 0x10, BIT_1); + re_set_eth_phy_bit(sc, 0x10, BIT_0); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8012); + re_set_eth_phy_bit(sc, 0x14, BIT_15); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0C42); + re_clear_set_eth_phy_bit(sc, + 0x11, + BIT_13, + BIT_14 + ); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x80F3); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8B00 + ); + re_mdio_write(sc, 0x13, 0x80F0); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x3A00 + ); + re_mdio_write(sc, 0x13, 0x80EF); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x0500 + ); + re_mdio_write(sc, 0x13, 0x80F6); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6E00 + ); + re_mdio_write(sc, 0x13, 0x80EC); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6800 + ); + re_mdio_write(sc, 0x13, 0x80ED); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x7C00 + ); + re_mdio_write(sc, 0x13, 0x80F2); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xF400 + ); + re_mdio_write(sc, 0x13, 0x80F4); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8500 + ); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8110); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xA800 + ); + re_mdio_write(sc, 0x13, 0x810F); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x1D00 + ); + re_mdio_write(sc, 0x13, 0x8111); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xF500 + ); + re_mdio_write(sc, 0x13, 0x8113); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6100 + ); + re_mdio_write(sc, 0x13, 0x8115); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x9200 + ); + re_mdio_write(sc, 0x13, 0x810E); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x0400 + ); + re_mdio_write(sc, 0x13, 0x810C); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x7C00 + ); + re_mdio_write(sc, 0x13, 0x810B); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x5A00 + ); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x80D1); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xFF00 + ); + re_mdio_write(sc, 0x13, 0x80CD); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x9E00 + ); + re_mdio_write(sc, 0x13, 0x80D3); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x0E00 + ); + re_mdio_write(sc, 0x13, 0x80D5); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xCA00 + ); + re_mdio_write(sc, 0x13, 0x80D7); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8400 + ); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } - { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x85FE); - ClearAndSetEthPhyBit( - sc, - 0x14, - BIT_15 | BIT_14 | BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_8, - BIT_9); - MP_WritePhyUshort(sc, 0x13, 0x85FF); - ClearAndSetEthPhyBit( - sc, - 0x14, - BIT_15 | BIT_14 | BIT_13 | BIT_12, - BIT_11 | BIT_10 | BIT_9 | BIT_8); - MP_WritePhyUshort(sc, 0x13, 0x814B); - ClearAndSetEthPhyBit( - sc, - 0x14, - BIT_15 | BIT_14 | BIT_13 | BIT_11 | BIT_10 | BIT_9 | BIT_8, - BIT_12); - } - - - MP_WritePhyUshort(sc, 0x1F, 0x0C41); - ClearEthPhyBit(sc, 0x15, BIT_1); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - SetEthPhyBit(sc, 0x10, BIT_0); - MP_WritePhyUshort(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8011); + re_clear_eth_phy_bit(sc, 0x14, BIT_14); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + } else if (sc->re_type == MACFG_63) { + re_mdio_write(sc, 0x1f, 0x0002); + re_mdio_write(sc, 0x10, 0x0008); + re_mdio_write(sc, 0x0d, 0x006c); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x17, 0x0cc0); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x0B, 0xA4D8); + re_mdio_write(sc, 0x09, 0x281C); + re_mdio_write(sc, 0x07, 0x2883); + re_mdio_write(sc, 0x0A, 0x6B35); + re_mdio_write(sc, 0x1D, 0x3DA4); + re_mdio_write(sc, 0x1C, 0xEFFD); + re_mdio_write(sc, 0x14, 0x7F52); + re_mdio_write(sc, 0x18, 0x7FC6); + re_mdio_write(sc, 0x08, 0x0601); + re_mdio_write(sc, 0x06, 0x4063); + re_mdio_write(sc, 0x10, 0xF074); + re_mdio_write(sc, 0x1F, 0x0003); + re_mdio_write(sc, 0x13, 0x0789); + re_mdio_write(sc, 0x12, 0xF4BD); + re_mdio_write(sc, 0x1A, 0x04FD); + re_mdio_write(sc, 0x14, 0x84B0); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x01, 0x0340); + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x04, 0x4000); + re_mdio_write(sc, 0x03, 0x1D21); + re_mdio_write(sc, 0x02, 0x0C32); + re_mdio_write(sc, 0x01, 0x0200); + re_mdio_write(sc, 0x00, 0x5554); + re_mdio_write(sc, 0x04, 0x4800); + re_mdio_write(sc, 0x04, 0x4000); + re_mdio_write(sc, 0x04, 0xF000); + re_mdio_write(sc, 0x03, 0xDF01); + re_mdio_write(sc, 0x02, 0xDF20); + re_mdio_write(sc, 0x01, 0x101A); + re_mdio_write(sc, 0x00, 0xA0FF); + re_mdio_write(sc, 0x04, 0xF800); + re_mdio_write(sc, 0x04, 0xF000); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0023); + re_mdio_write(sc, 0x16, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + PhyRegValue = re_mdio_read(sc, 0x0D); + PhyRegValue |= (BIT_5); + re_mdio_write(sc, 0x0D, PhyRegValue); + + re_mdio_write(sc, 0x1F, 0x0002); + PhyRegValue = re_mdio_read(sc, 0x0C); + PhyRegValue |= (BIT_10); + re_mdio_write(sc, 0x0C, PhyRegValue); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_64) { + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x17, 0x0cc0); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x01, 0x0340); + re_mdio_write(sc, 0x1F, 0x0001); + re_mdio_write(sc, 0x04, 0x4000); + re_mdio_write(sc, 0x03, 0x1D21); + re_mdio_write(sc, 0x02, 0x0C32); + re_mdio_write(sc, 0x01, 0x0200); + re_mdio_write(sc, 0x00, 0x5554); + re_mdio_write(sc, 0x04, 0x4800); + re_mdio_write(sc, 0x04, 0x4000); + re_mdio_write(sc, 0x04, 0xF000); + re_mdio_write(sc, 0x03, 0xDF01); + re_mdio_write(sc, 0x02, 0xDF20); + re_mdio_write(sc, 0x01, 0x101A); + re_mdio_write(sc, 0x00, 0xA0FF); + re_mdio_write(sc, 0x04, 0xF800); + re_mdio_write(sc, 0x04, 0xF000); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x0023); + re_mdio_write(sc, 0x16, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + PhyRegValue = re_mdio_read(sc, 0x0D); + PhyRegValue |= (BIT_5); + re_mdio_write(sc, 0x0D, PhyRegValue); + + re_mdio_write(sc, 0x1F, 0x0002); + PhyRegValue = re_mdio_read(sc, 0x0C); + PhyRegValue |= (BIT_10); + re_mdio_write(sc, 0x0C, PhyRegValue); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_65) { + re_mdio_write(sc, 0x1f, 0x0001); + re_mdio_write(sc, 0x17, 0x0cc0); + re_mdio_write(sc, 0x1f, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0000); + PhyRegValue = re_mdio_read(sc, 0x0D); + PhyRegValue |= (BIT_5); + re_mdio_write(sc, 0x0D, PhyRegValue); + + re_mdio_write(sc, 0x1F, 0x0002); + PhyRegValue = re_mdio_read(sc, 0x0C); + PhyRegValue |= (BIT_10); + re_mdio_write(sc, 0x0C, PhyRegValue); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0007); + re_mdio_write(sc, 0x1E, 0x002C); + re_mdio_write(sc, 0x15, 0x035D); + re_mdio_write(sc, 0x1F, 0x0005); + re_mdio_write(sc, 0x01, 0x0300); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_66) { + re_mdio_write(sc, 0x1F, 0x0000); + PhyRegValue = re_mdio_read(sc, 0x0D); + PhyRegValue |= (BIT_5); + re_mdio_write(sc, 0x0D, PhyRegValue); + + re_mdio_write(sc, 0x1F, 0x0002); + PhyRegValue = re_mdio_read(sc, 0x0C); + PhyRegValue |= (BIT_10); + re_mdio_write(sc, 0x0C, PhyRegValue); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_68) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x809b); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xF800, + 0x8000 + ); + re_mdio_write(sc, 0x13, 0x80A2); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8000 + ); + re_mdio_write(sc, 0x13, 0x80A4); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8500 + ); + re_mdio_write(sc, 0x13, 0x809C); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xbd00 + ); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x80AD); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xF800, + 0x7000 + ); + re_mdio_write(sc, 0x13, 0x80B4); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x5000 + ); + re_mdio_write(sc, 0x13, 0x80AC); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x4000 + ); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x808E); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x1200 + ); + re_mdio_write(sc, 0x13, 0x8090); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xE500 + ); + re_mdio_write(sc, 0x13, 0x8092); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x9F00 + ); + re_mdio_write(sc, 0x1F, 0x0000); + + dout_tapbin = 0x0000; + re_mdio_write(sc, 0x1F, 0x0A46); + TmpUshort = re_mdio_read(sc, 0x13); + TmpUshort &= (BIT_1|BIT_0); + TmpUshort <<= 2; + dout_tapbin |= TmpUshort; + + TmpUshort = re_mdio_read(sc, 0x12); + TmpUshort &= (BIT_15|BIT_14); + TmpUshort >>= 14; + dout_tapbin |= TmpUshort; + + dout_tapbin = ~(dout_tapbin^BIT_3); + dout_tapbin <<= 12; + dout_tapbin &= 0xF000; + + re_mdio_write(sc, 0x1F, 0x0A43); + + re_mdio_write(sc, 0x13, 0x827A); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_15|BIT_14|BIT_13|BIT_12, + dout_tapbin + ); + + + re_mdio_write(sc, 0x13, 0x827B); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_15|BIT_14|BIT_13|BIT_12, + dout_tapbin + ); + + + re_mdio_write(sc, 0x13, 0x827C); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_15|BIT_14|BIT_13|BIT_12, + dout_tapbin + ); + + + re_mdio_write(sc, 0x13, 0x827D); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_15|BIT_14|BIT_13|BIT_12, + dout_tapbin + ); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8011); + re_set_eth_phy_bit(sc, 0x14, BIT_11); + re_mdio_write(sc, 0x1F, 0x0A42); + re_set_eth_phy_bit(sc, 0x16, BIT_1); + + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_11); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0BCA); + re_clear_set_eth_phy_bit(sc, + 0x17, + (BIT_13 | BIT_12), + BIT_14 + ); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x803F); + re_clear_eth_phy_bit(sc, 0x14, (BIT_13 | BIT_12)); + re_mdio_write(sc, 0x13, 0x8047); + re_clear_eth_phy_bit(sc, 0x14, (BIT_13 | BIT_12)); + re_mdio_write(sc, 0x13, 0x804F); + re_clear_eth_phy_bit(sc, 0x14, (BIT_13 | BIT_12)); + re_mdio_write(sc, 0x13, 0x8057); + re_clear_eth_phy_bit(sc, 0x14, (BIT_13 | BIT_12)); + re_mdio_write(sc, 0x13, 0x805F); + re_clear_eth_phy_bit(sc, 0x14, (BIT_13 | BIT_12)); + re_mdio_write(sc, 0x13, 0x8067); + re_clear_eth_phy_bit(sc, 0x14, (BIT_13 | BIT_12)); + re_mdio_write(sc, 0x13, 0x806F); + re_clear_eth_phy_bit(sc, 0x14, (BIT_13 | BIT_12)); + re_mdio_write(sc, 0x1F, 0x0000); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8045); + re_mdio_write(sc, 0x14, 0x2444); + re_mdio_write(sc, 0x13, 0x804d); + re_mdio_write(sc, 0x14, 0x2444); + re_mdio_write(sc, 0x13, 0x805d); + re_mdio_write(sc, 0x14, 0x2444); + re_mdio_write(sc, 0x13, 0x8011); + re_set_eth_phy_bit(sc, 0x14, BIT_15); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + } else if (sc->re_type == MACFG_69 || sc->re_type == MACFG_76) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x808A); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0, + 0x0A); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8011); + re_set_eth_phy_bit(sc, 0x14, BIT_11); + re_mdio_write(sc, 0x1F, 0x0A42); + re_set_eth_phy_bit(sc, 0x16, BIT_1); + + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_11); + re_mdio_write(sc, 0x1F, 0x0000); + + if (sc->RequireAdcBiasPatch) { + re_mdio_write(sc, 0x1F, 0x0BCF); + re_mdio_write(sc, 0x16, sc->AdcBiasPatchIoffset); + re_mdio_write(sc, 0x1F, 0x0000); + } - if (phy_power_saving == 1) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - SetEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - ClearEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - DELAY(20000); - } - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8045); - MP_WritePhyUshort(sc, 0x14, 0x2444); - MP_WritePhyUshort(sc, 0x13, 0x804d); - MP_WritePhyUshort(sc, 0x14, 0x2444); - MP_WritePhyUshort(sc, 0x13, 0x805d); - MP_WritePhyUshort(sc, 0x14, 0x2444); - MP_WritePhyUshort(sc, 0x13, 0x8011); - SetEthPhyBit(sc, 0x14, BIT_15); - MP_WritePhyUshort(sc, 0x1F, 0x0A40); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x9200); - } - else if (sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || - sc->re_type == MACFG_72 || sc->re_type == MACFG_73) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x808E); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x4800); - MP_WritePhyUshort(sc, 0x13, 0x8090); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xCC00); - MP_WritePhyUshort(sc, 0x13, 0x8092); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xB000); - MP_WritePhyUshort(sc, 0x13, 0x8088); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x6000); - MP_WritePhyUshort(sc, 0x13, 0x808B); - ClearAndSetEthPhyBit(sc, - 0x14, - BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_9 | BIT_8, - 0x0B00); - MP_WritePhyUshort(sc, 0x13, 0x808D); - ClearAndSetEthPhyBit(sc, - 0x14, - BIT_12 | BIT_11 | BIT_10 | BIT_9 | BIT_8, - 0x0600); - MP_WritePhyUshort(sc, 0x13, 0x808C); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0xB000); - - MP_WritePhyUshort(sc, 0x13, 0x80A0); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x2800); - MP_WritePhyUshort(sc, 0x13, 0x80A2); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x5000); - MP_WritePhyUshort(sc, 0x13, 0x809B); - ClearAndSetEthPhyBit(sc, - 0x14, - BIT_15 | BIT_14 | BIT_13 | BIT_12 | BIT_11, - BIT_15 | BIT_13 | BIT_12); - MP_WritePhyUshort(sc, 0x13, 0x809A); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x4B00); - MP_WritePhyUshort(sc, 0x13, 0x809D); - ClearAndSetEthPhyBit(sc, - 0x14, - BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_9 | BIT_8, - 0x0800); - MP_WritePhyUshort(sc, 0x13, 0x80A1); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x7000); - MP_WritePhyUshort(sc, 0x13, 0x809F); - ClearAndSetEthPhyBit(sc, - 0x14, - BIT_12 | BIT_11 | BIT_10 | BIT_9 | BIT_8, - 0x0300); - MP_WritePhyUshort(sc, 0x13, 0x809E); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x8800); - - MP_WritePhyUshort(sc, 0x13, 0x80B2); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x2200); - MP_WritePhyUshort(sc, 0x13, 0x80AD); - ClearAndSetEthPhyBit(sc, - 0x14, - BIT_15 | BIT_14 | BIT_13 | BIT_12 | BIT_11, - BIT_15 | BIT_12 | BIT_11); - MP_WritePhyUshort(sc, 0x13, 0x80AF); - ClearAndSetEthPhyBit(sc, - 0x14, - BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_9 | BIT_8, - 0x0800); - MP_WritePhyUshort(sc, 0x13, 0x80B3); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x6F00); - MP_WritePhyUshort(sc, 0x13, 0x80B1); - ClearAndSetEthPhyBit(sc, - 0x14, - BIT_12 | BIT_11 | BIT_10 | BIT_9 | BIT_8, - 0x0300); - MP_WritePhyUshort(sc, 0x13, 0x80B0); - ClearAndSetEthPhyBit(sc, - 0x14, - 0xFF00, - 0x9300); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8011); - ClearEthPhyBit(sc, 0x14, BIT_11); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0A44); - SetEthPhyBit(sc, 0x11, BIT_11); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8016); - SetEthPhyBit(sc, 0x14, BIT_10); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - if (phy_power_saving == 1 && !HW_SUPP_SERDES_PHY(sc)) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - SetEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - ClearEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - DELAY(20000); - } - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8045); - MP_WritePhyUshort(sc, 0x14, 0x2444); - MP_WritePhyUshort(sc, 0x13, 0x804d); - MP_WritePhyUshort(sc, 0x14, 0x2444); - MP_WritePhyUshort(sc, 0x13, 0x805d); - MP_WritePhyUshort(sc, 0x14, 0x2444); - MP_WritePhyUshort(sc, 0x13, 0x8011); - SetEthPhyBit(sc, 0x14, BIT_15); - MP_WritePhyUshort(sc, 0x1F, 0x0A40); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - MP_WritePhyUshort(sc, 0x00, 0x9200); - } - else if (sc->re_type == MACFG_74) { - MP_WritePhyUshort(sc, 0x1F, 0x0A44); - SetEthPhyBit(sc, 0x11, BIT_11); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - - MP_WritePhyUshort(sc, 0x1F, 0x0A4C); - ClearEthPhyBit(sc, 0x15, (BIT_14 | BIT_13)); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x81B9); - MP_WritePhyUshort(sc, 0x14, 0x2000); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x81D4); - ClearAndSetEthPhyOcpBit(sc, - 0x14, - 0xFF00, - 0x6600); - MP_WritePhyUshort(sc, 0x13, 0x81CB); - ClearAndSetEthPhyOcpBit(sc, - 0x14, - 0xFF00, - 0x3500); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - - MP_WritePhyUshort(sc, 0x1F, 0x0A80); - ClearAndSetEthPhyOcpBit(sc, - 0x16, - 0x000F, - 0x0005); - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8016); - SetEthPhyBit(sc, 0x14, BIT_13); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x811E); - MP_WritePhyUshort(sc, 0x14, 0xDECA); - - - MP_WritePhyUshort(sc, 0x13, 0x811C); - MP_WritePhyUshort(sc, 0x14, 0x8008); - MP_WritePhyUshort(sc, 0x13, 0x8118); - MP_WritePhyUshort(sc, 0x14, 0xF8B4); - MP_WritePhyUshort(sc, 0x13, 0x811A); - MP_WritePhyUshort(sc, 0x14, 0x1A04); - - - MP_WritePhyUshort(sc, 0x13, 0x8134); - MP_WritePhyUshort(sc, 0x14, 0xDECA); - MP_WritePhyUshort(sc, 0x13, 0x8132); - MP_WritePhyUshort(sc, 0x14, 0xA008); - MP_WritePhyUshort(sc, 0x13, 0x812E); - MP_WritePhyUshort(sc, 0x14, 0x00B5); - MP_WritePhyUshort(sc, 0x13, 0x8130); - MP_WritePhyUshort(sc, 0x14, 0x1A04); - - - MP_WritePhyUshort(sc, 0x13, 0x8112); - ClearAndSetEthPhyOcpBit(sc, - 0x14, - 0xFF00, - 0x7300); - MP_WritePhyUshort(sc, 0x13, 0x8106); - MP_WritePhyUshort(sc, 0x14, 0xA209); - MP_WritePhyUshort(sc, 0x13, 0x8108); - MP_WritePhyUshort(sc, 0x14, 0x13B0); - MP_WritePhyUshort(sc, 0x13, 0x8103); - ClearAndSetEthPhyOcpBit(sc, - 0x14, - 0xF800, - 0xB800); - MP_WritePhyUshort(sc, 0x13, 0x8105); - ClearAndSetEthPhyOcpBit(sc, - 0x14, - 0xFF00, - 0x0A00); - - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x87EB); - MP_WritePhyUshort(sc, 0x14, 0x0018); - MP_WritePhyUshort(sc, 0x13, 0x87EB); - MP_WritePhyUshort(sc, 0x14, 0x0018); - MP_WritePhyUshort(sc, 0x13, 0x87ED); - MP_WritePhyUshort(sc, 0x14, 0x0733); - MP_WritePhyUshort(sc, 0x13, 0x87EF); - MP_WritePhyUshort(sc, 0x14, 0x08DC); - MP_WritePhyUshort(sc, 0x13, 0x87F1); - MP_WritePhyUshort(sc, 0x14, 0x08DF); - MP_WritePhyUshort(sc, 0x13, 0x87F3); - MP_WritePhyUshort(sc, 0x14, 0x0C79); - MP_WritePhyUshort(sc, 0x13, 0x87F5); - MP_WritePhyUshort(sc, 0x14, 0x0D93); - MP_WritePhyUshort(sc, 0x13, 0x87F9); - MP_WritePhyUshort(sc, 0x14, 0x0010); - MP_WritePhyUshort(sc, 0x13, 0x87FB); - MP_WritePhyUshort(sc, 0x14, 0x0800); - MP_WritePhyUshort(sc, 0x13, 0x8015); - ClearAndSetEthPhyOcpBit(sc, - 0x14, - 0x7000, - 0x7000); - - - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - MP_WritePhyUshort(sc, 0x13, 0x8111); - ClearAndSetEthPhyOcpBit(sc, - 0x14, - 0xFF00, - 0x7C00); - MP_WritePhyUshort(sc, 0x1F, 0x0000); + { + u_int16_t rlen; - if (phy_power_saving == 1) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - SetEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - ClearEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - DELAY(20000); - } - } - else if (sc->re_type == MACFG_75) { - MP_WritePhyUshort(sc, 0x1F, 0x0A44); - SetEthPhyBit(sc, 0x11, BIT_11); - MP_WritePhyUshort(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x1F, 0x0BCD); + PhyRegValue = re_mdio_read(sc, 0x16); + PhyRegValue &= 0x000F; + if (PhyRegValue > 3) { + rlen = PhyRegValue - 3; + } else { + rlen = 0; + } - MP_WritePhyUshort(sc, 0x1F, 0x0C41); - ClearEthPhyBit(sc, 0x15, BIT_1); - MP_WritePhyUshort(sc, 0x1F, 0x0000); + PhyRegValue = rlen | (rlen<<4) | (rlen<<8) | (rlen<<12); + re_mdio_write(sc, 0x1F, 0x0BCD); + re_mdio_write(sc, 0x17, PhyRegValue); + re_mdio_write(sc, 0x1F, 0x0000); + } - if (phy_power_saving == 1) { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - SetEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else { - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - ClearEthPhyBit(sc, 0x10, BIT_2); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - DELAY(20000); - } - } - else if (sc->re_type == MACFG_80) { - ClearAndSetEthPhyOcpBit(sc, - 0xAD40, - 0x03FF, - 0x84 - ); - - SetEthPhyOcpBit(sc, 0xAD4E, BIT_4); - ClearAndSetEthPhyOcpBit(sc, - 0xAD16, - 0x03FF, - 0x0006 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xAD32, - 0x003F, - 0x0006 - ); - ClearEthPhyOcpBit(sc, 0xAC08, BIT_12); - ClearEthPhyOcpBit(sc, 0xAC08, BIT_8); - ClearAndSetEthPhyOcpBit(sc, - 0xAC8A, - BIT_15 | BIT_14 | BIT_13 | BIT_12, - BIT_14 | BIT_13 | BIT_12 - ); - SetEthPhyOcpBit(sc, 0xAD18, BIT_10); - SetEthPhyOcpBit(sc, 0xAD1A, 0x3FF); - SetEthPhyOcpBit(sc, 0xAD1C, 0x3FF); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80EA); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0xC400 - ); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80EB); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0x0700, - 0x0300 - ); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80F8); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x1C00 - ); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80F1); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x3000 - ); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80FE); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0xA500 - ); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8102); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x5000 - ); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8105); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x3300 - ); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8100); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x7000 - ); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8104); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0xF000 - ); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8106); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x6500 - ); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80DC); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0xED00 - ); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80DF); - SetEthPhyOcpBit(sc, 0xA438, BIT_8); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80E1); - ClearEthPhyOcpBit(sc, 0xA438, BIT_8); - - - ClearAndSetEthPhyOcpBit(sc, - 0xBF06, - 0x003F, - 0x38 - ); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x819F); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xD0B6); - - - MP_RealWritePhyOcpRegWord(sc, 0xBC34, 0x5555); - ClearAndSetEthPhyOcpBit(sc, - 0xBF0A, - BIT_11 | BIT_10 | BIT_9, - BIT_11 | BIT_9 - ); - - - ClearEthPhyOcpBit(sc, 0xA5C0, BIT_10); - - - SetEthPhyOcpBit(sc, 0xA442, BIT_11); + { + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x85FE); + re_clear_set_eth_phy_bit( + sc, + 0x14, + BIT_15|BIT_14|BIT_13|BIT_12|BIT_11|BIT_10|BIT_8, + BIT_9); + re_mdio_write(sc, 0x13, 0x85FF); + re_clear_set_eth_phy_bit( + sc, + 0x14, + BIT_15|BIT_14|BIT_13|BIT_12, + BIT_11|BIT_10|BIT_9|BIT_8); + re_mdio_write(sc, 0x13, 0x814B); + re_clear_set_eth_phy_bit( + sc, + 0x14, + BIT_15|BIT_14|BIT_13|BIT_11|BIT_10|BIT_9|BIT_8, + BIT_12); + } - if (phy_power_saving == 1) { - SetEthPhyOcpBit(sc, 0xA430, BIT_2); - } - else { - ClearEthPhyOcpBit(sc, 0xA430, BIT_2); - DELAY(20000); - } - } - else if (sc->re_type == MACFG_81) { - SetEthPhyOcpBit(sc, 0xAD4E, BIT_4); - ClearAndSetEthPhyOcpBit(sc, - 0xAD16, - 0x03FF, - 0x03FF - ); - ClearAndSetEthPhyOcpBit(sc, - 0xAD32, - 0x003F, - 0x0006 - ); - ClearEthPhyOcpBit(sc, 0xAC08, BIT_12); - ClearEthPhyOcpBit(sc, 0xAC08, BIT_8); - ClearAndSetEthPhyOcpBit(sc, - 0xACC0, - BIT_1 | BIT_0, - BIT_1 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xAD40, - BIT_7 | BIT_6 | BIT_5, - BIT_6 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xAD40, - BIT_2 | BIT_1 | BIT_0, - BIT_2 - ); - ClearEthPhyOcpBit(sc, 0xAC14, BIT_7); - ClearEthPhyOcpBit(sc, 0xAC80, BIT_9 | BIT_8); - ClearAndSetEthPhyOcpBit(sc, - 0xAC5E, - BIT_2 | BIT_1 | BIT_0, - BIT_1 - ); - MP_RealWritePhyOcpRegWord(sc, 0xAD4C, 0x00A8); - MP_RealWritePhyOcpRegWord(sc, 0xAC5C, 0x01FF); - ClearAndSetEthPhyOcpBit(sc, - 0xAC8A, - BIT_7 | BIT_6 | BIT_5 | BIT_4, - BIT_5 | BIT_4 - ); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8157); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0500 - ); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8159); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0700 - ); - - - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x80A2); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0153); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x809C); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0153); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x81B3); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0043); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00A7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00D6); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00EC); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00F6); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00FB); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00FD); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00FF); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00BB); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0058); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0029); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0013); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0009); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0004); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0002); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8257); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x020F); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80EA); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x7843); + re_mdio_write(sc, 0x1F, 0x0C41); + re_clear_eth_phy_bit(sc, 0x15, BIT_1); + re_mdio_write(sc, 0x1F, 0x0000); - re_set_phy_mcu_patch_request(sc); + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_0); + re_mdio_write(sc, 0x1F, 0x0000); - ClearEthPhyOcpBit(sc, 0xB896, BIT_0); - ClearEthPhyOcpBit(sc, 0xB892, 0xFF00); - - - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC091); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x6E12); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC092); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x1214); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC094); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x1516); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC096); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x171B); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC098); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x1B1C); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC09A); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x1F1F); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC09C); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x2021); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC09E); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x2224); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC0A0); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x2424); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC0A2); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x2424); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC0A4); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x2424); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC018); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x0AF2); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC01A); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x0D4A); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC01C); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x0F26); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC01E); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x118D); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC020); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x14F3); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC022); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x175A); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC024); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x19C0); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC026); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x1C26); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC089); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x6050); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC08A); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x5F6E); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC08C); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x6E6E); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC08E); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x6E6E); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC090); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x6E12); - - SetEthPhyOcpBit(sc, 0xB896, BIT_0); - re_clear_phy_mcu_patch_request(sc); + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8045); + re_mdio_write(sc, 0x14, 0x2444); + re_mdio_write(sc, 0x13, 0x804d); + re_mdio_write(sc, 0x14, 0x2444); + re_mdio_write(sc, 0x13, 0x805d); + re_mdio_write(sc, 0x14, 0x2444); + re_mdio_write(sc, 0x13, 0x8011); + re_set_eth_phy_bit(sc, 0x14, BIT_15); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + } else if (sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || + sc->re_type == MACFG_72 || sc->re_type == MACFG_73) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x808E); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x4800); + re_mdio_write(sc, 0x13, 0x8090); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xCC00); + re_mdio_write(sc, 0x13, 0x8092); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xB000); + re_mdio_write(sc, 0x13, 0x8088); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6000); + re_mdio_write(sc, 0x13, 0x808B); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_13|BIT_12|BIT_11|BIT_10|BIT_9|BIT_8, + 0x0B00); + re_mdio_write(sc, 0x13, 0x808D); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_12|BIT_11|BIT_10|BIT_9|BIT_8, + 0x0600); + re_mdio_write(sc, 0x13, 0x808C); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0xB000); + + re_mdio_write(sc, 0x13, 0x80A0); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x2800); + re_mdio_write(sc, 0x13, 0x80A2); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x5000); + re_mdio_write(sc, 0x13, 0x809B); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_15|BIT_14|BIT_13|BIT_12|BIT_11, + BIT_15|BIT_13|BIT_12); + re_mdio_write(sc, 0x13, 0x809A); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x4B00); + re_mdio_write(sc, 0x13, 0x809D); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_13|BIT_12|BIT_11|BIT_10|BIT_9|BIT_8, + 0x0800); + re_mdio_write(sc, 0x13, 0x80A1); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x7000); + re_mdio_write(sc, 0x13, 0x809F); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_12|BIT_11|BIT_10|BIT_9|BIT_8, + 0x0300); + re_mdio_write(sc, 0x13, 0x809E); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x8800); + + re_mdio_write(sc, 0x13, 0x80B2); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x2200); + re_mdio_write(sc, 0x13, 0x80AD); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_15|BIT_14|BIT_13|BIT_12|BIT_11, + BIT_15|BIT_12|BIT_11); + re_mdio_write(sc, 0x13, 0x80AF); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_13|BIT_12|BIT_11|BIT_10|BIT_9|BIT_8, + 0x0800); + re_mdio_write(sc, 0x13, 0x80B3); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x6F00); + re_mdio_write(sc, 0x13, 0x80B1); + re_clear_set_eth_phy_bit(sc, + 0x14, + BIT_12|BIT_11|BIT_10|BIT_9|BIT_8, + 0x0300); + re_mdio_write(sc, 0x13, 0x80B0); + re_clear_set_eth_phy_bit(sc, + 0x14, + 0xFF00, + 0x9300); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8011); + re_clear_eth_phy_bit(sc, 0x14, BIT_11); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_11); + re_mdio_write(sc, 0x1F, 0x0000); + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8016); + re_set_eth_phy_bit(sc, 0x14, BIT_10); + re_mdio_write(sc, 0x1F, 0x0000); + + if (phy_power_saving == 1 && !HW_SUPP_SERDES_PHY(sc)) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } - SetEthPhyOcpBit(sc, 0xD068, BIT_13); + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8045); + re_mdio_write(sc, 0x14, 0x2444); + re_mdio_write(sc, 0x13, 0x804d); + re_mdio_write(sc, 0x14, 0x2444); + re_mdio_write(sc, 0x13, 0x805d); + re_mdio_write(sc, 0x14, 0x2444); + re_mdio_write(sc, 0x13, 0x8011); + re_set_eth_phy_bit(sc, 0x14, BIT_15); + re_mdio_write(sc, 0x1F, 0x0A40); + re_mdio_write(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x00, 0x9200); + } else if (sc->re_type == MACFG_74) { + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_11); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0A4C); + re_clear_eth_phy_bit(sc, 0x15, (BIT_14 | BIT_13)); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x81B9); + re_mdio_write(sc, 0x14, 0x2000); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x81D4); + re_clear_set_eth_ocp_phy_bit(sc, + 0x14, + 0xFF00, + 0x6600); + re_mdio_write(sc, 0x13, 0x81CB); + re_clear_set_eth_ocp_phy_bit(sc, + 0x14, + 0xFF00, + 0x3500); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0A80); + re_clear_set_eth_ocp_phy_bit(sc, + 0x16, + 0x000F, + 0x0005); + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8016); + re_set_eth_phy_bit(sc, 0x14, BIT_13); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x811E); + re_mdio_write(sc, 0x14, 0xDECA); + + + re_mdio_write(sc, 0x13, 0x811C); + re_mdio_write(sc, 0x14, 0x8008); + re_mdio_write(sc, 0x13, 0x8118); + re_mdio_write(sc, 0x14, 0xF8B4); + re_mdio_write(sc, 0x13, 0x811A); + re_mdio_write(sc, 0x14, 0x1A04); + + + re_mdio_write(sc, 0x13, 0x8134); + re_mdio_write(sc, 0x14, 0xDECA); + re_mdio_write(sc, 0x13, 0x8132); + re_mdio_write(sc, 0x14, 0xA008); + re_mdio_write(sc, 0x13, 0x812E); + re_mdio_write(sc, 0x14, 0x00B5); + re_mdio_write(sc, 0x13, 0x8130); + re_mdio_write(sc, 0x14, 0x1A04); + + + re_mdio_write(sc, 0x13, 0x8112); + re_clear_set_eth_ocp_phy_bit(sc, + 0x14, + 0xFF00, + 0x7300); + re_mdio_write(sc, 0x13, 0x8106); + re_mdio_write(sc, 0x14, 0xA209); + re_mdio_write(sc, 0x13, 0x8108); + re_mdio_write(sc, 0x14, 0x13B0); + re_mdio_write(sc, 0x13, 0x8103); + re_clear_set_eth_ocp_phy_bit(sc, + 0x14, + 0xF800, + 0xB800); + re_mdio_write(sc, 0x13, 0x8105); + re_clear_set_eth_ocp_phy_bit(sc, + 0x14, + 0xFF00, + 0x0A00); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x87EB); + re_mdio_write(sc, 0x14, 0x0018); + re_mdio_write(sc, 0x13, 0x87EB); + re_mdio_write(sc, 0x14, 0x0018); + re_mdio_write(sc, 0x13, 0x87ED); + re_mdio_write(sc, 0x14, 0x0733); + re_mdio_write(sc, 0x13, 0x87EF); + re_mdio_write(sc, 0x14, 0x08DC); + re_mdio_write(sc, 0x13, 0x87F1); + re_mdio_write(sc, 0x14, 0x08DF); + re_mdio_write(sc, 0x13, 0x87F3); + re_mdio_write(sc, 0x14, 0x0C79); + re_mdio_write(sc, 0x13, 0x87F5); + re_mdio_write(sc, 0x14, 0x0D93); + re_mdio_write(sc, 0x13, 0x87F9); + re_mdio_write(sc, 0x14, 0x0010); + re_mdio_write(sc, 0x13, 0x87FB); + re_mdio_write(sc, 0x14, 0x0800); + re_mdio_write(sc, 0x13, 0x8015); + re_clear_set_eth_ocp_phy_bit(sc, + 0x14, + 0x7000, + 0x7000); + + + re_mdio_write(sc, 0x1F, 0x0A43); + re_mdio_write(sc, 0x13, 0x8111); + re_clear_set_eth_ocp_phy_bit(sc, + 0x14, + 0xFF00, + 0x7C00); + re_mdio_write(sc, 0x1F, 0x0000); + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } + } else if (sc->re_type == MACFG_75) { + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_11); + re_mdio_write(sc, 0x1F, 0x0000); + + + re_mdio_write(sc, 0x1F, 0x0C41); + re_clear_eth_phy_bit(sc, 0x15, BIT_1); + re_mdio_write(sc, 0x1F, 0x0000); + + + if (phy_power_saving == 1) { + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_2); + re_mdio_write(sc, 0x1F, 0x0000); + DELAY(20000); + } + } else if (sc->re_type == MACFG_80) { + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD40, + 0x03FF, + 0x84 + ); + + re_set_eth_ocp_phy_bit(sc, 0xAD4E, BIT_4); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD16, + 0x03FF, + 0x0006 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD32, + 0x003F, + 0x0006 + ); + re_clear_eth_ocp_phy_bit(sc, 0xAC08, BIT_12); + re_clear_eth_ocp_phy_bit(sc, 0xAC08, BIT_8); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAC8A, + BIT_15|BIT_14|BIT_13|BIT_12, + BIT_14|BIT_13|BIT_12 + ); + re_set_eth_ocp_phy_bit(sc, 0xAD18, BIT_10); + re_set_eth_ocp_phy_bit(sc, 0xAD1A, 0x3FF); + re_set_eth_ocp_phy_bit(sc, 0xAD1C, 0x3FF); + + + re_real_ocp_phy_write(sc, 0xA436, 0x80EA); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xC400 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x80EB); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0x0700, + 0x0300 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x80F8); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x1C00 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x80F1); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x3000 + ); + + + re_real_ocp_phy_write(sc, 0xA436, 0x80FE); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xA500 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x8102); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x5000 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x8105); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x3300 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x8100); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x7000 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x8104); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xF000 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x8106); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x6500 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x80DC); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xED00 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x80DF); + re_set_eth_ocp_phy_bit(sc, 0xA438, BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x80E1); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_8); + + + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF06, + 0x003F, + 0x38 + ); + + + re_real_ocp_phy_write(sc, 0xA436, 0x819F); + re_real_ocp_phy_write(sc, 0xA438, 0xD0B6); + + + re_real_ocp_phy_write(sc, 0xBC34, 0x5555); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF0A, + BIT_11|BIT_10|BIT_9, + BIT_11|BIT_9 + ); + + + re_clear_eth_ocp_phy_bit(sc, 0xA5C0, BIT_10); + + + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_81) { + re_set_eth_ocp_phy_bit(sc, 0xAD4E, BIT_4); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD16, + 0x03FF, + 0x03FF + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD32, + 0x003F, + 0x0006 + ); + re_clear_eth_ocp_phy_bit(sc, 0xAC08, BIT_12); + re_clear_eth_ocp_phy_bit(sc, 0xAC08, BIT_8); + re_clear_set_eth_ocp_phy_bit(sc, + 0xACC0, + BIT_1|BIT_0, + BIT_1 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD40, + BIT_7|BIT_6|BIT_5, + BIT_6 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD40, + BIT_2|BIT_1|BIT_0, + BIT_2 + ); + re_clear_eth_ocp_phy_bit(sc, 0xAC14, BIT_7); + re_clear_eth_ocp_phy_bit(sc, 0xAC80, BIT_9|BIT_8); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAC5E, + BIT_2|BIT_1|BIT_0, + BIT_1 + ); + re_real_ocp_phy_write(sc, 0xAD4C, 0x00A8); + re_real_ocp_phy_write(sc, 0xAC5C, 0x01FF); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAC8A, + BIT_7|BIT_6|BIT_5|BIT_4, + BIT_5|BIT_4 + ); + re_real_ocp_phy_write(sc, 0xB87C, 0x8157); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0500 + ); + re_real_ocp_phy_write(sc, 0xB87C, 0x8159); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0700 + ); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x80A2); + re_real_ocp_phy_write(sc, 0xB87E, 0x0153); + re_real_ocp_phy_write(sc, 0xB87C, 0x809C); + re_real_ocp_phy_write(sc, 0xB87E, 0x0153); + + + re_real_ocp_phy_write(sc, 0xA436, 0x81B3); + re_real_ocp_phy_write(sc, 0xA438, 0x0043); + re_real_ocp_phy_write(sc, 0xA438, 0x00A7); + re_real_ocp_phy_write(sc, 0xA438, 0x00D6); + re_real_ocp_phy_write(sc, 0xA438, 0x00EC); + re_real_ocp_phy_write(sc, 0xA438, 0x00F6); + re_real_ocp_phy_write(sc, 0xA438, 0x00FB); + re_real_ocp_phy_write(sc, 0xA438, 0x00FD); + re_real_ocp_phy_write(sc, 0xA438, 0x00FF); + re_real_ocp_phy_write(sc, 0xA438, 0x00BB); + re_real_ocp_phy_write(sc, 0xA438, 0x0058); + re_real_ocp_phy_write(sc, 0xA438, 0x0029); + re_real_ocp_phy_write(sc, 0xA438, 0x0013); + re_real_ocp_phy_write(sc, 0xA438, 0x0009); + re_real_ocp_phy_write(sc, 0xA438, 0x0004); + re_real_ocp_phy_write(sc, 0xA438, 0x0002); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8257); + re_real_ocp_phy_write(sc, 0xA438, 0x020F); + + + re_real_ocp_phy_write(sc, 0xA436, 0x80EA); + re_real_ocp_phy_write(sc, 0xA438, 0x7843); + + + re_set_phy_mcu_patch_request(sc); + + re_clear_eth_ocp_phy_bit(sc, 0xB896, BIT_0); + re_clear_eth_ocp_phy_bit(sc, 0xB892, 0xFF00); + + + re_real_ocp_phy_write(sc, 0xB88E, 0xC091); + re_real_ocp_phy_write(sc, 0xB890, 0x6E12); + re_real_ocp_phy_write(sc, 0xB88E, 0xC092); + re_real_ocp_phy_write(sc, 0xB890, 0x1214); + re_real_ocp_phy_write(sc, 0xB88E, 0xC094); + re_real_ocp_phy_write(sc, 0xB890, 0x1516); + re_real_ocp_phy_write(sc, 0xB88E, 0xC096); + re_real_ocp_phy_write(sc, 0xB890, 0x171B); + re_real_ocp_phy_write(sc, 0xB88E, 0xC098); + re_real_ocp_phy_write(sc, 0xB890, 0x1B1C); + re_real_ocp_phy_write(sc, 0xB88E, 0xC09A); + re_real_ocp_phy_write(sc, 0xB890, 0x1F1F); + re_real_ocp_phy_write(sc, 0xB88E, 0xC09C); + re_real_ocp_phy_write(sc, 0xB890, 0x2021); + re_real_ocp_phy_write(sc, 0xB88E, 0xC09E); + re_real_ocp_phy_write(sc, 0xB890, 0x2224); + re_real_ocp_phy_write(sc, 0xB88E, 0xC0A0); + re_real_ocp_phy_write(sc, 0xB890, 0x2424); + re_real_ocp_phy_write(sc, 0xB88E, 0xC0A2); + re_real_ocp_phy_write(sc, 0xB890, 0x2424); + re_real_ocp_phy_write(sc, 0xB88E, 0xC0A4); + re_real_ocp_phy_write(sc, 0xB890, 0x2424); + re_real_ocp_phy_write(sc, 0xB88E, 0xC018); + re_real_ocp_phy_write(sc, 0xB890, 0x0AF2); + re_real_ocp_phy_write(sc, 0xB88E, 0xC01A); + re_real_ocp_phy_write(sc, 0xB890, 0x0D4A); + re_real_ocp_phy_write(sc, 0xB88E, 0xC01C); + re_real_ocp_phy_write(sc, 0xB890, 0x0F26); + re_real_ocp_phy_write(sc, 0xB88E, 0xC01E); + re_real_ocp_phy_write(sc, 0xB890, 0x118D); + re_real_ocp_phy_write(sc, 0xB88E, 0xC020); + re_real_ocp_phy_write(sc, 0xB890, 0x14F3); + re_real_ocp_phy_write(sc, 0xB88E, 0xC022); + re_real_ocp_phy_write(sc, 0xB890, 0x175A); + re_real_ocp_phy_write(sc, 0xB88E, 0xC024); + re_real_ocp_phy_write(sc, 0xB890, 0x19C0); + re_real_ocp_phy_write(sc, 0xB88E, 0xC026); + re_real_ocp_phy_write(sc, 0xB890, 0x1C26); + re_real_ocp_phy_write(sc, 0xB88E, 0xC089); + re_real_ocp_phy_write(sc, 0xB890, 0x6050); + re_real_ocp_phy_write(sc, 0xB88E, 0xC08A); + re_real_ocp_phy_write(sc, 0xB890, 0x5F6E); + re_real_ocp_phy_write(sc, 0xB88E, 0xC08C); + re_real_ocp_phy_write(sc, 0xB890, 0x6E6E); + re_real_ocp_phy_write(sc, 0xB88E, 0xC08E); + re_real_ocp_phy_write(sc, 0xB890, 0x6E6E); + re_real_ocp_phy_write(sc, 0xB88E, 0xC090); + re_real_ocp_phy_write(sc, 0xB890, 0x6E12); + + re_set_eth_ocp_phy_bit(sc, 0xB896, BIT_0); + + re_clear_phy_mcu_patch_request(sc); + + + re_set_eth_ocp_phy_bit(sc, 0xD068, BIT_13); + + + re_real_ocp_phy_write(sc, 0xA436, 0x81A2); + re_set_eth_ocp_phy_bit(sc, 0xA438, BIT_8); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB54C, + 0xFF00, + 0xDB00); + + + re_clear_eth_ocp_phy_bit(sc, 0xA454, BIT_0); + + + re_set_eth_ocp_phy_bit(sc, 0xA5D4, BIT_5); + re_clear_eth_ocp_phy_bit(sc, 0xAD4E, BIT_4); + re_clear_eth_ocp_phy_bit(sc, 0xA86A, BIT_0); + + + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + + if (sc->RequirePhyMdiSwapPatch) { + u_int16_t adccal_offset_p0; + u_int16_t adccal_offset_p1; + u_int16_t adccal_offset_p2; + u_int16_t adccal_offset_p3; + u_int16_t rg_lpf_cap_xg_p0; + u_int16_t rg_lpf_cap_xg_p1; + u_int16_t rg_lpf_cap_xg_p2; + u_int16_t rg_lpf_cap_xg_p3; + u_int16_t rg_lpf_cap_p0; + u_int16_t rg_lpf_cap_p1; + u_int16_t rg_lpf_cap_p2; + u_int16_t rg_lpf_cap_p3; + + re_clear_set_eth_ocp_phy_bit(sc, + 0xD068, + 0x0007, + 0x0001 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xD068, + 0x0018, + 0x0000 + ); + adccal_offset_p0 = re_real_ocp_phy_read(sc, 0xD06A); + adccal_offset_p0 &= 0x07FF; + re_clear_set_eth_ocp_phy_bit(sc, + 0xD068, + 0x0018, + 0x0008 + ); + adccal_offset_p1 = re_real_ocp_phy_read(sc, 0xD06A); + adccal_offset_p1 &= 0x07FF; + re_clear_set_eth_ocp_phy_bit(sc, + 0xD068, + 0x0018, + 0x0010 + ); + adccal_offset_p2 = re_real_ocp_phy_read(sc, 0xD06A); + adccal_offset_p2 &= 0x07FF; + re_clear_set_eth_ocp_phy_bit(sc, + 0xD068, + 0x0018, + 0x0018 + ); + adccal_offset_p3 = re_real_ocp_phy_read(sc, 0xD06A); + adccal_offset_p3 &= 0x07FF; + + + re_clear_set_eth_ocp_phy_bit(sc, + 0xD068, + 0x0018, + 0x0000 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xD06A, + 0x07FF, + adccal_offset_p3 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xD068, + 0x0018, + 0x0008 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xD06A, + 0x07FF, + adccal_offset_p2 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xD068, + 0x0018, + 0x0010 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xD06A, + 0x07FF, + adccal_offset_p1 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xD068, + 0x0018, + 0x0018 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xD06A, + 0x07FF, + adccal_offset_p0 + ); + + rg_lpf_cap_xg_p0 = re_real_ocp_phy_read(sc, 0xBD5A); + rg_lpf_cap_xg_p0 &= 0x001F; + rg_lpf_cap_xg_p1 = re_real_ocp_phy_read(sc, 0xBD5A); + rg_lpf_cap_xg_p1 &= 0x1F00; + rg_lpf_cap_xg_p2 = re_real_ocp_phy_read(sc, 0xBD5C); + rg_lpf_cap_xg_p2 &= 0x001F; + rg_lpf_cap_xg_p3 = re_real_ocp_phy_read(sc, 0xBD5C); + rg_lpf_cap_xg_p3 &= 0x1F00; + rg_lpf_cap_p0 = re_real_ocp_phy_read(sc, 0xBC18); + rg_lpf_cap_p0 &= 0x001F; + rg_lpf_cap_p1 = re_real_ocp_phy_read(sc, 0xBC18); + rg_lpf_cap_p1 &= 0x1F00; + rg_lpf_cap_p2 = re_real_ocp_phy_read(sc, 0xBC1A); + rg_lpf_cap_p2 &= 0x001F; + rg_lpf_cap_p3 = re_real_ocp_phy_read(sc, 0xBC1A); + rg_lpf_cap_p3 &= 0x1F00; + + re_clear_set_eth_ocp_phy_bit(sc, + 0xBD5A, + 0x001F, + rg_lpf_cap_xg_p3 >> 8 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBD5A, + 0x1F00, + rg_lpf_cap_xg_p2 << 8 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBD5C, + 0x001F, + rg_lpf_cap_xg_p1 >> 8 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBD5C, + 0x1F00, + rg_lpf_cap_xg_p0 << 8 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBC18, + 0x001F, + rg_lpf_cap_p3 >> 8 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBC18, + 0x1F00, + rg_lpf_cap_p2 << 8 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBC1A, + 0x001F, + rg_lpf_cap_p1 >> 8 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBC1A, + 0x1F00, + rg_lpf_cap_p0 << 8 + ); + } - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x81A2); - SetEthPhyOcpBit(sc, 0xA438, BIT_8); - ClearAndSetEthPhyOcpBit(sc, - 0xB54C, - 0xFF00, - 0xDB00); + re_set_eth_ocp_phy_bit(sc, 0xA424, BIT_3); - ClearEthPhyOcpBit(sc, 0xA454, BIT_0); + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_82) { + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + + re_set_eth_ocp_phy_bit(sc, 0xBC08, (BIT_3 | BIT_2)); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8FFF); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x0400 + ); + re_real_ocp_phy_write(sc, 0xB87C, 0x8560); + re_real_ocp_phy_write(sc, 0xB87E, 0x19CC); + re_real_ocp_phy_write(sc, 0xB87C, 0x8562); + re_real_ocp_phy_write(sc, 0xB87E, 0x19CC); + re_real_ocp_phy_write(sc, 0xB87C, 0x8564); + re_real_ocp_phy_write(sc, 0xB87E, 0x19CC); + re_real_ocp_phy_write(sc, 0xB87C, 0x8566); + re_real_ocp_phy_write(sc, 0xB87E, 0x147D); + re_real_ocp_phy_write(sc, 0xB87C, 0x8568); + re_real_ocp_phy_write(sc, 0xB87E, 0x147D); + re_real_ocp_phy_write(sc, 0xB87C, 0x856A); + re_real_ocp_phy_write(sc, 0xB87E, 0x147D); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FFE); + re_real_ocp_phy_write(sc, 0xB87E, 0x0907); + re_clear_set_eth_ocp_phy_bit(sc, + 0xACDA, + 0xFF00, + 0xFF00 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xACDE, + 0xF000, + 0xF000 + ); + re_real_ocp_phy_write(sc, 0xB87C, 0x80D6); + re_real_ocp_phy_write(sc, 0xB87E, 0x2801); + re_real_ocp_phy_write(sc, 0xB87C, 0x80F2); + re_real_ocp_phy_write(sc, 0xB87E, 0x2801); + re_real_ocp_phy_write(sc, 0xB87C, 0x80F4); + re_real_ocp_phy_write(sc, 0xB87E, 0x6077); + re_real_ocp_phy_write(sc, 0xB506, 0x01E7); + re_real_ocp_phy_write(sc, 0xAC8C, 0x0FFC); + re_real_ocp_phy_write(sc, 0xAC46, 0xB7B4); + re_real_ocp_phy_write(sc, 0xAC50, 0x0FBC); + re_real_ocp_phy_write(sc, 0xAC3C, 0x9240); + re_real_ocp_phy_write(sc, 0xAC4E, 0x0DB4); + re_real_ocp_phy_write(sc, 0xACC6, 0x0707); + re_real_ocp_phy_write(sc, 0xACC8, 0xA0D3); + re_real_ocp_phy_write(sc, 0xAD08, 0x0007); + + re_real_ocp_phy_write(sc, 0xB87C, 0x8013); + re_real_ocp_phy_write(sc, 0xB87E, 0x0700); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FB9); + re_real_ocp_phy_write(sc, 0xB87E, 0x2801); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FBA); + re_real_ocp_phy_write(sc, 0xB87E, 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FBC); + re_real_ocp_phy_write(sc, 0xB87E, 0x1900); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FBE); + re_real_ocp_phy_write(sc, 0xB87E, 0xE100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FC0); + re_real_ocp_phy_write(sc, 0xB87E, 0x0800); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FC2); + re_real_ocp_phy_write(sc, 0xB87E, 0xE500); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FC4); + re_real_ocp_phy_write(sc, 0xB87E, 0x0F00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FC6); + re_real_ocp_phy_write(sc, 0xB87E, 0xF100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FC8); + re_real_ocp_phy_write(sc, 0xB87E, 0x0400); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FCa); + re_real_ocp_phy_write(sc, 0xB87E, 0xF300); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FCc); + re_real_ocp_phy_write(sc, 0xB87E, 0xFD00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FCe); + re_real_ocp_phy_write(sc, 0xB87E, 0xFF00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FD0); + re_real_ocp_phy_write(sc, 0xB87E, 0xFB00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FD2); + re_real_ocp_phy_write(sc, 0xB87E, 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FD4); + re_real_ocp_phy_write(sc, 0xB87E, 0xF400); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FD6); + re_real_ocp_phy_write(sc, 0xB87E, 0xFF00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FD8); + re_real_ocp_phy_write(sc, 0xB87E, 0xF600); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x813D); + re_real_ocp_phy_write(sc, 0xB87E, 0x390E); + re_real_ocp_phy_write(sc, 0xB87C, 0x814F); + re_real_ocp_phy_write(sc, 0xB87E, 0x790E); + re_real_ocp_phy_write(sc, 0xB87C, 0x80B0); + re_real_ocp_phy_write(sc, 0xB87E, 0x0F31); + re_set_eth_ocp_phy_bit(sc, 0xBF4C, BIT_1); + re_set_eth_ocp_phy_bit(sc, 0xBCCA, (BIT_9 | BIT_8)); + re_real_ocp_phy_write(sc, 0xB87C, 0x8141); + re_real_ocp_phy_write(sc, 0xB87E, 0x320E); + re_real_ocp_phy_write(sc, 0xB87C, 0x8153); + re_real_ocp_phy_write(sc, 0xB87E, 0x720E); + re_clear_eth_ocp_phy_bit(sc, 0xA432, BIT_6); + re_real_ocp_phy_write(sc, 0xB87C, 0x8529); + re_real_ocp_phy_write(sc, 0xB87E, 0x050E); + + + re_real_ocp_phy_write(sc, 0xA436, 0x816C); + re_real_ocp_phy_write(sc, 0xA438, 0xC4A0); + re_real_ocp_phy_write(sc, 0xA436, 0x8170); + re_real_ocp_phy_write(sc, 0xA438, 0xC4A0); + re_real_ocp_phy_write(sc, 0xA436, 0x8174); + re_real_ocp_phy_write(sc, 0xA438, 0x04A0); + re_real_ocp_phy_write(sc, 0xA436, 0x8178); + re_real_ocp_phy_write(sc, 0xA438, 0x04A0); + re_real_ocp_phy_write(sc, 0xA436, 0x817C); + re_real_ocp_phy_write(sc, 0xA438, 0x0719); + re_real_ocp_phy_write(sc, 0xA436, 0x8FF4); + re_real_ocp_phy_write(sc, 0xA438, 0x0400); + re_real_ocp_phy_write(sc, 0xA436, 0x8FF1); + re_real_ocp_phy_write(sc, 0xA438, 0x0404); + re_real_ocp_phy_write(sc, 0xBF4A, 0x001B); + re_real_ocp_phy_write(sc, 0xB87C, 0x8033); + re_real_ocp_phy_write(sc, 0xB87E, 0x7C13); + re_real_ocp_phy_write(sc, 0xB87C, 0x8037); + re_real_ocp_phy_write(sc, 0xB87E, 0x7C13); + re_real_ocp_phy_write(sc, 0xB87C, 0x803B); + re_real_ocp_phy_write(sc, 0xB87E, 0xFC32); + re_real_ocp_phy_write(sc, 0xB87C, 0x803F); + re_real_ocp_phy_write(sc, 0xB87E, 0x7C13); + re_real_ocp_phy_write(sc, 0xB87C, 0x8043); + re_real_ocp_phy_write(sc, 0xB87E, 0x7C13); + re_real_ocp_phy_write(sc, 0xB87C, 0x8047); + re_real_ocp_phy_write(sc, 0xB87E, 0x7C13); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x8145); + re_real_ocp_phy_write(sc, 0xB87E, 0x370E); + re_real_ocp_phy_write(sc, 0xB87C, 0x8157); + re_real_ocp_phy_write(sc, 0xB87E, 0x770E); + re_real_ocp_phy_write(sc, 0xB87C, 0x8169); + re_real_ocp_phy_write(sc, 0xB87E, 0x0D0A); + re_real_ocp_phy_write(sc, 0xB87C, 0x817B); + re_real_ocp_phy_write(sc, 0xB87E, 0x1D0A); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8217); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x5000 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x821A); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x5000 + ); + + re_real_ocp_phy_write(sc, 0xA436, 0x80DA); + re_real_ocp_phy_write(sc, 0xA438, 0x0403); + re_real_ocp_phy_write(sc, 0xA436, 0x80DC); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x1000 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x80B3); + re_real_ocp_phy_write(sc, 0xA438, 0x0384); + re_real_ocp_phy_write(sc, 0xA436, 0x80B7); + re_real_ocp_phy_write(sc, 0xA438, 0x2007); + re_real_ocp_phy_write(sc, 0xA436, 0x80BA); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x6C00 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x80B5); + re_real_ocp_phy_write(sc, 0xA438, 0xF009); + re_real_ocp_phy_write(sc, 0xA436, 0x80BD); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x9F00 + ); + + re_real_ocp_phy_write(sc, 0xA436, 0x80C7); + re_real_ocp_phy_write(sc, 0xA438, 0xf083); + re_real_ocp_phy_write(sc, 0xA436, 0x80DD); + re_real_ocp_phy_write(sc, 0xA438, 0x03f0); + re_real_ocp_phy_write(sc, 0xA436, 0x80DF); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x1000 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x80CB); + re_real_ocp_phy_write(sc, 0xA438, 0x2007); + re_real_ocp_phy_write(sc, 0xA436, 0x80CE); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x6C00 + ); + re_real_ocp_phy_write(sc, 0xA436, 0x80C9); + re_real_ocp_phy_write(sc, 0xA438, 0x8009); + re_real_ocp_phy_write(sc, 0xA436, 0x80D1); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x8000 + ); + + re_real_ocp_phy_write(sc, 0xA436, 0x80A3); + re_real_ocp_phy_write(sc, 0xA438, 0x200A); + re_real_ocp_phy_write(sc, 0xA436, 0x80A5); + re_real_ocp_phy_write(sc, 0xA438, 0xF0AD); + re_real_ocp_phy_write(sc, 0xA436, 0x809F); + re_real_ocp_phy_write(sc, 0xA438, 0x6073); + re_real_ocp_phy_write(sc, 0xA436, 0x80A1); + re_real_ocp_phy_write(sc, 0xA438, 0x000B); + re_real_ocp_phy_write(sc, 0xA436, 0x80A9); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xC000 + ); + + re_set_phy_mcu_patch_request(sc); + + re_clear_eth_ocp_phy_bit(sc, 0xB896, BIT_0); + re_clear_eth_ocp_phy_bit(sc, 0xB892, 0xFF00); + + re_real_ocp_phy_write(sc, 0xB88E, 0xC23E); + re_real_ocp_phy_write(sc, 0xB890, 0x0000); + re_real_ocp_phy_write(sc, 0xB88E, 0xC240); + re_real_ocp_phy_write(sc, 0xB890, 0x0103); + re_real_ocp_phy_write(sc, 0xB88E, 0xC242); + re_real_ocp_phy_write(sc, 0xB890, 0x0507); + re_real_ocp_phy_write(sc, 0xB88E, 0xC244); + re_real_ocp_phy_write(sc, 0xB890, 0x090B); + re_real_ocp_phy_write(sc, 0xB88E, 0xC246); + re_real_ocp_phy_write(sc, 0xB890, 0x0C0E); + re_real_ocp_phy_write(sc, 0xB88E, 0xC248); + re_real_ocp_phy_write(sc, 0xB890, 0x1012); + re_real_ocp_phy_write(sc, 0xB88E, 0xC24A); + re_real_ocp_phy_write(sc, 0xB890, 0x1416); + + re_set_eth_ocp_phy_bit(sc, 0xB896, BIT_0); + + re_clear_phy_mcu_patch_request(sc); + + + re_set_eth_ocp_phy_bit(sc, 0xA86A, BIT_0); + re_set_eth_ocp_phy_bit(sc, 0xA6F0, BIT_0); + + + re_real_ocp_phy_write(sc, 0xBFA0, 0xD70D); + re_real_ocp_phy_write(sc, 0xBFA2, 0x4100); + re_real_ocp_phy_write(sc, 0xBFA4, 0xE868); + re_real_ocp_phy_write(sc, 0xBFA6, 0xDC59); + re_real_ocp_phy_write(sc, 0xB54C, 0x3C18); + re_clear_eth_ocp_phy_bit(sc, 0xBFA4, BIT_5); + re_real_ocp_phy_write(sc, 0xA436, 0x817D); + re_set_eth_ocp_phy_bit(sc, 0xA438, BIT_12); + + + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_83) { + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + + re_clear_set_eth_ocp_phy_bit(sc, + 0xAC46, + 0x00F0, + 0x0090 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD30, + 0x0003, + 0x0001 + ); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x80F5); + re_real_ocp_phy_write(sc, 0xB87E, 0x760E); + re_real_ocp_phy_write(sc, 0xB87C, 0x8107); + re_real_ocp_phy_write(sc, 0xB87E, 0x360E); + re_real_ocp_phy_write(sc, 0xB87C, 0x8551); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + BIT_15 | BIT_14 | BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_9 | BIT_8, + BIT_11 + ); + + re_clear_set_eth_ocp_phy_bit(sc, + 0xbf00, + 0xE000, + 0xA000 + ); + re_clear_set_eth_ocp_phy_bit(sc, + 0xbf46, + 0x0F00, + 0x0300 + ); + re_real_ocp_phy_write(sc, 0xa436, 0x8044); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + re_real_ocp_phy_write(sc, 0xa436, 0x804A); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + re_real_ocp_phy_write(sc, 0xa436, 0x8050); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + re_real_ocp_phy_write(sc, 0xa436, 0x8056); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + re_real_ocp_phy_write(sc, 0xa436, 0x805C); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + re_real_ocp_phy_write(sc, 0xa436, 0x8062); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + re_real_ocp_phy_write(sc, 0xa436, 0x8068); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + re_real_ocp_phy_write(sc, 0xa436, 0x806E); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + re_real_ocp_phy_write(sc, 0xa436, 0x8074); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + re_real_ocp_phy_write(sc, 0xa436, 0x807A); + re_real_ocp_phy_write(sc, 0xa438, 0x2417); + + + re_set_eth_ocp_phy_bit(sc, 0xA4CA, BIT_6); + re_clear_eth_ocp_phy_bit(sc, 0xA4CA, BIT_14 | BIT_13); + + + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF84, + BIT_15 | BIT_14 | BIT_13, + BIT_15 | BIT_13 + ); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8170); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + BIT_13 | BIT_10 | BIT_9 | BIT_8, + BIT_15 | BIT_14 | BIT_12 | BIT_11 + ); + + + re_set_eth_ocp_phy_bit(sc, 0xA424, BIT_3); + + + /* + re_real_ocp_phy_write(sc, 0xBFA0, 0xD70D); + re_real_ocp_phy_write(sc, 0xBFA2, 0x4100); + re_real_ocp_phy_write(sc, 0xBFA4, 0xE868); + re_real_ocp_phy_write(sc, 0xBFA6, 0xDC59); + re_real_ocp_phy_write(sc, 0xB54C, 0x3C18); + re_clear_eth_ocp_phy_bit(sc, 0xBFA4, BIT_5); + re_real_ocp_phy_write(sc, 0xA436, 0x817D); + re_set_eth_ocp_phy_bit(sc, 0xA438, BIT_12); + */ + + + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_84) { + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); - SetEthPhyOcpBit(sc, 0xA5D4, BIT_5); - ClearEthPhyOcpBit(sc, 0xAD4E, BIT_4); - ClearEthPhyOcpBit(sc, 0xA86A, BIT_0); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA80C, + BIT_14, + BIT_15 | BIT_11 | BIT_10); - SetEthPhyOcpBit(sc, 0xA442, BIT_11); + re_real_ocp_phy_write(sc, 0xA436, 0x8010); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_11); - if (sc->RequirePhyMdiSwapPatch) { - u_int16_t adccal_offset_p0; - u_int16_t adccal_offset_p1; - u_int16_t adccal_offset_p2; - u_int16_t adccal_offset_p3; - u_int16_t rg_lpf_cap_xg_p0; - u_int16_t rg_lpf_cap_xg_p1; - u_int16_t rg_lpf_cap_xg_p2; - u_int16_t rg_lpf_cap_xg_p3; - u_int16_t rg_lpf_cap_p0; - u_int16_t rg_lpf_cap_p1; - u_int16_t rg_lpf_cap_p2; - u_int16_t rg_lpf_cap_p3; + re_real_ocp_phy_write(sc, 0xB87C, 0x8088); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x9000); + re_real_ocp_phy_write(sc, 0xB87C, 0x808F); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x9000); - ClearAndSetEthPhyOcpBit(sc, - 0xD068, - 0x0007, - 0x0001 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xD068, - 0x0018, - 0x0000 - ); - adccal_offset_p0 = MP_RealReadPhyOcpRegWord(sc, 0xD06A); - adccal_offset_p0 &= 0x07FF; - ClearAndSetEthPhyOcpBit(sc, - 0xD068, - 0x0018, - 0x0008 - ); - adccal_offset_p1 = MP_RealReadPhyOcpRegWord(sc, 0xD06A); - adccal_offset_p1 &= 0x07FF; - ClearAndSetEthPhyOcpBit(sc, - 0xD068, - 0x0018, - 0x0010 - ); - adccal_offset_p2 = MP_RealReadPhyOcpRegWord(sc, 0xD06A); - adccal_offset_p2 &= 0x07FF; - ClearAndSetEthPhyOcpBit(sc, - 0xD068, - 0x0018, - 0x0018 - ); - adccal_offset_p3 = MP_RealReadPhyOcpRegWord(sc, 0xD06A); - adccal_offset_p3 &= 0x07FF; - - - ClearAndSetEthPhyOcpBit(sc, - 0xD068, - 0x0018, - 0x0000 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xD06A, - 0x07FF, - adccal_offset_p3 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xD068, - 0x0018, - 0x0008 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xD06A, - 0x07FF, - adccal_offset_p2 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xD068, - 0x0018, - 0x0010 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xD06A, - 0x07FF, - adccal_offset_p1 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xD068, - 0x0018, - 0x0018 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xD06A, - 0x07FF, - adccal_offset_p0 - ); - - rg_lpf_cap_xg_p0 = MP_RealReadPhyOcpRegWord(sc, 0xBD5A); - rg_lpf_cap_xg_p0 &= 0x001F; - rg_lpf_cap_xg_p1 = MP_RealReadPhyOcpRegWord(sc, 0xBD5A); - rg_lpf_cap_xg_p1 &= 0x1F00; - rg_lpf_cap_xg_p2 = MP_RealReadPhyOcpRegWord(sc, 0xBD5C); - rg_lpf_cap_xg_p2 &= 0x001F; - rg_lpf_cap_xg_p3 = MP_RealReadPhyOcpRegWord(sc, 0xBD5C); - rg_lpf_cap_xg_p3 &= 0x1F00; - rg_lpf_cap_p0 = MP_RealReadPhyOcpRegWord(sc, 0xBC18); - rg_lpf_cap_p0 &= 0x001F; - rg_lpf_cap_p1 = MP_RealReadPhyOcpRegWord(sc, 0xBC18); - rg_lpf_cap_p1 &= 0x1F00; - rg_lpf_cap_p2 = MP_RealReadPhyOcpRegWord(sc, 0xBC1A); - rg_lpf_cap_p2 &= 0x001F; - rg_lpf_cap_p3 = MP_RealReadPhyOcpRegWord(sc, 0xBC1A); - rg_lpf_cap_p3 &= 0x1F00; - - ClearAndSetEthPhyOcpBit(sc, - 0xBD5A, - 0x001F, - rg_lpf_cap_xg_p3 >> 8 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xBD5A, - 0x1F00, - rg_lpf_cap_xg_p2 << 8 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xBD5C, - 0x001F, - rg_lpf_cap_xg_p1 >> 8 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xBD5C, - 0x1F00, - rg_lpf_cap_xg_p0 << 8 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xBC18, - 0x001F, - rg_lpf_cap_p3 >> 8 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xBC18, - 0x1F00, - rg_lpf_cap_p2 << 8 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xBC1A, - 0x001F, - rg_lpf_cap_p1 >> 8 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xBC1A, - 0x1F00, - rg_lpf_cap_p0 << 8 - ); - } - - - SetEthPhyOcpBit(sc, 0xA424, BIT_3); + re_real_ocp_phy_write(sc, 0xA436, 0x8174); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + BIT_13, + BIT_12 | BIT_11); - if (phy_power_saving == 1) { - SetEthPhyOcpBit(sc, 0xA430, BIT_2); - } - else { - ClearEthPhyOcpBit(sc, 0xA430, BIT_2); - DELAY(20000); - } - } - else if (sc->re_type == MACFG_82) { - SetEthPhyOcpBit(sc, 0xA442, BIT_11); - - - SetEthPhyOcpBit(sc, 0xBC08, (BIT_3 | BIT_2)); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8FFF); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x0400 - ); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8560); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x19CC); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8562); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x19CC); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8564); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x19CC); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8566); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x147D); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8568); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x147D); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x856A); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x147D); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FFE); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0907); - ClearAndSetEthPhyOcpBit(sc, - 0xACDA, - 0xFF00, - 0xFF00 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xACDE, - 0xF000, - 0xF000 - ); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x80D6); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x2801); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x80F2); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x2801); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x80F4); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x6077); - MP_RealWritePhyOcpRegWord(sc, 0xB506, 0x01E7); - MP_RealWritePhyOcpRegWord(sc, 0xAC8C, 0x0FFC); - MP_RealWritePhyOcpRegWord(sc, 0xAC46, 0xB7B4); - MP_RealWritePhyOcpRegWord(sc, 0xAC50, 0x0FBC); - MP_RealWritePhyOcpRegWord(sc, 0xAC3C, 0x9240); - MP_RealWritePhyOcpRegWord(sc, 0xAC4E, 0x0DB4); - MP_RealWritePhyOcpRegWord(sc, 0xACC6, 0x0707); - MP_RealWritePhyOcpRegWord(sc, 0xACC8, 0xA0D3); - MP_RealWritePhyOcpRegWord(sc, 0xAD08, 0x0007); - - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8013); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0700); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FB9); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x2801); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FBA); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0100); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FBC); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x1900); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FBE); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0xE100); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FC0); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0800); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FC2); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0xE500); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FC4); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0F00); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FC6); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0xF100); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FC8); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0400); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FCa); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0xF300); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FCc); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0xFD00); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FCe); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0xFF00); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FD0); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0xFB00); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FD2); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0100); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FD4); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0xF400); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FD6); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0xFF00); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FD8); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0xF600); - - - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x813D); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x390E); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x814F); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x790E); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x80B0); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0F31); - SetEthPhyOcpBit(sc, 0xBF4C, BIT_1); - SetEthPhyOcpBit(sc, 0xBCCA, (BIT_9 | BIT_8)); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8141); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x320E); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8153); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x720E); - ClearEthPhyOcpBit(sc, 0xA432, BIT_6); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8529); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x050E); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x816C); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xC4A0); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8170); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xC4A0); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8174); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x04A0); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8178); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x04A0); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x817C); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0719); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8FF4); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0400); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8FF1); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0404); - MP_RealWritePhyOcpRegWord(sc, 0xBF4A, 0x001B); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8033); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x7C13); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8037); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x7C13); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x803B); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0xFC32); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x803F); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x7C13); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8043); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x7C13); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8047); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x7C13); - - - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8145); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x370E); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8157); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x770E); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8169); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0D0A); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x817B); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x1D0A); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8217); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x5000 - ); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x821A); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x5000 - ); - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80DA); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0403); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80DC); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x1000 - ); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80B3); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0384); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80B7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x2007); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80BA); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x6C00 - ); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80B5); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xF009); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80BD); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x9F00 - ); - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80C7); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xf083); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80DD); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x03f0); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80DF); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x1000 - ); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80CB); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x2007); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80CE); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x6C00 - ); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80C9); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x8009); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80D1); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x8000 - ); - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80A3); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x200A); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80A5); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0xF0AD); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x809F); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x6073); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80A1); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x000B); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80A9); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0xC000 - ); - re_set_phy_mcu_patch_request(sc); + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_85) { + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); - ClearEthPhyOcpBit(sc, 0xB896, BIT_0); - ClearEthPhyOcpBit(sc, 0xB892, 0xFF00); - - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC23E); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC240); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x0103); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC242); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x0507); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC244); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x090B); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC246); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x0C0E); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC248); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x1012); - MP_RealWritePhyOcpRegWord(sc, 0xB88E, 0xC24A); - MP_RealWritePhyOcpRegWord(sc, 0xB890, 0x1416); - - SetEthPhyOcpBit(sc, 0xB896, BIT_0); - re_clear_phy_mcu_patch_request(sc); + re_real_ocp_phy_write(sc, 0xA436, 0x8010); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_11); - SetEthPhyOcpBit(sc, 0xA86A, BIT_0); - SetEthPhyOcpBit(sc, 0xA6F0, BIT_0); + re_real_ocp_phy_write(sc, 0xB87C, 0x8088); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x9000); + re_real_ocp_phy_write(sc, 0xB87C, 0x808F); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x9000); - MP_RealWritePhyOcpRegWord(sc, 0xBFA0, 0xD70D); - MP_RealWritePhyOcpRegWord(sc, 0xBFA2, 0x4100); - MP_RealWritePhyOcpRegWord(sc, 0xBFA4, 0xE868); - MP_RealWritePhyOcpRegWord(sc, 0xBFA6, 0xDC59); - MP_RealWritePhyOcpRegWord(sc, 0xB54C, 0x3C18); - ClearEthPhyOcpBit(sc, 0xBFA4, BIT_5); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x817D); - SetEthPhyOcpBit(sc, 0xA438, BIT_12); + re_real_ocp_phy_write(sc, 0xA436, 0x8174); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + BIT_13, + BIT_12 | BIT_11); - if (phy_power_saving == 1) { - SetEthPhyOcpBit(sc, 0xA430, BIT_2); - } - else { - ClearEthPhyOcpBit(sc, 0xA430, BIT_2); - DELAY(20000); - } - } - else if (sc->re_type == MACFG_83) { - SetEthPhyOcpBit(sc, 0xA442, BIT_11); - - - ClearAndSetEthPhyOcpBit(sc, - 0xAC46, - 0x00F0, - 0x0090 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xAD30, - 0x0003, - 0x0001 - ); - - - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x80F5); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x760E); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8107); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x360E); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8551); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - BIT_15 | BIT_14 | BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_9 | BIT_8, - BIT_11 - ); - - ClearAndSetEthPhyOcpBit(sc, - 0xbf00, - 0xE000, - 0xA000 - ); - ClearAndSetEthPhyOcpBit(sc, - 0xbf46, - 0x0F00, - 0x0300 - ); - MP_RealWritePhyOcpRegWord(sc, 0xa436, 0x8044); - MP_RealWritePhyOcpRegWord(sc, 0xa438, 0x2417); - MP_RealWritePhyOcpRegWord(sc, 0xa436, 0x804A); - MP_RealWritePhyOcpRegWord(sc, 0xa438, 0x2417); - MP_RealWritePhyOcpRegWord(sc, 0xa436, 0x8050); - MP_RealWritePhyOcpRegWord(sc, 0xa438, 0x2417); - MP_RealWritePhyOcpRegWord(sc, 0xa436, 0x8056); - MP_RealWritePhyOcpRegWord(sc, 0xa438, 0x2417); - MP_RealWritePhyOcpRegWord(sc, 0xa436, 0x805C); - MP_RealWritePhyOcpRegWord(sc, 0xa438, 0x2417); - MP_RealWritePhyOcpRegWord(sc, 0xa436, 0x8062); - MP_RealWritePhyOcpRegWord(sc, 0xa438, 0x2417); - MP_RealWritePhyOcpRegWord(sc, 0xa436, 0x8068); - MP_RealWritePhyOcpRegWord(sc, 0xa438, 0x2417); - MP_RealWritePhyOcpRegWord(sc, 0xa436, 0x806E); - MP_RealWritePhyOcpRegWord(sc, 0xa438, 0x2417); - MP_RealWritePhyOcpRegWord(sc, 0xa436, 0x8074); - MP_RealWritePhyOcpRegWord(sc, 0xa438, 0x2417); - MP_RealWritePhyOcpRegWord(sc, 0xa436, 0x807A); - MP_RealWritePhyOcpRegWord(sc, 0xa438, 0x2417); - - - SetEthPhyOcpBit(sc, 0xA4CA, BIT_6); - ClearEthPhyOcpBit(sc, 0xA4CA, BIT_14 | BIT_13); - - - ClearAndSetEthPhyOcpBit(sc, - 0xBF84, - BIT_15 | BIT_14 | BIT_13, - BIT_15 | BIT_13 - ); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8170); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - BIT_13 | BIT_10 | BIT_9 | BIT_8, - BIT_15 | BIT_14 | BIT_12 | BIT_11 - ); - - - SetEthPhyOcpBit(sc, 0xA424, BIT_3); + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_86) { + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + re_set_phy_mcu_patch_request(sc); + + re_set_eth_ocp_phy_bit(sc, 0xBF96, BIT_15); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF94, + 0x0007, + 0x0005); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF8E, + 0x3C00, + 0x2800); + + re_clear_set_eth_ocp_phy_bit(sc, + 0xBCD8, + 0xC000, + 0x4000); + re_set_eth_ocp_phy_bit(sc, 0xBCD8, BIT_15 | BIT_14); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBCD8, + 0xC000, + 0x4000); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBC80, + 0x001F, + 0x0004); + re_set_eth_ocp_phy_bit(sc, 0xBC82, BIT_15 | BIT_14 | BIT_13); + re_set_eth_ocp_phy_bit(sc, 0xBC82, BIT_12 | BIT_11 | BIT_10); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBC80, + 0x001F, + 0x0005); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBC82, + 0x00E0, + 0x0040); + re_set_eth_ocp_phy_bit(sc, 0xBC82, BIT_4 | BIT_3 | BIT_2); + re_clear_eth_ocp_phy_bit(sc, 0xBCD8, BIT_15 | BIT_14); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBCD8, + 0xC000, + 0x8000); + re_clear_eth_ocp_phy_bit(sc, 0xBCD8, BIT_15 | BIT_14); + + re_clear_phy_mcu_patch_request(sc); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x832C); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0500); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB106, + 0x0700, + 0x0100); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB206, + 0x0700, + 0x0200); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB306, + 0x0700, + 0x0300); + re_real_ocp_phy_write(sc, 0xB87C, 0x80CB); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0300); + re_real_ocp_phy_write(sc, 0xBCF4, 0x0000); + re_real_ocp_phy_write(sc, 0xBCF6, 0x0000); + re_real_ocp_phy_write(sc, 0xBC12, 0x0000); + re_real_ocp_phy_write(sc, 0xB87C, 0x844d); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0200); + if (HW_HAS_WRITE_PHY_MCU_RAM_CODE(sc)) { + re_real_ocp_phy_write(sc, 0xB87C, 0x8feb); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8fe9); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0600); + } - /* - MP_RealWritePhyOcpRegWord(sc, 0xBFA0, 0xD70D); - MP_RealWritePhyOcpRegWord(sc, 0xBFA2, 0x4100); - MP_RealWritePhyOcpRegWord(sc, 0xBFA4, 0xE868); - MP_RealWritePhyOcpRegWord(sc, 0xBFA6, 0xDC59); - MP_RealWritePhyOcpRegWord(sc, 0xB54C, 0x3C18); - ClearEthPhyOcpBit(sc, 0xBFA4, BIT_5); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x817D); - SetEthPhyOcpBit(sc, 0xA438, BIT_12); - */ + re_clear_eth_ocp_phy_bit(sc, 0xAD40, BIT_5 | BIT_4); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD66, + 0x000F, + 0x0007); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD68, + 0xF000, + 0x8000); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD68, + 0x0F00, + 0x0500); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD68, + 0x000F, + 0x0002); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAD6A, + 0xF000, + 0x7000); + re_real_ocp_phy_write(sc, 0xAC50, 0x01E8); + + + re_real_ocp_phy_write(sc, 0xA436, 0x81FA); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x5400); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA864, + 0x00F0, + 0x00C0); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA42C, + 0x00FF, + 0x0002); + re_real_ocp_phy_write(sc, 0xA436, 0x80E1); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x0F00); + re_real_ocp_phy_write(sc, 0xA436, 0x80DE); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xF000, + 0x0700); + re_set_eth_ocp_phy_bit(sc, 0xA846, BIT_7); + + re_real_ocp_phy_write(sc, 0xA436, 0x80BA); + re_real_ocp_phy_write(sc, 0xA438, 0x8A04); + re_real_ocp_phy_write(sc, 0xA436, 0x80BD); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xCA00); + re_real_ocp_phy_write(sc, 0xA436, 0x80B7); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xB300); + + re_real_ocp_phy_write(sc, 0xA436, 0x80CE); + re_real_ocp_phy_write(sc, 0xA438, 0x8A04); + re_real_ocp_phy_write(sc, 0xA436, 0x80D1); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xCA00); + re_real_ocp_phy_write(sc, 0xA436, 0x80CB); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xBB00); + + re_real_ocp_phy_write(sc, 0xA436, 0x80A6); + re_real_ocp_phy_write(sc, 0xA438, 0x4909); + re_real_ocp_phy_write(sc, 0xA436, 0x80A8); + re_real_ocp_phy_write(sc, 0xA438, 0x05B8); + + re_real_ocp_phy_write(sc, 0xA436, 0x8200); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x5800); + + re_real_ocp_phy_write(sc, 0xA436, 0x8FF1); + re_real_ocp_phy_write(sc, 0xA438, 0x7078); + re_real_ocp_phy_write(sc, 0xA436, 0x8FF3); + re_real_ocp_phy_write(sc, 0xA438, 0x5D78); + re_real_ocp_phy_write(sc, 0xA436, 0x8FF5); + re_real_ocp_phy_write(sc, 0xA438, 0x7862); + re_real_ocp_phy_write(sc, 0xA436, 0x8FF7); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x1400); + + + if (HW_HAS_WRITE_PHY_MCU_RAM_CODE(sc)) { + re_real_ocp_phy_write(sc, 0xA436, 0x814C); + re_real_ocp_phy_write(sc, 0xA438, 0x8455); + re_real_ocp_phy_write(sc, 0xA436, 0x814E); + re_real_ocp_phy_write(sc, 0xA438, 0x84A6); + re_real_ocp_phy_write(sc, 0xA436, 0x8163); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x0600); + re_real_ocp_phy_write(sc, 0xA436, 0x816A); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x0500); + re_real_ocp_phy_write(sc, 0xA436, 0x8171); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x1f00); + } - if (phy_power_saving == 1) { - SetEthPhyOcpBit(sc, 0xA430, BIT_2); - } - else { - ClearEthPhyOcpBit(sc, 0xA430, BIT_2); - DELAY(20000); - } - } - else if (sc->re_type == MACFG_90) { - SetEthPhyOcpBit(sc, 0xA442, BIT_11); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBC3A, + 0x000F, + 0x0006); + re_real_ocp_phy_write(sc, 0xA436, 0x8064); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x8067); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x806A); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x806D); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x8070); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x8073); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x8076); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x8079); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x807C); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x807F); + re_clear_eth_ocp_phy_bit(sc, 0xA438, BIT_10 | BIT_9 | BIT_8); + + + re_clear_set_eth_ocp_phy_bit(sc, + 0xBFA0, + 0xFF70, + 0x5500); + re_real_ocp_phy_write(sc, 0xBFA2, 0x9D00); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8165); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0x0700, + 0x0200); + + + if (HW_HAS_WRITE_PHY_MCU_RAM_CODE(sc)) { + re_real_ocp_phy_write(sc, 0xA436, 0x8019); + re_set_eth_ocp_phy_bit(sc, 0xA438, BIT_8); + re_real_ocp_phy_write(sc, 0xA436, 0x8FE3); + re_real_ocp_phy_write(sc, 0xA438, 0x0005); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x00ED); + re_real_ocp_phy_write(sc, 0xA438, 0x0502); + re_real_ocp_phy_write(sc, 0xA438, 0x0B00); + re_real_ocp_phy_write(sc, 0xA438, 0xD401); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x2900); + } - if (phy_power_saving == 1) { - SetEthPhyOcpBit(sc, 0xA430, BIT_2); - } - else { - ClearEthPhyOcpBit(sc, 0xA430, BIT_2); - DELAY(20000); - } - } - else if (sc->re_type == MACFG_91) { - SetEthPhyOcpBit(sc, 0xA442, BIT_11); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80BF); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0xED00); - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80CD); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x1000); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80D1); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0xC800); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80D4); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0xC800); - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80E1); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x10CC); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x80E5); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x4F0C); - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8387); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x4700); - ClearAndSetEthPhyOcpBit(sc, - 0xA80C, - BIT_7 | BIT_6, - BIT_7); - - - ClearEthPhyOcpBit(sc, 0xAC90, BIT_4); - ClearEthPhyOcpBit(sc, 0xAD2C, BIT_15); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8321); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x1100); - SetEthPhyOcpBit(sc, 0xACF8, (BIT_3 | BIT_2)); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8183); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x5900); - SetEthPhyOcpBit(sc, 0xAD94, BIT_5); - ClearEthPhyOcpBit(sc, 0xA654, BIT_11); - SetEthPhyOcpBit(sc, 0xB648, BIT_14); - - - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x839E); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x2F00); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x83F2); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0800); - SetEthPhyOcpBit(sc, 0xADA0, BIT_1); - - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x80F3); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x9900); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8126); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0xC100); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x893A); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x8080); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8647); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0xE600); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x862C); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x1200); - - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x864A); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0xE600); - - - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x80A0); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0xBCBC); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x805E); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0xBCBC); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8056); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x3077); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8058); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x5A00); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8098); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x3077); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x809A); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x5A00); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8052); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x3733); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8094); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x3733); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x807F); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x7C75); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x803D); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x7C75); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8036); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x3000); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8078); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x3000); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8031); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x3300); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8073); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x3300); - - - ClearAndSetEthPhyOcpBit(sc, - 0xAE06, - 0xFC00, - 0x7C00); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x89D1); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0004); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8FBD); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x0A00); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8FBE); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0D09); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x89CD); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0F0F); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x89CF); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0F0F); - - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x83A4); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x6600); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x83A6); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x6601); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x83C0); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x6600); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x83C2); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x6601); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8414); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x6600); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8416); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x6601); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x83F8); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x6600); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x83FA); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x6601); + re_real_ocp_phy_write(sc, 0xA436, 0x8018); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x1700); - re_set_phy_mcu_patch_request(sc); - ClearAndSetEthPhyOcpBit(sc, - 0xBD96, - 0x1F00, - 0x1000); - ClearAndSetEthPhyOcpBit(sc, - 0xBF1C, - 0x0007, - 0x0007); - ClearEthPhyOcpBit(sc, 0xBFBE, BIT_15); - ClearAndSetEthPhyOcpBit(sc, - 0xBF40, - 0x0380, - 0x0280); - ClearAndSetEthPhyOcpBit(sc, - 0xBF90, - BIT_7, - (BIT_6 | BIT_5)); - ClearAndSetEthPhyOcpBit(sc, - 0xBF90, - BIT_4, - BIT_3 | BIT_2); + if (HW_HAS_WRITE_PHY_MCU_RAM_CODE(sc)) { + re_real_ocp_phy_write(sc, 0xA436, 0x815B); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x1700); + } + - re_clear_phy_mcu_patch_request(sc); + re_clear_eth_ocp_phy_bit(sc, 0xA4E0, BIT_15); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x843B); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x2000); - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x843D); - ClearAndSetEthPhyOcpBit(sc, - 0xA438, - 0xFF00, - 0x2000); - - - ClearEthPhyOcpBit(sc, 0xB516, 0x7F); - - - ClearEthPhyOcpBit(sc, 0xBF80, (BIT_5 | BIT_4)); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8188); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0044); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00A8); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00D6); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00EC); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00F6); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00FC); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00FE); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00FE); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x00BC); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0058); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x002A); - - - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8015); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0800); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FFD); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FFF); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x7F00); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FFB); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0100); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FE9); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0002); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FEF); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x00A5); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FF1); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0106); - - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FE1); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0102); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FE3); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0400); - - - SetEthPhyOcpBit(sc, 0xA654, BIT_11); - ClearEthPhyOcpBit(sc, 0XA65A, (BIT_1 | BIT_0)); - - MP_RealWritePhyOcpRegWord(sc, 0xAC3A, 0x5851); - ClearAndSetEthPhyOcpBit(sc, - 0XAC3C, - BIT_15 | BIT_14 | BIT_12, - BIT_13); - ClearAndSetEthPhyOcpBit(sc, - 0xAC42, - BIT_9, - BIT_8 | BIT_7 | BIT_6); - ClearEthPhyOcpBit(sc, 0xAC3E, BIT_15 | BIT_14 | BIT_13); - ClearEthPhyOcpBit(sc, 0xAC42, BIT_5 | BIT_4 | BIT_3); - ClearAndSetEthPhyOcpBit(sc, - 0xAC42, - BIT_1, - BIT_2 | BIT_0); - - MP_RealWritePhyOcpRegWord(sc, 0xAC1A, 0x00DB); - MP_RealWritePhyOcpRegWord(sc, 0xADE4, 0x01B5); - ClearEthPhyOcpBit(sc, 0xAD9C, BIT_11 | BIT_10); - - - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x814B); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x1100); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x814D); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x1100); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x814F); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0B00); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8142); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0100); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8144); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0100); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8150); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0100); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8118); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0700); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x811A); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0700); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x811C); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0500); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x810F); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0100); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8111); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0100); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x811D); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0100); - - SetEthPhyOcpBit(sc, 0xAC36, BIT_12); - ClearEthPhyOcpBit(sc, 0xAD1C, BIT_8); - ClearAndSetEthPhyOcpBit(sc, - 0xADE8, - 0xFFC0, - 0x1400); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x864B); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x9D00); - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8F97); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x003F); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x3F02); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x023C); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x3B0A); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x1C00); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - MP_RealWritePhyOcpRegWord(sc, 0xA438, 0x0000); - - - SetEthPhyOcpBit(sc, 0xAD9C, BIT_5); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8122); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0C00); - - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x82C8); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03ED); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03FF); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0009); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03FE); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x000B); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0021); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03F7); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03B8); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03E0); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0049); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0049); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03E0); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03B8); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03F7); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0021); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x000B); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03FE); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0009); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03FF); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03ED); - - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x80EF); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0C00); - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x82A0); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x000E); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03FE); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03ED); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0006); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x001A); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03F1); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03D8); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0023); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0054); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0322); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x00DD); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03AB); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03DC); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0027); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x000E); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03E5); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03F9); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0012); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x0001); - MP_RealWritePhyOcpRegWord(sc, 0xB87E, 0x03F1); - - - MP_RealWritePhyOcpRegWord(sc, 0xA436, 0x8018); - SetEthPhyOcpBit(sc, 0xA438, BIT_13); - - - MP_RealWritePhyOcpRegWord(sc, 0xB87C, 0x8FE4); - ClearAndSetEthPhyOcpBit(sc, - 0xB87E, - 0xFF00, - 0x0000); + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_12 | BIT_0); + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_7); - if (phy_power_saving == 1) { - SetEthPhyOcpBit(sc, 0xA430, BIT_2); - } - else { - ClearEthPhyOcpBit(sc, 0xA430, BIT_2); - DELAY(20000); - } - } - else if (sc->re_type == MACFG_92) { - SetEthPhyOcpBit(sc, 0xA442, BIT_11); + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_87) { + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + - if (phy_power_saving == 1) { - SetEthPhyOcpBit(sc, 0xA430, BIT_2); - } - else { - ClearEthPhyOcpBit(sc, 0xA430, BIT_2); - DELAY(20000); + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_12 | BIT_0); + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_7); + + + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_90) { + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_91) { + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + + re_real_ocp_phy_write(sc, 0xA436, 0x80BF); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xED00); + + re_real_ocp_phy_write(sc, 0xA436, 0x80CD); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x1000); + re_real_ocp_phy_write(sc, 0xA436, 0x80D1); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xC800); + re_real_ocp_phy_write(sc, 0xA436, 0x80D4); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0xC800); + + re_real_ocp_phy_write(sc, 0xA436, 0x80E1); + re_real_ocp_phy_write(sc, 0xA438, 0x10CC); + re_real_ocp_phy_write(sc, 0xA436, 0x80E5); + re_real_ocp_phy_write(sc, 0xA438, 0x4F0C); + + re_real_ocp_phy_write(sc, 0xA436, 0x8387); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x4700); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA80C, + BIT_7 | BIT_6, + BIT_7); + + + re_clear_eth_ocp_phy_bit(sc, 0xAC90, BIT_4); + re_clear_eth_ocp_phy_bit(sc, 0xAD2C, BIT_15); + re_real_ocp_phy_write(sc, 0xB87C, 0x8321); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x1100); + re_set_eth_ocp_phy_bit(sc, 0xACF8, (BIT_3 | BIT_2)); + re_real_ocp_phy_write(sc, 0xA436, 0x8183); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x5900); + re_set_eth_ocp_phy_bit(sc, 0xAD94, BIT_5); + re_clear_eth_ocp_phy_bit(sc, 0xA654, BIT_11); + re_set_eth_ocp_phy_bit(sc, 0xB648, BIT_14); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x839E); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x2F00); + re_real_ocp_phy_write(sc, 0xB87C, 0x83F2); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0800); + re_set_eth_ocp_phy_bit(sc, 0xADA0, BIT_1); + + re_real_ocp_phy_write(sc, 0xB87C, 0x80F3); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x9900); + re_real_ocp_phy_write(sc, 0xB87C, 0x8126); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0xC100); + re_real_ocp_phy_write(sc, 0xB87C, 0x893A); + re_real_ocp_phy_write(sc, 0xB87E, 0x8080); + re_real_ocp_phy_write(sc, 0xB87C, 0x8647); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0xE600); + re_real_ocp_phy_write(sc, 0xB87C, 0x862C); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x1200); + + re_real_ocp_phy_write(sc, 0xB87C, 0x864A); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0xE600); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x80A0); + re_real_ocp_phy_write(sc, 0xB87E, 0xBCBC); + re_real_ocp_phy_write(sc, 0xB87C, 0x805E); + re_real_ocp_phy_write(sc, 0xB87E, 0xBCBC); + re_real_ocp_phy_write(sc, 0xB87C, 0x8056); + re_real_ocp_phy_write(sc, 0xB87E, 0x3077); + re_real_ocp_phy_write(sc, 0xB87C, 0x8058); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x5A00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8098); + re_real_ocp_phy_write(sc, 0xB87E, 0x3077); + re_real_ocp_phy_write(sc, 0xB87C, 0x809A); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x5A00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8052); + re_real_ocp_phy_write(sc, 0xB87E, 0x3733); + re_real_ocp_phy_write(sc, 0xB87C, 0x8094); + re_real_ocp_phy_write(sc, 0xB87E, 0x3733); + re_real_ocp_phy_write(sc, 0xB87C, 0x807F); + re_real_ocp_phy_write(sc, 0xB87E, 0x7C75); + re_real_ocp_phy_write(sc, 0xB87C, 0x803D); + re_real_ocp_phy_write(sc, 0xB87E, 0x7C75); + re_real_ocp_phy_write(sc, 0xB87C, 0x8036); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x3000); + re_real_ocp_phy_write(sc, 0xB87C, 0x8078); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x3000); + re_real_ocp_phy_write(sc, 0xB87C, 0x8031); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x3300); + re_real_ocp_phy_write(sc, 0xB87C, 0x8073); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x3300); + + + re_clear_set_eth_ocp_phy_bit(sc, + 0xAE06, + 0xFC00, + 0x7C00); + re_real_ocp_phy_write(sc, 0xB87C, 0x89D1); + re_real_ocp_phy_write(sc, 0xB87E, 0x0004); + re_real_ocp_phy_write(sc, 0xA436, 0x8FBD); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x0A00); + re_real_ocp_phy_write(sc, 0xA436, 0x8FBE); + re_real_ocp_phy_write(sc, 0xA438, 0x0D09); + re_real_ocp_phy_write(sc, 0xB87C, 0x89CD); + re_real_ocp_phy_write(sc, 0xB87E, 0x0F0F); + re_real_ocp_phy_write(sc, 0xB87C, 0x89CF); + re_real_ocp_phy_write(sc, 0xB87E, 0x0F0F); + + re_real_ocp_phy_write(sc, 0xB87C, 0x83A4); + re_real_ocp_phy_write(sc, 0xB87E, 0x6600); + re_real_ocp_phy_write(sc, 0xB87C, 0x83A6); + re_real_ocp_phy_write(sc, 0xB87E, 0x6601); + re_real_ocp_phy_write(sc, 0xB87C, 0x83C0); + re_real_ocp_phy_write(sc, 0xB87E, 0x6600); + re_real_ocp_phy_write(sc, 0xB87C, 0x83C2); + re_real_ocp_phy_write(sc, 0xB87E, 0x6601); + re_real_ocp_phy_write(sc, 0xB87C, 0x8414); + re_real_ocp_phy_write(sc, 0xB87E, 0x6600); + re_real_ocp_phy_write(sc, 0xB87C, 0x8416); + re_real_ocp_phy_write(sc, 0xB87E, 0x6601); + re_real_ocp_phy_write(sc, 0xB87C, 0x83F8); + re_real_ocp_phy_write(sc, 0xB87E, 0x6600); + re_real_ocp_phy_write(sc, 0xB87C, 0x83FA); + re_real_ocp_phy_write(sc, 0xB87E, 0x6601); + + + re_set_phy_mcu_patch_request(sc); + + re_clear_set_eth_ocp_phy_bit(sc, + 0xBD96, + 0x1F00, + 0x1000); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF1C, + 0x0007, + 0x0007); + re_clear_eth_ocp_phy_bit(sc, 0xBFBE, BIT_15); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF40, + 0x0380, + 0x0280); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF90, + BIT_7, + (BIT_6 | BIT_5)); + re_clear_set_eth_ocp_phy_bit(sc, + 0xBF90, + BIT_4, + BIT_3 | BIT_2); + + re_clear_phy_mcu_patch_request(sc); + + + re_real_ocp_phy_write(sc, 0xA436, 0x843B); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x2000); + re_real_ocp_phy_write(sc, 0xA436, 0x843D); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x2000); + + + re_clear_eth_ocp_phy_bit(sc, 0xB516, 0x7F); + + + re_clear_eth_ocp_phy_bit(sc, 0xBF80, (BIT_5 | BIT_4)); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8188); + re_real_ocp_phy_write(sc, 0xA438, 0x0044); + re_real_ocp_phy_write(sc, 0xA438, 0x00A8); + re_real_ocp_phy_write(sc, 0xA438, 0x00D6); + re_real_ocp_phy_write(sc, 0xA438, 0x00EC); + re_real_ocp_phy_write(sc, 0xA438, 0x00F6); + re_real_ocp_phy_write(sc, 0xA438, 0x00FC); + re_real_ocp_phy_write(sc, 0xA438, 0x00FE); + re_real_ocp_phy_write(sc, 0xA438, 0x00FE); + re_real_ocp_phy_write(sc, 0xA438, 0x00BC); + re_real_ocp_phy_write(sc, 0xA438, 0x0058); + re_real_ocp_phy_write(sc, 0xA438, 0x002A); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x8015); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0800); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FFD); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0000); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FFF); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x7F00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FFB); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FE9); + re_real_ocp_phy_write(sc, 0xB87E, 0x0002); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FEF); + re_real_ocp_phy_write(sc, 0xB87E, 0x00A5); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FF1); + re_real_ocp_phy_write(sc, 0xB87E, 0x0106); + + re_real_ocp_phy_write(sc, 0xB87C, 0x8FE1); + re_real_ocp_phy_write(sc, 0xB87E, 0x0102); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FE3); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0400); + + + re_set_eth_ocp_phy_bit(sc, 0xA654, BIT_11); + re_clear_eth_ocp_phy_bit(sc, 0XA65A, (BIT_1 | BIT_0)); + + re_real_ocp_phy_write(sc, 0xAC3A, 0x5851); + re_clear_set_eth_ocp_phy_bit(sc, + 0XAC3C, + BIT_15 | BIT_14 | BIT_12, + BIT_13); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAC42, + BIT_9, + BIT_8 | BIT_7 | BIT_6); + re_clear_eth_ocp_phy_bit(sc, 0xAC3E, BIT_15 | BIT_14 | BIT_13); + re_clear_eth_ocp_phy_bit(sc, 0xAC42, BIT_5 | BIT_4 | BIT_3); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAC42, + BIT_1, + BIT_2 | BIT_0); + + re_real_ocp_phy_write(sc, 0xAC1A, 0x00DB); + re_real_ocp_phy_write(sc, 0xADE4, 0x01B5); + re_clear_eth_ocp_phy_bit(sc, 0xAD9C, BIT_11 | BIT_10); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x814B); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x1100); + re_real_ocp_phy_write(sc, 0xB87C, 0x814D); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x1100); + re_real_ocp_phy_write(sc, 0xB87C, 0x814F); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0B00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8142); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8144); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8150); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8118); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0700); + re_real_ocp_phy_write(sc, 0xB87C, 0x811A); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0700); + re_real_ocp_phy_write(sc, 0xB87C, 0x811C); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0500); + re_real_ocp_phy_write(sc, 0xB87C, 0x810F); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8111); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x811D); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + + re_set_eth_ocp_phy_bit(sc, 0xAC36, BIT_12); + re_clear_eth_ocp_phy_bit(sc, 0xAD1C, BIT_8); + re_clear_set_eth_ocp_phy_bit(sc, + 0xADE8, + 0xFFC0, + 0x1400); + re_real_ocp_phy_write(sc, 0xB87C, 0x864B); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x9D00); + + re_real_ocp_phy_write(sc, 0xA436, 0x8F97); + re_real_ocp_phy_write(sc, 0xA438, 0x003F); + re_real_ocp_phy_write(sc, 0xA438, 0x3F02); + re_real_ocp_phy_write(sc, 0xA438, 0x023C); + re_real_ocp_phy_write(sc, 0xA438, 0x3B0A); + re_real_ocp_phy_write(sc, 0xA438, 0x1C00); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + + + re_set_eth_ocp_phy_bit(sc, 0xAD9C, BIT_5); + re_real_ocp_phy_write(sc, 0xB87C, 0x8122); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0C00); + + re_real_ocp_phy_write(sc, 0xB87C, 0x82C8); + re_real_ocp_phy_write(sc, 0xB87E, 0x03ED); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FF); + re_real_ocp_phy_write(sc, 0xB87E, 0x0009); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FE); + re_real_ocp_phy_write(sc, 0xB87E, 0x000B); + re_real_ocp_phy_write(sc, 0xB87E, 0x0021); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F7); + re_real_ocp_phy_write(sc, 0xB87E, 0x03B8); + re_real_ocp_phy_write(sc, 0xB87E, 0x03E0); + re_real_ocp_phy_write(sc, 0xB87E, 0x0049); + re_real_ocp_phy_write(sc, 0xB87E, 0x0049); + re_real_ocp_phy_write(sc, 0xB87E, 0x03E0); + re_real_ocp_phy_write(sc, 0xB87E, 0x03B8); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F7); + re_real_ocp_phy_write(sc, 0xB87E, 0x0021); + re_real_ocp_phy_write(sc, 0xB87E, 0x000B); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FE); + re_real_ocp_phy_write(sc, 0xB87E, 0x0009); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FF); + re_real_ocp_phy_write(sc, 0xB87E, 0x03ED); + + re_real_ocp_phy_write(sc, 0xB87C, 0x80EF); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0C00); + re_real_ocp_phy_write(sc, 0xB87C, 0x82A0); + re_real_ocp_phy_write(sc, 0xB87E, 0x000E); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FE); + re_real_ocp_phy_write(sc, 0xB87E, 0x03ED); + re_real_ocp_phy_write(sc, 0xB87E, 0x0006); + re_real_ocp_phy_write(sc, 0xB87E, 0x001A); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F1); + re_real_ocp_phy_write(sc, 0xB87E, 0x03D8); + re_real_ocp_phy_write(sc, 0xB87E, 0x0023); + re_real_ocp_phy_write(sc, 0xB87E, 0x0054); + re_real_ocp_phy_write(sc, 0xB87E, 0x0322); + re_real_ocp_phy_write(sc, 0xB87E, 0x00DD); + re_real_ocp_phy_write(sc, 0xB87E, 0x03AB); + re_real_ocp_phy_write(sc, 0xB87E, 0x03DC); + re_real_ocp_phy_write(sc, 0xB87E, 0x0027); + re_real_ocp_phy_write(sc, 0xB87E, 0x000E); + re_real_ocp_phy_write(sc, 0xB87E, 0x03E5); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F9); + re_real_ocp_phy_write(sc, 0xB87E, 0x0012); + re_real_ocp_phy_write(sc, 0xB87E, 0x0001); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F1); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8018); + re_set_eth_ocp_phy_bit(sc, 0xA438, BIT_13); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x8FE4); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0000); + + + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } + } else if (sc->re_type == MACFG_92) { + re_set_eth_ocp_phy_bit(sc, 0xA442, BIT_11); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8183); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x5900); + re_set_eth_ocp_phy_bit(sc, 0xA654, BIT_11); + re_set_eth_ocp_phy_bit(sc, 0xB648, BIT_14); + re_clear_eth_ocp_phy_bit(sc, 0xAD2C, BIT_15); + re_set_eth_ocp_phy_bit(sc, 0xAD94, BIT_5); + re_set_eth_ocp_phy_bit(sc, 0xADA0, BIT_1); + re_clear_set_eth_ocp_phy_bit(sc, + 0xAE06, + BIT_15 | BIT_14 | BIT_13 | BIT_12 | BIT_11 | BIT_10, + BIT_14 | BIT_13 | BIT_12 | BIT_11 | BIT_10); + + re_real_ocp_phy_write(sc, 0xB87C, 0x8647); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0xE600); + re_real_ocp_phy_write(sc, 0xB87C, 0x8036); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x3000); + re_real_ocp_phy_write(sc, 0xB87C, 0x8078); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x3000); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x89E9); + re_clear_eth_ocp_phy_bit(sc, 0xB87E, 0xFF00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FFD); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FFE); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0200); + re_real_ocp_phy_write(sc, 0xB87C, 0x8FFF); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0400); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8018); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x7700); + re_real_ocp_phy_write(sc, 0xA436, 0x8F9C); + re_real_ocp_phy_write(sc, 0xA438, 0x0005); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x00ED); + re_real_ocp_phy_write(sc, 0xA438, 0x0502); + re_real_ocp_phy_write(sc, 0xA438, 0x0B00); + re_real_ocp_phy_write(sc, 0xA438, 0xD401); + re_real_ocp_phy_write(sc, 0xA436, 0x8FA8); + re_clear_set_eth_ocp_phy_bit(sc, + 0xA438, + 0xFF00, + 0x2900); + + + re_real_ocp_phy_write(sc, 0xB87C, 0x814B); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x1100); + re_real_ocp_phy_write(sc, 0xB87C, 0x814D); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x1100); + re_real_ocp_phy_write(sc, 0xB87C, 0x814F); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0B00); + re_real_ocp_phy_write(sc, 0xB87C, 0x8142); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8144); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8150); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + + re_real_ocp_phy_write(sc, 0xB87C, 0x8118); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0700); + re_real_ocp_phy_write(sc, 0xB87C, 0x811A); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0700); + re_real_ocp_phy_write(sc, 0xB87C, 0x811C); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0500); + re_real_ocp_phy_write(sc, 0xB87C, 0x810F); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x8111); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + re_real_ocp_phy_write(sc, 0xB87C, 0x811D); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0100); + + + re_clear_eth_ocp_phy_bit(sc, 0xAD1C, BIT_8); + re_clear_set_eth_ocp_phy_bit(sc, + 0xADE8, + BIT_15 | BIT_14 | BIT_13 | BIT_12 | BIT_11 | BIT_10 | BIT_9 | BIT_8 | BIT_7 | BIT_6, + BIT_12 | BIT_10); + re_real_ocp_phy_write(sc, 0xB87C, 0x864B); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x9D00); + re_real_ocp_phy_write(sc, 0xB87C, 0x862C); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x1200); + re_real_ocp_phy_write(sc, 0xA436, 0x8566); + re_real_ocp_phy_write(sc, 0xA438, 0x003F); + re_real_ocp_phy_write(sc, 0xA438, 0x3F02); + re_real_ocp_phy_write(sc, 0xA438, 0x023C); + re_real_ocp_phy_write(sc, 0xA438, 0x3B0A); + re_real_ocp_phy_write(sc, 0xA438, 0x1C00); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + + + re_set_eth_ocp_phy_bit(sc, 0xAD9C, BIT_5); + + re_real_ocp_phy_write(sc, 0xB87C, 0x8122); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0C00); + re_real_ocp_phy_write(sc, 0xB87C, 0x82C8); + re_real_ocp_phy_write(sc, 0xB87E, 0x03ED); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FF); + re_real_ocp_phy_write(sc, 0xB87E, 0x0009); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FE); + re_real_ocp_phy_write(sc, 0xB87E, 0x000B); + re_real_ocp_phy_write(sc, 0xB87E, 0x0021); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F7); + re_real_ocp_phy_write(sc, 0xB87E, 0x03B8); + re_real_ocp_phy_write(sc, 0xB87E, 0x03E0); + re_real_ocp_phy_write(sc, 0xB87E, 0x0049); + re_real_ocp_phy_write(sc, 0xB87E, 0x0049); + re_real_ocp_phy_write(sc, 0xB87E, 0x03E0); + re_real_ocp_phy_write(sc, 0xB87E, 0x03B8); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F7); + re_real_ocp_phy_write(sc, 0xB87E, 0x0021); + re_real_ocp_phy_write(sc, 0xB87E, 0x000B); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FE); + re_real_ocp_phy_write(sc, 0xB87E, 0x0009); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FF); + re_real_ocp_phy_write(sc, 0xB87E, 0x03ED); + + re_real_ocp_phy_write(sc, 0xB87C, 0x80EF); + re_clear_set_eth_ocp_phy_bit(sc, + 0xB87E, + 0xFF00, + 0x0C00); + re_real_ocp_phy_write(sc, 0xB87C, 0x82A0); + re_real_ocp_phy_write(sc, 0xB87E, 0x000E); + re_real_ocp_phy_write(sc, 0xB87E, 0x03FE); + re_real_ocp_phy_write(sc, 0xB87E, 0x03ED); + re_real_ocp_phy_write(sc, 0xB87E, 0x0006); + re_real_ocp_phy_write(sc, 0xB87E, 0x001A); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F1); + re_real_ocp_phy_write(sc, 0xB87E, 0x03D8); + re_real_ocp_phy_write(sc, 0xB87E, 0x0023); + re_real_ocp_phy_write(sc, 0xB87E, 0x0054); + re_real_ocp_phy_write(sc, 0xB87E, 0x0322); + re_real_ocp_phy_write(sc, 0xB87E, 0x00DD); + re_real_ocp_phy_write(sc, 0xB87E, 0x03AB); + re_real_ocp_phy_write(sc, 0xB87E, 0x03DC); + re_real_ocp_phy_write(sc, 0xB87E, 0x0027); + re_real_ocp_phy_write(sc, 0xB87E, 0x000E); + re_real_ocp_phy_write(sc, 0xB87E, 0x03E5); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F9); + re_real_ocp_phy_write(sc, 0xB87E, 0x0012); + re_real_ocp_phy_write(sc, 0xB87E, 0x0001); + re_real_ocp_phy_write(sc, 0xB87E, 0x03F1); + + + re_real_ocp_phy_write(sc, 0xA436, 0x8188); + re_real_ocp_phy_write(sc, 0xA438, 0x0032); + re_real_ocp_phy_write(sc, 0xA438, 0x0064); + re_real_ocp_phy_write(sc, 0xA438, 0x0098); + re_real_ocp_phy_write(sc, 0xA438, 0x00CA); + re_real_ocp_phy_write(sc, 0xA438, 0x00FE); + re_real_ocp_phy_write(sc, 0xA438, 0x00FE); + re_real_ocp_phy_write(sc, 0xA438, 0x00FE); + re_real_ocp_phy_write(sc, 0xA438, 0x00FE); + re_real_ocp_phy_write(sc, 0xA438, 0x00CC); + re_real_ocp_phy_write(sc, 0xA438, 0x009A); + re_real_ocp_phy_write(sc, 0xA438, 0x0066); + re_real_ocp_phy_write(sc, 0xA438, 0x0034); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + re_real_ocp_phy_write(sc, 0xA438, 0x0000); + + + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_1 | BIT_0); + + + if (phy_power_saving == 1) { + re_set_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + } else { + re_clear_eth_ocp_phy_bit(sc, 0xA430, BIT_2); + DELAY(20000); + } } - } #ifdef ENABLE_FIBER_SUPPORT - if (HW_FIBER_MODE_ENABLED(sc)) - re_hw_fiber_phy_config(sc); + if (HW_FIBER_MODE_ENABLED(sc)) + re_hw_fiber_phy_config(sc); #endif //ENABLE_FIBER_SUPPORT - //EthPhyPPSW - if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || - sc->re_type == MACFG_58 || sc->re_type == MACFG_59 || - sc->re_type == MACFG_60) { - //disable EthPhyPPSW - MP_WritePhyUshort(sc, 0x1F, 0x0BCD); - MP_WritePhyUshort(sc, 0x14, 0x5065); - MP_WritePhyUshort(sc, 0x14, 0xD065); - MP_WritePhyUshort(sc, 0x1F, 0x0BC8); - MP_WritePhyUshort(sc, 0x12, 0x00ED); - MP_WritePhyUshort(sc, 0x1F, 0x0BCD); - MP_WritePhyUshort(sc, 0x14, 0x1065); - MP_WritePhyUshort(sc, 0x14, 0x9065); - MP_WritePhyUshort(sc, 0x14, 0x1065); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || - sc->re_type == MACFG_74 || sc->re_type == MACFG_75) { - //enable EthPhyPPSW - MP_WritePhyUshort(sc, 0x1F, 0x0A44); - SetEthPhyBit(sc, 0x11, BIT_7); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - - switch (sc->re_type) { - case MACFG_56: - case MACFG_57: - case MACFG_58: - case MACFG_59: - case MACFG_60: - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_68: - case MACFG_69: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - case MACFG_74: - case MACFG_75: - case MACFG_76: - if (phy_mdix_mode == RE_ETH_PHY_FORCE_MDI) { - //Force MDI - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - SetEthPhyBit(sc, 0x10, BIT_8 | BIT_9); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else if (phy_mdix_mode == RE_ETH_PHY_FORCE_MDIX) { - //Force MDIX - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - ClearEthPhyBit(sc, 0x10, BIT_8); - SetEthPhyBit(sc, 0x10, BIT_9); - MP_WritePhyUshort(sc, 0x1F, 0x0000); - } - else { - //Auto MDI/MDIX - MP_WritePhyUshort(sc, 0x1F, 0x0A43); - ClearEthPhyBit(sc, 0x10, BIT_8 | BIT_9); - MP_WritePhyUshort(sc, 0x1F, 0x0000); + //EthPhyPPSW + if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || + sc->re_type == MACFG_58 || sc->re_type == MACFG_59 || + sc->re_type == MACFG_60) { + //disable EthPhyPPSW + re_mdio_write(sc, 0x1F, 0x0BCD); + re_mdio_write(sc, 0x14, 0x5065); + re_mdio_write(sc, 0x14, 0xD065); + re_mdio_write(sc, 0x1F, 0x0BC8); + re_mdio_write(sc, 0x12, 0x00ED); + re_mdio_write(sc, 0x1F, 0x0BCD); + re_mdio_write(sc, 0x14, 0x1065); + re_mdio_write(sc, 0x14, 0x9065); + re_mdio_write(sc, 0x14, 0x1065); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75) { + //enable EthPhyPPSW + re_mdio_write(sc, 0x1F, 0x0A44); + re_set_eth_phy_bit(sc, 0x11, BIT_7); + re_mdio_write(sc, 0x1F, 0x0000); } - break; - } - - //legacy force mode(Chap 22) - switch (sc->re_type) { - case MACFG_80: - case MACFG_81: - case MACFG_82: - case MACFG_83: - case MACFG_90: - case MACFG_91: - case MACFG_92: - ClearEthPhyOcpBit(sc, 0xA5B4, BIT_15); - break; - } - - if (phy_power_saving == 1) { - switch (sc->re_type) { + switch(sc->re_type) { + case MACFG_56: + case MACFG_57: + case MACFG_58: case MACFG_59: case MACFG_60: + case MACFG_61: case MACFG_62: case MACFG_67: case MACFG_68: @@ -31167,266 +37860,313 @@ void re_hw_phy_config(struct re_softc* sc) case MACFG_74: case MACFG_75: case MACFG_76: - re_enable_ocp_phy_power_saving(sc); - break; + if (phy_mdix_mode == RE_ETH_PHY_FORCE_MDI) { + //Force MDI + re_mdio_write(sc, 0x1F, 0x0A43); + re_set_eth_phy_bit(sc, 0x10, BIT_8 | BIT_9); + re_mdio_write(sc, 0x1F, 0x0000); + } else if (phy_mdix_mode == RE_ETH_PHY_FORCE_MDIX) { + //Force MDIX + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_8); + re_set_eth_phy_bit(sc, 0x10, BIT_9); + re_mdio_write(sc, 0x1F, 0x0000); + } else { + //Auto MDI/MDIX + re_mdio_write(sc, 0x1F, 0x0A43); + re_clear_eth_phy_bit(sc, 0x10, BIT_8 | BIT_9); + re_mdio_write(sc, 0x1F, 0x0000); + } + + break; + } + + //legacy force mode(Chap 22) + switch(sc->re_type) { case MACFG_80: case MACFG_81: case MACFG_82: case MACFG_83: - //re_enable_ocp_phy_power_saving(sc); - break; + case MACFG_84: + case MACFG_85: + case MACFG_86: + case MACFG_87: + case MACFG_90: + case MACFG_91: + case MACFG_92: + re_clear_eth_ocp_phy_bit(sc, 0xA5B4, BIT_15); + break; } - } - if (sc->eee_enable == 1) - re_enable_EEE(sc); - else - re_disable_EEE(sc); + if (phy_power_saving == 1) { + switch (sc->re_type) { + case MACFG_59: + case MACFG_60: + case MACFG_62: + case MACFG_67: + case MACFG_68: + case MACFG_69: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_74: + case MACFG_75: + case MACFG_76: + re_enable_ocp_phy_power_saving(sc); + break; + } + } + +#ifdef _WIN32 + if (sc->eee_enable == 1) +#else // _WIN32 + if (eee_enable == 1) +#endif // _WIN32 + re_enable_eee(sc); + else + re_disable_eee(sc); - MP_WritePhyUshort(sc, 0x1F, 0x0000); + re_mdio_write(sc, 0x1F, 0x0000); } -void MP_WritePhyUshort(struct re_softc* sc, u_int8_t RegAddr, u_int16_t RegData) +void re_mdio_write(struct re_softc *sc,u_int8_t RegAddr,u_int16_t RegData) { - u_int32_t TmpUlong = 0x80000000; - u_int32_t Timeout = 0; - - if (RegAddr == 0x1F) { - sc->cur_page = RegData; - } + u_int32_t TmpUlong=0x80000000; + u_int32_t Timeout=0; - if (sc->re_type == MACFG_63) { - int i; - CSR_WRITE_4(sc, RE_OCPDR, OCPDR_Write | - (RegAddr & OCPDR_Reg_Mask) << OCPDR_GPHY_Reg_shift | - (RegData & OCPDR_Data_Mask)); - CSR_WRITE_4(sc, RE_OCPAR, OCPAR_GPHY_Write); - CSR_WRITE_4(sc, RE_EPHY_RXER_NUM, 0); - - for (i = 0; i < 100; i++) { - DELAY(1000); - if (!(CSR_READ_4(sc, RE_OCPAR) & OCPAR_Flag)) - break; - } - } - else if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || - sc->re_type == MACFG_58 || sc->re_type == MACFG_59 || - sc->re_type == MACFG_60 || sc->re_type == MACFG_61 || - sc->re_type == MACFG_62 || sc->re_type == MACFG_67 || - sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || - sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || - sc->re_type == MACFG_72 || sc->re_type == MACFG_73 || - sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || - sc->re_type == MACFG_76 || sc->re_type == MACFG_80 || - sc->re_type == MACFG_81 || sc->re_type == MACFG_82 || - sc->re_type == MACFG_83 || sc->re_type == MACFG_90 || - sc->re_type == MACFG_91 || sc->re_type == MACFG_92) { if (RegAddr == 0x1F) { - return; + sc->cur_page = RegData; } - MP_WritePhyOcpRegWord(sc, sc->cur_page, RegAddr, RegData); - } - else { - if (sc->re_type == MACFG_65 || sc->re_type == MACFG_66) - CSR_WRITE_4(sc, 0xD0, CSR_READ_4(sc, 0xD0) & ~0x00020000); + if (sc->re_type == MACFG_63) { + int i; + CSR_WRITE_4(sc, RE_OCPDR, OCPDR_Write | + (RegAddr & OCPDR_Reg_Mask) << OCPDR_GPHY_Reg_shift | + (RegData & OCPDR_Data_Mask)); + CSR_WRITE_4(sc, RE_OCPAR, OCPAR_GPHY_Write); + CSR_WRITE_4(sc, RE_EPHY_RXER_NUM, 0); + + for (i = 0; i < 100; i++) { + DELAY(1000); + if (!(CSR_READ_4(sc, RE_OCPAR) & OCPAR_Flag)) + break; + } + } else if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || + sc->re_type == MACFG_58 || sc->re_type == MACFG_59 || + sc->re_type == MACFG_60 || sc->re_type == MACFG_61 || + sc->re_type == MACFG_62 || sc->re_type == MACFG_67 || + sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || + sc->re_type == MACFG_72 || sc->re_type == MACFG_73 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || + sc->re_type == MACFG_76 || sc->re_type == MACFG_80 || + sc->re_type == MACFG_81 || sc->re_type == MACFG_82 || + sc->re_type == MACFG_83 || sc->re_type == MACFG_84 || + sc->re_type == MACFG_85 || sc->re_type == MACFG_86 || + sc->re_type == MACFG_87 || sc->re_type == MACFG_90 || + sc->re_type == MACFG_91 || sc->re_type == MACFG_92) { + if (RegAddr == 0x1F) { + return; + } + + re_ocp_phy_write(sc, sc->cur_page, RegAddr, RegData); + } else { + if (sc->re_type == MACFG_65 || sc->re_type == MACFG_66) + CSR_WRITE_4(sc, 0xD0, CSR_READ_4(sc, 0xD0) & ~0x00020000); - TmpUlong |= (((u_int32_t)RegAddr) << 16 | (u_int32_t)RegData); + TmpUlong |= (((u_int32_t)RegAddr)<<16 | (u_int32_t)RegData); - CSR_WRITE_4(sc, RE_PHYAR, TmpUlong); + CSR_WRITE_4(sc, RE_PHYAR, TmpUlong); - /* Wait for writing to Phy ok */ - for (Timeout = 0; Timeout < 5; Timeout++) { - DELAY(1000); - if ((CSR_READ_4(sc, RE_PHYAR) & PHYAR_Flag) == 0) - break; - } + /* Wait for writing to Phy ok */ + for (Timeout=0; Timeout<5; Timeout++) { + DELAY(1000); + if ((CSR_READ_4(sc, RE_PHYAR)&PHYAR_Flag)==0) + break; + } - if (sc->re_type == MACFG_65 || sc->re_type == MACFG_66) - CSR_WRITE_4(sc, 0xD0, CSR_READ_4(sc, 0xD0) | 0x00020000); - } + if (sc->re_type == MACFG_65 || sc->re_type == MACFG_66) + CSR_WRITE_4(sc, 0xD0, CSR_READ_4(sc, 0xD0) | 0x00020000); + } } -u_int16_t MP_ReadPhyUshort(struct re_softc* sc, u_int8_t RegAddr) +u_int16_t re_mdio_read(struct re_softc *sc,u_int8_t RegAddr) { - u_int16_t RegData; - u_int32_t TmpUlong; - u_int32_t Timeout = 0; + u_int16_t RegData; + u_int32_t TmpUlong; + u_int32_t Timeout=0; + + if (sc->re_type == MACFG_63) { + int i; + CSR_WRITE_4(sc, RE_OCPDR, OCPDR_Read | + (RegAddr & OCPDR_Reg_Mask) << OCPDR_GPHY_Reg_shift); + CSR_WRITE_4(sc, RE_OCPAR, OCPAR_GPHY_Write); + CSR_WRITE_4(sc, RE_EPHY_RXER_NUM, 0); + + for (i = 0; i < 100; i++) { + DELAY(1000); + if (!(CSR_READ_4(sc, RE_OCPAR) & OCPAR_Flag)) + break; + } - if (sc->re_type == MACFG_63) { - int i; - CSR_WRITE_4(sc, RE_OCPDR, OCPDR_Read | - (RegAddr & OCPDR_Reg_Mask) << OCPDR_GPHY_Reg_shift); - CSR_WRITE_4(sc, RE_OCPAR, OCPAR_GPHY_Write); - CSR_WRITE_4(sc, RE_EPHY_RXER_NUM, 0); - - for (i = 0; i < 100; i++) { - DELAY(1000); - if (!(CSR_READ_4(sc, RE_OCPAR) & OCPAR_Flag)) - break; - } - - DELAY(1000); - CSR_WRITE_4(sc, RE_OCPAR, OCPAR_GPHY_Read); - CSR_WRITE_4(sc, RE_EPHY_RXER_NUM, 0); - - for (i = 0; i < 100; i++) { - DELAY(1000); - if (CSR_READ_4(sc, RE_OCPAR) & OCPAR_Flag) - break; - } - - RegData = CSR_READ_4(sc, RE_OCPDR) & OCPDR_Data_Mask; - } - else if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || - sc->re_type == MACFG_58 || sc->re_type == MACFG_59 || - sc->re_type == MACFG_60 || sc->re_type == MACFG_61 || - sc->re_type == MACFG_62 || sc->re_type == MACFG_67 || - sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || - sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || - sc->re_type == MACFG_72 || sc->re_type == MACFG_73 || - sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || - sc->re_type == MACFG_76 || sc->re_type == MACFG_80 || - sc->re_type == MACFG_81 || sc->re_type == MACFG_82 || - sc->re_type == MACFG_83 || sc->re_type == MACFG_90 || - sc->re_type == MACFG_91 || sc->re_type == MACFG_92) { - RegData = MP_ReadPhyOcpRegWord(sc, sc->cur_page, RegAddr); - } - else { - if (sc->re_type == MACFG_65 || sc->re_type == MACFG_66) - CSR_WRITE_4(sc, 0xD0, CSR_READ_4(sc, 0xD0) & ~0x00020000); + DELAY(1000); + CSR_WRITE_4(sc, RE_OCPAR, OCPAR_GPHY_Read); + CSR_WRITE_4(sc, RE_EPHY_RXER_NUM, 0); - TmpUlong = ((u_int32_t)RegAddr << 16); - CSR_WRITE_4(sc, RE_PHYAR, TmpUlong); + for (i = 0; i < 100; i++) { + DELAY(1000); + if (CSR_READ_4(sc, RE_OCPAR) & OCPAR_Flag) + break; + } - /* Wait for writing to Phy ok */ - for (Timeout = 0; Timeout < 5; Timeout++) { - DELAY(1000); - TmpUlong = CSR_READ_4(sc, RE_PHYAR); - if ((TmpUlong & PHYAR_Flag) != 0) - break; - } + RegData = CSR_READ_4(sc, RE_OCPDR) & OCPDR_Data_Mask; + } else if (sc->re_type == MACFG_56 || sc->re_type == MACFG_57 || + sc->re_type == MACFG_58 || sc->re_type == MACFG_59 || + sc->re_type == MACFG_60 || sc->re_type == MACFG_61 || + sc->re_type == MACFG_62 || sc->re_type == MACFG_67 || + sc->re_type == MACFG_68 || sc->re_type == MACFG_69 || + sc->re_type == MACFG_70 || sc->re_type == MACFG_71 || + sc->re_type == MACFG_72 || sc->re_type == MACFG_73 || + sc->re_type == MACFG_74 || sc->re_type == MACFG_75 || + sc->re_type == MACFG_76 || sc->re_type == MACFG_80 || + sc->re_type == MACFG_81 || sc->re_type == MACFG_82 || + sc->re_type == MACFG_83 || sc->re_type == MACFG_84 || + sc->re_type == MACFG_85 || sc->re_type == MACFG_86 || + sc->re_type == MACFG_87 || sc->re_type == MACFG_90 || + sc->re_type == MACFG_91 || sc->re_type == MACFG_92) { + RegData = re_ocp_phy_read(sc, sc->cur_page, RegAddr); + } else { + if (sc->re_type == MACFG_65 || sc->re_type == MACFG_66) + CSR_WRITE_4(sc, 0xD0, CSR_READ_4(sc, 0xD0) & ~0x00020000); + + TmpUlong = ((u_int32_t)RegAddr << 16); + CSR_WRITE_4(sc, RE_PHYAR, TmpUlong); + + /* Wait for writing to Phy ok */ + for (Timeout=0; Timeout<5; Timeout++) { + DELAY(1000); + TmpUlong = CSR_READ_4(sc, RE_PHYAR); + if ((TmpUlong&PHYAR_Flag)!=0) + break; + } - RegData = (u_int16_t)(TmpUlong & 0x0000ffff); + RegData = (u_int16_t)(TmpUlong & 0x0000ffff); - if (sc->re_type == MACFG_65 || sc->re_type == MACFG_66) - CSR_WRITE_4(sc, 0xD0, CSR_READ_4(sc, 0xD0) | 0x00020000); - } + if (sc->re_type == MACFG_65 || sc->re_type == MACFG_66) + CSR_WRITE_4(sc, 0xD0, CSR_READ_4(sc, 0xD0) | 0x00020000); + } - return RegData; + return RegData; } -static u_int8_t RtCheckPciEPhyAddr(struct re_softc* sc, int RegAddr) +static u_int8_t RtCheckPciEPhyAddr(struct re_softc *sc, int RegAddr) { - if (sc->re_type != MACFG_74 && sc->re_type != MACFG_75) - goto exit; + if (sc->re_type != MACFG_74 && sc->re_type != MACFG_75) + goto exit; - if (RegAddr & (BIT_6 | BIT_5)) - ClearAndSetMcuAccessRegBit(sc, 0xDE28, - (BIT_1 | BIT_0), - (RegAddr >> 5) & (BIT_1 | BIT_0)); + if (RegAddr & (BIT_6 | BIT_5)) + re_clear_set_mac_ocp_bit(sc, 0xDE28, + (BIT_1 | BIT_0), + (RegAddr >> 5) & (BIT_1 | BIT_0)); - RegAddr &= 0x1F; + RegAddr &= 0x1F; exit: - return RegAddr; + return RegAddr; } -static void _MP_WriteEPhyUshort(struct re_softc* sc, u_int8_t RegAddr, u_int16_t RegData) +static void _re_ephy_write(struct re_softc *sc, u_int8_t RegAddr, u_int16_t RegData) { - u_int32_t TmpUlong = 0x80000000; - u_int32_t Timeout = 0; + u_int32_t TmpUlong=0x80000000; + u_int32_t Timeout=0; - TmpUlong |= (((u_int32_t)RegAddr << 16) | (u_int32_t)RegData); + TmpUlong |= (((u_int32_t)RegAddr<<16) | (u_int32_t)RegData); - CSR_WRITE_4(sc, RE_EPHYAR, TmpUlong); + CSR_WRITE_4(sc, RE_EPHYAR, TmpUlong); - /* Wait for writing to Phy ok */ - for (Timeout = 0; Timeout < 5; Timeout++) { - DELAY(1000); - if ((CSR_READ_4(sc, RE_EPHYAR) & PHYAR_Flag) == 0) - break; - } + /* Wait for writing to Phy ok */ + for (Timeout=0; Timeout<5; Timeout++) { + DELAY(1000); + if ((CSR_READ_4(sc, RE_EPHYAR)&PHYAR_Flag)==0) + break; + } } -void MP_WriteEPhyUshort(struct re_softc* sc, u_int8_t RegAddr, u_int16_t RegData) +void re_ephy_write(struct re_softc *sc, u_int8_t RegAddr, u_int16_t RegData) { - _MP_WriteEPhyUshort(sc, RtCheckPciEPhyAddr(sc, RegAddr), RegData); + _re_ephy_write(sc, RtCheckPciEPhyAddr(sc, RegAddr), RegData); } -static u_int16_t _MP_ReadEPhyUshort(struct re_softc* sc, u_int8_t RegAddr) +static u_int16_t _re_ephy_read(struct re_softc *sc, u_int8_t RegAddr) { - u_int16_t RegData; - u_int32_t TmpUlong; - u_int32_t Timeout = 0; + u_int16_t RegData; + u_int32_t TmpUlong; + u_int32_t Timeout=0; - TmpUlong = ((u_int32_t)RegAddr << 16); - CSR_WRITE_4(sc, RE_EPHYAR, TmpUlong); + TmpUlong = ((u_int32_t)RegAddr << 16); + CSR_WRITE_4(sc, RE_EPHYAR, TmpUlong); - /* Wait for writing to Phy ok */ - for (Timeout = 0; Timeout < 5; Timeout++) { - DELAY(1000); - TmpUlong = CSR_READ_4(sc, RE_EPHYAR); - if ((TmpUlong & PHYAR_Flag) != 0) - break; - } + /* Wait for writing to Phy ok */ + for (Timeout=0; Timeout<5; Timeout++) { + DELAY(1000); + TmpUlong = CSR_READ_4(sc, RE_EPHYAR); + if ((TmpUlong&PHYAR_Flag)!=0) + break; + } - RegData = (u_int16_t)(TmpUlong & 0x0000ffff); + RegData = (u_int16_t)(TmpUlong & 0x0000ffff); - return RegData; + return RegData; } -u_int16_t MP_ReadEPhyUshort(struct re_softc* sc, u_int8_t RegAddr) +u_int16_t re_ephy_read(struct re_softc *sc, u_int8_t RegAddr) { - return _MP_ReadEPhyUshort(sc, RtCheckPciEPhyAddr(sc, RegAddr)); + return _re_ephy_read(sc, RtCheckPciEPhyAddr(sc, RegAddr)); } static u_int8_t re_calc_efuse_dummy_bit(u_int16_t reg) { - int s, a; - u_int8_t dummyBitPos = 0; + int s,a; + u_int8_t dummyBitPos = 0; - s = reg % 32; - a = s % 16; + s=reg% 32; + a=s % 16; - if (s / 16) { - dummyBitPos = (u_int8_t)(16 - a); - } - else { - dummyBitPos = (u_int8_t)a; - } + if (s/16) { + dummyBitPos = (u_int8_t)(16-a); + } else { + dummyBitPos = (u_int8_t)a; + } - return dummyBitPos; + return dummyBitPos; } -static u_int32_t re_decode_efuse_cmd(struct re_softc* sc, u_int32_t DwCmd) +static u_int32_t re_decode_efuse_cmd(struct re_softc *sc, u_int32_t DwCmd) { - u_int16_t reg = (u_int16_t)((DwCmd & 0x00FE0000) >> 17); - u_int32_t DummyPos = re_calc_efuse_dummy_bit(reg); - u_int32_t DeCodeDwCmd = DwCmd; - u_int32_t Dw17BitData; - - - if (sc->re_efuse_ver < 3) { - DeCodeDwCmd = (DwCmd >> (DummyPos + 1)) << DummyPos; - if (DummyPos > 0) { - DeCodeDwCmd |= ((DwCmd << (32 - DummyPos)) >> (32 - DummyPos)); + u_int16_t reg = (u_int16_t)((DwCmd & 0x00FE0000) >> 17); + u_int32_t DummyPos = re_calc_efuse_dummy_bit(reg); + u_int32_t DeCodeDwCmd; + u_int32_t Dw17BitData; + + + if (sc->re_efuse_ver < 3) { + DeCodeDwCmd = (DwCmd>>(DummyPos+1))< 0) + DeCodeDwCmd |= ((DwCmd<<(32-DummyPos))>>(32-DummyPos)); + } else { + reg = (u_int16_t)((DwCmd & 0x007F0000) >> 16); + DummyPos = re_calc_efuse_dummy_bit(reg); + Dw17BitData = ((DwCmd & BIT_23) >> 23); + Dw17BitData <<= 16; + Dw17BitData |= (DwCmd & 0x0000FFFF); + DeCodeDwCmd = (Dw17BitData>>(DummyPos+1))< 0) + DeCodeDwCmd |= ((Dw17BitData<<(32-DummyPos))>>(32-DummyPos)); } - } - else { - reg = (u_int16_t)((DwCmd & 0x007F0000) >> 16); - DummyPos = re_calc_efuse_dummy_bit(reg); - Dw17BitData = ((DwCmd & BIT_23) >> 23); - Dw17BitData <<= 16; - Dw17BitData |= (DwCmd & 0x0000FFFF); - DeCodeDwCmd = (Dw17BitData >> (DummyPos + 1)) << DummyPos; - if (DummyPos > 0) { - DeCodeDwCmd |= ((Dw17BitData << (32 - DummyPos)) >> (32 - DummyPos)); - } - } - return DeCodeDwCmd; + return DeCodeDwCmd; } #define EFUSE_WRITE 0x80000000 @@ -31439,201 +38179,191 @@ static u_int32_t re_decode_efuse_cmd(struct re_softc* sc, u_int32_t DwCmd) #define EFUSE_READ_FAIL 0xFF #define EFUSE_Data_Mask 0x000000FF -u_int8_t MP_ReadEfuse(struct re_softc* sc, u_int16_t reg) +u_int8_t re_efuse_read(struct re_softc *sc, u_int16_t reg) { - u_int8_t efuse_data = 0; - u_int32_t temp; - u_int32_t cnt; - - if (sc->re_efuse_ver == EFUSE_NOT_SUPPORT) - return EFUSE_READ_FAIL; - - if (sc->re_efuse_ver == EFUSE_SUPPORT_V1) { - temp = EFUSE_READ | ((reg & EFUSE_Reg_Mask) << EFUSE_Reg_Shift); - CSR_WRITE_4(sc, RE_EFUSEAR, temp); - - cnt = 0; - do { - DELAY(100); - temp = CSR_READ_4(sc, RE_EFUSEAR); - cnt++; - } while (!(temp & EFUSE_READ_OK) && (cnt < EFUSE_Check_Cnt)); - - if (cnt == EFUSE_Check_Cnt) - efuse_data = EFUSE_READ_FAIL; - else - efuse_data = (u_int8_t)(CSR_READ_4(sc, RE_EFUSEAR) & EFUSE_Data_Mask); - } - else if (sc->re_efuse_ver == EFUSE_SUPPORT_V2) { - temp = (reg / 2) & 0x03ff; - temp <<= 17; - temp |= EFUSE_READ; - CSR_WRITE_4(sc, RE_EFUSEAR, temp); - - cnt = 0; - do { - DELAY(100); - temp = CSR_READ_4(sc, RE_EFUSEAR); - cnt++; - } while (!(temp & EFUSE_READ_OK) && (cnt < EFUSE_Check_Cnt)); - - if (cnt == EFUSE_Check_Cnt) { - efuse_data = EFUSE_READ_FAIL; - } - else { - temp = CSR_READ_4(sc, RE_EFUSEAR); - temp = re_decode_efuse_cmd(sc, temp); - - if (reg % 2) { - temp >>= 8; - efuse_data = (u_int8_t)temp; - } - else { - efuse_data = (u_int8_t)temp; - } - } - } - else if (sc->re_efuse_ver == EFUSE_SUPPORT_V3) { - temp = (reg / 2) & 0x03ff; - temp <<= 16; - temp |= EFUSE_READ; - CSR_WRITE_4(sc, RE_EFUSEAR, temp); - - cnt = 0; - do { - DELAY(100); - temp = CSR_READ_4(sc, RE_EFUSEAR); - cnt++; - } while (!(temp & EFUSE_READ_OK) && (cnt < EFUSE_Check_Cnt)); - - if (cnt == EFUSE_Check_Cnt) { - efuse_data = EFUSE_READ_FAIL; - } - else { - temp = CSR_READ_4(sc, RE_EFUSEAR); - temp = re_decode_efuse_cmd(sc, temp); - - if (reg % 2) { - temp >>= 8; - efuse_data = (u_int8_t)temp; - } - else { - efuse_data = (u_int8_t)temp; - } + u_int8_t efuse_data = 0; + u_int32_t temp; + u_int32_t cnt; + + if (sc->re_efuse_ver == EFUSE_NOT_SUPPORT) + return EFUSE_READ_FAIL; + + if (sc->re_efuse_ver == EFUSE_SUPPORT_V1) { + temp = EFUSE_READ | ((reg & EFUSE_Reg_Mask) << EFUSE_Reg_Shift); + CSR_WRITE_4(sc, RE_EFUSEAR, temp); + + cnt = 0; + do { + DELAY(100); + temp = CSR_READ_4(sc, RE_EFUSEAR); + cnt++; + } while (!(temp & EFUSE_READ_OK) && (cnt < EFUSE_Check_Cnt)); + + if (cnt == EFUSE_Check_Cnt) + efuse_data = EFUSE_READ_FAIL; + else + efuse_data = (u_int8_t)(CSR_READ_4(sc, RE_EFUSEAR) & EFUSE_Data_Mask); + } else if (sc->re_efuse_ver == EFUSE_SUPPORT_V2) { + temp = (reg/2) & 0x03ff; + temp <<= 17; + temp |= EFUSE_READ; + CSR_WRITE_4(sc, RE_EFUSEAR, temp); + + cnt = 0; + do { + DELAY(100); + temp = CSR_READ_4(sc, RE_EFUSEAR); + cnt++; + } while (!(temp & EFUSE_READ_OK) && (cnt < EFUSE_Check_Cnt)); + + if (cnt == EFUSE_Check_Cnt) { + efuse_data = EFUSE_READ_FAIL; + } else { + temp = CSR_READ_4(sc, RE_EFUSEAR); + temp = re_decode_efuse_cmd(sc, temp); + + if (reg%2) { + temp >>= 8; + efuse_data = (u_int8_t)temp; + } else { + efuse_data = (u_int8_t)temp; + } + } + } else if (sc->re_efuse_ver == EFUSE_SUPPORT_V3) { + temp = (reg/2) & 0x03ff; + temp <<= 16; + temp |= EFUSE_READ; + CSR_WRITE_4(sc, RE_EFUSEAR, temp); + + cnt = 0; + do { + DELAY(100); + temp = CSR_READ_4(sc, RE_EFUSEAR); + cnt++; + } while (!(temp & EFUSE_READ_OK) && (cnt < EFUSE_Check_Cnt)); + + if (cnt == EFUSE_Check_Cnt) { + efuse_data = EFUSE_READ_FAIL; + } else { + temp = CSR_READ_4(sc, RE_EFUSEAR); + temp = re_decode_efuse_cmd(sc, temp); + + if (reg%2) { + temp >>= 8; + efuse_data = (u_int8_t)temp; + } else { + efuse_data = (u_int8_t)temp; + } + } } - } - DELAY(20); + DELAY(20); - return efuse_data; + return efuse_data; } -void MP_WriteOtherFunPciEConfigSpace( - struct re_softc* sc, - u_int8_t MultiFunSelBit, - u_int16_t ByteEnAndAddr, - u_int32_t RegData) +void re_csi_other_fun_write( + struct re_softc *sc, + u_int8_t MultiFunSelBit, + u_int16_t ByteEnAndAddr, + u_int32_t RegData) { - u_int32_t Timeout = 0, WaitCount = 10; - u_int32_t TmpUlong = 0x80000000; - u_int32_t WriteDone; + u_int32_t Timeout = 0, WaitCount = 10; + u_int32_t TmpUlong = 0x80000000; + u_int32_t WriteDone; - if (MultiFunSelBit > 7) { - return; - } + if (MultiFunSelBit > 7) { + return; + } - TmpUlong |= MultiFunSelBit << 16; + TmpUlong |= MultiFunSelBit << 16; - CSR_WRITE_4(sc, RE_CSIDR, RegData); - TmpUlong |= (u_int32_t)ByteEnAndAddr; - CSR_WRITE_4(sc, RE_CSIAR, TmpUlong); + CSR_WRITE_4(sc, RE_CSIDR, RegData); + TmpUlong |= (u_int32_t) ByteEnAndAddr; + CSR_WRITE_4(sc, RE_CSIAR, TmpUlong); - do { - DELAY(100); + do { + DELAY(100); - WriteDone = CSR_READ_4(sc, RE_CSIAR); - Timeout++; - } while (((WriteDone & 0x80000000) != 0) && (Timeout < WaitCount)); + WriteDone = CSR_READ_4(sc, RE_CSIAR); + Timeout++; + } while (((WriteDone & 0x80000000) != 0) && (Timeout < WaitCount)); - DELAY(50); + DELAY(50); } -u_int32_t MP_ReadOtherFunPciEConfigSpace( - struct re_softc* sc, - u_int8_t MultiFunSelBit, - u_int16_t ByteEnAndAddr) +u_int32_t re_csi_other_fun_read( + struct re_softc *sc, + u_int8_t MultiFunSelBit, + u_int16_t ByteEnAndAddr) { - u_int32_t Timeout = 0, WaitCount = 10; - u_int32_t TmpUlong = 0x00000000; - u_int32_t ReadDone; - u_int32_t RetVal = 0xffffffff; + u_int32_t Timeout = 0, WaitCount = 10; + u_int32_t TmpUlong = 0x00000000; + u_int32_t ReadDone; + u_int32_t RetVal = 0xffffffff; - if (MultiFunSelBit > 7) { - return 0xffffffff; - } + if (MultiFunSelBit > 7) { + return 0xffffffff; + } - TmpUlong |= MultiFunSelBit << 16; + TmpUlong |= MultiFunSelBit << 16; - TmpUlong |= (u_int32_t)ByteEnAndAddr; - CSR_WRITE_4(sc, RE_CSIAR, TmpUlong); + TmpUlong |= (u_int32_t) ByteEnAndAddr; + CSR_WRITE_4(sc, RE_CSIAR, TmpUlong); - do { - DELAY(100); + do { + DELAY(100); - ReadDone = CSR_READ_4(sc, RE_CSIAR); - Timeout++; - } while (((ReadDone & 0x80000000) == 0) && (Timeout < WaitCount)); + ReadDone = CSR_READ_4(sc, RE_CSIAR); + Timeout++; + } while (((ReadDone & 0x80000000) == 0)&& (Timeout < WaitCount)); - RetVal = CSR_READ_4(sc, RE_CSIDR); + RetVal = CSR_READ_4(sc, RE_CSIDR); - DELAY(50); + DELAY(50); - return RetVal; + return RetVal; } -void MP_WritePciEConfigSpace( - struct re_softc* sc, - u_int16_t ByteEnAndAddr, - u_int32_t RegData) +void re_csi_write( + struct re_softc *sc, + u_int16_t ByteEnAndAddr, + u_int32_t RegData) { - u_int8_t MultiFunSelBit; - - if (sc->re_type == MACFG_52 || sc->re_type == MACFG_53) { - MultiFunSelBit = 2; - } - else if (sc->re_type == MACFG_60) { - MultiFunSelBit = 1; - } - else { - MultiFunSelBit = 0; - } + u_int8_t MultiFunSelBit; + + if (sc->re_type == MACFG_52 || sc->re_type == MACFG_53) { + MultiFunSelBit = 2; + } else if (sc->re_type == MACFG_60) { + MultiFunSelBit = 1; + } else { + MultiFunSelBit = 0; + } - MP_WriteOtherFunPciEConfigSpace(sc, MultiFunSelBit, ByteEnAndAddr, RegData); + re_csi_other_fun_write(sc, MultiFunSelBit, ByteEnAndAddr, RegData); } -u_int32_t MP_ReadPciEConfigSpace( - struct re_softc* sc, - u_int16_t ByteEnAndAddr) +u_int32_t re_csi_read( + struct re_softc *sc, + u_int16_t ByteEnAndAddr) { - u_int8_t MultiFunSelBit; - - if (sc->re_type == MACFG_52 || sc->re_type == MACFG_53) { - MultiFunSelBit = 2; - } - else if (sc->re_type == MACFG_60) { - MultiFunSelBit = 1; - } - else { - MultiFunSelBit = 0; - } + u_int8_t MultiFunSelBit; + + if (sc->re_type == MACFG_52 || sc->re_type == MACFG_53) { + MultiFunSelBit = 2; + } else if (sc->re_type == MACFG_60) { + MultiFunSelBit = 1; + } else { + MultiFunSelBit = 0; + } - return MP_ReadOtherFunPciEConfigSpace(sc, MultiFunSelBit, ByteEnAndAddr); + return re_csi_other_fun_read(sc, MultiFunSelBit, ByteEnAndAddr); } /* -u_int8_t MP_ReadByteFun0PciEConfigSpace( +u_int8_t re_csi_fun0_read_byte( struct re_softc *sc, u_int16_t RegAddr) { @@ -31645,7 +38375,7 @@ u_int8_t MP_ReadByteFun0PciEConfigSpace( RegAlignAddr = RegAddr & ~(0x3); ShiftByte = RegAddr & (0x3); - TmpUlong = MP_ReadOtherFunPciEConfigSpace(sc, 0, RegAlignAddr | 0xF000); + TmpUlong = re_csi_other_fun_read(sc, 0, RegAlignAddr | 0xF000); TmpUlong >>= (8*ShiftByte); RetVal = (u_int8_t)TmpUlong; @@ -31654,432 +38384,568 @@ u_int8_t MP_ReadByteFun0PciEConfigSpace( */ static u_int16_t MappingPhyOcpAddress( - struct re_softc* sc, - u_int16_t PageNum, - u_int8_t RegNum) + struct re_softc *sc, + u_int16_t PageNum, + u_int8_t RegNum) { - u_int16_t OcpPageNum = 0; - u_int8_t OcpRegNum = 0; - u_int16_t OcpPhyAddress = 0; - - if (PageNum == 0) { - OcpPageNum = 0x0A40 + (RegNum / 8); - OcpRegNum = 0x10 + (RegNum % 8); - } - else { - OcpPageNum = PageNum; - OcpRegNum = RegNum; - } + u_int16_t OcpPageNum = 0; + u_int8_t OcpRegNum = 0; + u_int16_t OcpPhyAddress = 0; + + if (PageNum == 0) { + OcpPageNum = 0x0A40 + (RegNum / 8); + OcpRegNum = 0x10 + (RegNum % 8); + } else { + OcpPageNum = PageNum; + OcpRegNum = RegNum; + } - OcpPageNum <<= 4; + OcpPageNum <<= 4; - if (OcpRegNum < 16) { - OcpPhyAddress = 0; - } - else { - OcpRegNum -= 16; - OcpRegNum <<= 1; + if (OcpRegNum < 16) { + OcpPhyAddress = 0; + } else { + OcpRegNum -= 16; + OcpRegNum <<= 1; - OcpPhyAddress = OcpPageNum + OcpRegNum; - } + OcpPhyAddress = OcpPageNum + OcpRegNum; + } - return OcpPhyAddress; + return OcpPhyAddress; } -u_int16_t MP_RealReadPhyOcpRegWord( - struct re_softc* sc, - u_int16_t OcpRegAddr) +u_int16_t re_real_ocp_phy_read( + struct re_softc *sc, + u_int16_t OcpRegAddr) { - u_int32_t Timeout = 0, WaitCount = 100; - u_int32_t TmpUlong; - u_int16_t RetVal = 0xffff; + u_int32_t Timeout = 0, WaitCount = 100; + u_int32_t TmpUlong; + u_int16_t RetVal; - TmpUlong = OcpRegAddr / 2; - TmpUlong <<= 16; + TmpUlong = OcpRegAddr / 2; + TmpUlong <<= 16; - CSR_WRITE_4(sc, RE_PHYOCPACCESS, TmpUlong); + CSR_WRITE_4(sc, RE_PHYOCPACCESS, TmpUlong); - do { - DELAY(1); + do { + DELAY(1); - TmpUlong = CSR_READ_4(sc, RE_PHYOCPACCESS); + TmpUlong = CSR_READ_4(sc, RE_PHYOCPACCESS); - Timeout++; - } while ((!(TmpUlong & PHYAR_Flag)) && (Timeout < WaitCount)); + Timeout++; + } while ((!(TmpUlong & PHYAR_Flag)) && (Timeout < WaitCount)); - RetVal = (u_int16_t)TmpUlong; + RetVal = (u_int16_t)TmpUlong; - return RetVal; + return RetVal; } -u_int16_t MP_ReadPhyOcpRegWord( - struct re_softc* sc, - u_int16_t PhyPage, - u_int8_t PhyRegNum) +u_int16_t re_ocp_phy_read( + struct re_softc *sc, + u_int16_t PhyPage, + u_int8_t PhyRegNum) { - u_int16_t OcpRegAddr; - u_int16_t RetVal = 0xffff; + u_int16_t OcpRegAddr; + u_int16_t RetVal; - OcpRegAddr = MappingPhyOcpAddress(sc, PhyPage, PhyRegNum); + OcpRegAddr = MappingPhyOcpAddress(sc, PhyPage, PhyRegNum); - if (OcpRegAddr % 2) { - u_int16_t tmpUshort; + if (OcpRegAddr % 2) { + u_int16_t tmpUshort; - tmpUshort = MP_RealReadPhyOcpRegWord(sc, OcpRegAddr); - tmpUshort &= 0xFF00; - tmpUshort >>= 8; - RetVal = tmpUshort; + tmpUshort = re_real_ocp_phy_read(sc, OcpRegAddr); + tmpUshort &= 0xFF00; + tmpUshort >>= 8; + RetVal = tmpUshort; - tmpUshort = MP_RealReadPhyOcpRegWord(sc, OcpRegAddr + 1); - tmpUshort &= 0x00FF; - tmpUshort <<= 8; - RetVal |= tmpUshort; - } - else { - RetVal = MP_RealReadPhyOcpRegWord(sc, OcpRegAddr); - } + tmpUshort = re_real_ocp_phy_read(sc, OcpRegAddr + 1); + tmpUshort &= 0x00FF; + tmpUshort <<= 8; + RetVal |= tmpUshort; + } else { + RetVal = re_real_ocp_phy_read(sc, OcpRegAddr); + } - return RetVal; + return RetVal; } -void MP_RealWritePhyOcpRegWord( - struct re_softc* sc, - u_int16_t OcpRegAddr, - u_int16_t RegData) +void re_real_ocp_phy_write( + struct re_softc *sc, + u_int16_t OcpRegAddr, + u_int16_t RegData) { - u_int32_t Timeout = 0, WaitCount = 100; - u_int32_t TmpUlong; + u_int32_t Timeout = 0, WaitCount = 100; + u_int32_t TmpUlong; - TmpUlong = OcpRegAddr / 2; - TmpUlong <<= 16; - TmpUlong += RegData; - TmpUlong |= BIT_31; + TmpUlong = OcpRegAddr / 2; + TmpUlong <<= 16; + TmpUlong += RegData; + TmpUlong |= BIT_31; - CSR_WRITE_4(sc, RE_PHYOCPACCESS, TmpUlong); + CSR_WRITE_4(sc, RE_PHYOCPACCESS, TmpUlong); - do { - DELAY(1); + do { + DELAY(1); - TmpUlong = CSR_READ_4(sc, RE_PHYOCPACCESS); + TmpUlong = CSR_READ_4(sc, RE_PHYOCPACCESS); - Timeout++; - } while ((TmpUlong & PHYAR_Flag) && (Timeout < WaitCount)); + Timeout++; + } while ((TmpUlong & PHYAR_Flag) && (Timeout < WaitCount)); } -void MP_WritePhyOcpRegWord( - struct re_softc* sc, - u_int16_t PhyPage, - u_int8_t PhyRegNum, - u_int16_t RegData) +void re_ocp_phy_write( + struct re_softc *sc, + u_int16_t PhyPage, + u_int8_t PhyRegNum, + u_int16_t RegData) { - u_int16_t OcpRegAddr; - - OcpRegAddr = MappingPhyOcpAddress(sc, PhyPage, PhyRegNum); - - if (OcpRegAddr % 2) { - u_int16_t tmpUshort; - - tmpUshort = MP_RealReadPhyOcpRegWord(sc, OcpRegAddr); - tmpUshort &= 0x00FF; - tmpUshort |= (RegData << 8); - MP_RealWritePhyOcpRegWord(sc, OcpRegAddr, tmpUshort); - tmpUshort = MP_RealReadPhyOcpRegWord(sc, OcpRegAddr + 1); - tmpUshort &= 0xFF00; - tmpUshort |= (RegData >> 8); - MP_RealWritePhyOcpRegWord(sc, OcpRegAddr + 1, tmpUshort); - } - else { - MP_RealWritePhyOcpRegWord(sc, OcpRegAddr, RegData); - } + u_int16_t OcpRegAddr; + + OcpRegAddr = MappingPhyOcpAddress(sc, PhyPage, PhyRegNum); + + if (OcpRegAddr % 2) { + u_int16_t tmpUshort; + + tmpUshort = re_real_ocp_phy_read(sc, OcpRegAddr); + tmpUshort &= 0x00FF; + tmpUshort |= (RegData << 8); + re_real_ocp_phy_write(sc, OcpRegAddr, tmpUshort); + tmpUshort = re_real_ocp_phy_read(sc, OcpRegAddr + 1); + tmpUshort &= 0xFF00; + tmpUshort |= (RegData >> 8); + re_real_ocp_phy_write(sc, OcpRegAddr + 1, tmpUshort); + } else { + re_real_ocp_phy_write(sc, OcpRegAddr, RegData); + } } -void MP_WriteMcuAccessRegWord( - struct re_softc* sc, - u_int16_t ExtRegAddr, - u_int16_t RegData) +void re_mac_ocp_write( + struct re_softc *sc, + u_int16_t ExtRegAddr, + u_int16_t RegData) { - u_int32_t TmpUlong; + u_int32_t TmpUlong; - TmpUlong = ExtRegAddr / 2; - TmpUlong <<= 16; - TmpUlong += RegData; - TmpUlong |= BIT_31; + TmpUlong = ExtRegAddr / 2; + TmpUlong <<= 16; + TmpUlong += RegData; + TmpUlong |= BIT_31; - CSR_WRITE_4(sc, RE_MCUACCESS, TmpUlong); + CSR_WRITE_4(sc, RE_MCUACCESS, TmpUlong); } -u_int16_t MP_ReadMcuAccessRegWord( - struct re_softc* sc, - u_int16_t ExtRegAddr) +u_int16_t re_mac_ocp_read( + struct re_softc *sc, + u_int16_t ExtRegAddr) { - u_int32_t TmpUlong; - u_int16_t RetVal = 0xffff; + u_int32_t TmpUlong; + u_int16_t RetVal; - TmpUlong = ExtRegAddr / 2; - TmpUlong <<= 16; + TmpUlong = ExtRegAddr / 2; + TmpUlong <<= 16; - CSR_WRITE_4(sc, RE_MCUACCESS, TmpUlong); - TmpUlong = CSR_READ_4(sc, RE_MCUACCESS); - RetVal = (u_int16_t)TmpUlong; + CSR_WRITE_4(sc, RE_MCUACCESS, TmpUlong); + TmpUlong = CSR_READ_4(sc, RE_MCUACCESS); + RetVal = (u_int16_t)TmpUlong; - return RetVal; + return RetVal; } -static u_int32_t real_ocp_read(struct re_softc* sc, u_int16_t addr, u_int8_t len) +static u_int32_t real_ocp_read(struct re_softc *sc, u_int16_t addr, u_int8_t len) { - int i, val_shift, shift = 0; - u_int32_t value1 = 0, value2 = 0, mask; + int i, val_shift, shift = 0; + u_int32_t value1 = 0, value2 = 0, mask; - if (len > 4 || len <= 0) - return -1; + if (len > 4 || len <= 0) + return -1; - while (len > 0) { - val_shift = addr % 4; - addr = addr & ~0x3; + while (len > 0) { + val_shift = addr % 4; + addr = addr & ~0x3; - CSR_WRITE_4(sc, RE_OCPAR, (0x0F << 12) | (addr & 0xFFF)); + CSR_WRITE_4(sc, RE_OCPAR, (0x0F<<12) | (addr&0xFFF)); - for (i = 0; i < 20; i++) { - DELAY(100); - if (CSR_READ_4(sc, RE_OCPAR) & OCPAR_Flag) - break; - } + for (i = 0; i < 20; i++) { + DELAY(100); + if (CSR_READ_4(sc, RE_OCPAR) & OCPAR_Flag) + break; + } - if (len == 1) mask = (0xFF << (val_shift * 8)) & 0xFFFFFFFF; - else if (len == 2) mask = (0xFFFF << (val_shift * 8)) & 0xFFFFFFFF; - else if (len == 3) mask = (0xFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; - else mask = (0xFFFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; + if (len == 1) mask = (0xFF << (val_shift * 8)) & 0xFFFFFFFF; + else if (len == 2) mask = (0xFFFF << (val_shift * 8)) & 0xFFFFFFFF; + else if (len == 3) mask = (0xFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; + else mask = (0xFFFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; - value1 = CSR_READ_4(sc, RE_OCPDR) & mask; - value2 |= (value1 >> val_shift * 8) << shift * 8; + value1 = CSR_READ_4(sc, RE_OCPDR) & mask; + value2 |= (value1 >> val_shift * 8) << shift * 8; - if (len <= 4 - val_shift) { - len = 0; - } - else { - len -= (4 - val_shift); - shift = 4 - val_shift; - addr += 4; + if (len <= 4 - val_shift) { + len = 0; + } else { + len -= (4 - val_shift); + shift = 4 - val_shift; + addr += 4; + } } - } - DELAY(20); + DELAY(20); - return value2; + return value2; } -static u_int32_t OCP_read_with_oob_base_address(struct re_softc* sc, u_int16_t addr, u_int8_t len, const u_int32_t base_address) +static u_int32_t re_ocp_read_with_oob_base_address(struct re_softc *sc, u_int16_t addr, u_int8_t len, const u_int32_t base_address) { - return re_eri_read_with_oob_base_address(sc, addr, len, ERIAR_OOB, base_address); + return re_eri_read_with_oob_base_address(sc, addr, len, ERIAR_OOB, base_address); } -static u_int32_t OCP_read(struct re_softc* sc, u_int16_t addr, u_int8_t len) +static u_int32_t re_ocp_read(struct re_softc *sc, u_int16_t addr, u_int8_t len) { - u_int32_t value = 0; + u_int32_t value = 0; - if (HW_DASH_SUPPORT_TYPE_2(sc)) - value = re_eri_read(sc, addr, len, ERIAR_OOB); - else if (HW_DASH_SUPPORT_TYPE_3(sc)) - value = OCP_read_with_oob_base_address(sc, addr, len, RTL8168FP_OOBMAC_BASE); - else - value = real_ocp_read(sc, addr, len); + if (!sc->AllowAccessDashOcp) + return 0xffffffff; - return value; + if (sc->HwSuppOcpChannelVer == 1) + value = real_ocp_read(sc, addr, len); + else if (sc->HwSuppOcpChannelVer == 2) + value = re_eri_read(sc, addr, len, ERIAR_OOB); + else if (sc->HwSuppOcpChannelVer == 3) + value = re_ocp_read_with_oob_base_address(sc, addr, len, RTL8168FP_OOBMAC_BASE); + + return value; } -static int real_ocp_write(struct re_softc* sc, u_int16_t addr, u_int8_t len, u_int32_t value) +static int real_ocp_write(struct re_softc *sc, u_int16_t addr, u_int8_t len, u_int32_t value) { - int i, val_shift, shift = 0; - u_int32_t value1 = 0, mask; + int i, val_shift, shift = 0; + u_int32_t value1 = 0, mask; - if (len > 4 || len <= 0) - return -1; + if (len > 4 || len <= 0) + return -1; - while (len > 0) { - val_shift = addr % 4; - addr = addr & ~0x3; + while (len > 0) { + val_shift = addr % 4; + addr = addr & ~0x3; - if (len == 1) mask = (0xFF << (val_shift * 8)) & 0xFFFFFFFF; - else if (len == 2) mask = (0xFFFF << (val_shift * 8)) & 0xFFFFFFFF; - else if (len == 3) mask = (0xFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; - else mask = (0xFFFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; + if (len == 1) mask = (0xFF << (val_shift * 8)) & 0xFFFFFFFF; + else if (len == 2) mask = (0xFFFF << (val_shift * 8)) & 0xFFFFFFFF; + else if (len == 3) mask = (0xFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; + else mask = (0xFFFFFFFF << (val_shift * 8)) & 0xFFFFFFFF; - value1 = OCP_read(sc, addr, 4) & ~mask; - value1 |= ((value << val_shift * 8) >> shift * 8); + value1 = re_ocp_read(sc, addr, 4) & ~mask; + value1 |= ((value << val_shift * 8) >> shift * 8); - CSR_WRITE_4(sc, RE_OCPDR, value1); - CSR_WRITE_4(sc, RE_OCPAR, OCPAR_Flag | (0x0F << 12) | (addr & 0xFFF)); + CSR_WRITE_4(sc, RE_OCPDR, value1); + CSR_WRITE_4(sc, RE_OCPAR, OCPAR_Flag | (0x0F<<12) | (addr&0xFFF)); - for (i = 0; i < 10; i++) { - DELAY(100); + for (i = 0; i < 10; i++) { + DELAY(100); - /* Check if the RTL8168 has completed ERI write */ - if (!(CSR_READ_4(sc, RE_OCPAR) & OCPAR_Flag)) - break; + /* Check if the RTL8168 has completed ERI write */ + if (!(CSR_READ_4(sc, RE_OCPAR) & OCPAR_Flag)) + break; + } + + if (len <= 4 - val_shift) { + len = 0; + } else { + len -= (4 - val_shift); + shift = 4 - val_shift; + addr += 4; + } } - if (len <= 4 - val_shift) { - len = 0; + DELAY(20); + + return 0; +} + +static int re_ocp_write_with_oob_base_address(struct re_softc *sc, u_int16_t addr, u_int8_t len, u_int32_t value, const u_int32_t base_address) +{ + return re_eri_write_with_oob_base_address(sc, addr, len, value, ERIAR_OOB, base_address); +} + +static void re_ocp_write(struct re_softc *sc, u_int16_t addr, u_int8_t len, u_int32_t value) +{ + if (!sc->AllowAccessDashOcp) + return; + + if (sc->HwSuppOcpChannelVer == 1) + real_ocp_write(sc, addr, len, value); + else if (sc->HwSuppOcpChannelVer == 2) + re_eri_write(sc, addr, len, value, ERIAR_OOB); + else if (sc->HwSuppOcpChannelVer == 3) + re_ocp_write_with_oob_base_address(sc, addr, len, value, RTL8168FP_OOBMAC_BASE); +} + +static void OOB_mutex_lock(struct re_softc *sc) +{ + u_int8_t reg_16, reg_a0; + u_int32_t wait_cnt_0, wait_Cnt_1; + u_int16_t ocp_reg_mutex_ib; + u_int16_t ocp_reg_mutex_oob; + u_int16_t ocp_reg_mutex_prio; + + if (!sc->re_dash) + return; + + switch (sc->re_type) { + case MACFG_63: + case MACFG_64: + case MACFG_65: + ocp_reg_mutex_oob = 0x16; + ocp_reg_mutex_ib = 0x17; + ocp_reg_mutex_prio = 0x9C; + break; + case MACFG_66: + ocp_reg_mutex_oob = 0x06; + ocp_reg_mutex_ib = 0x07; + ocp_reg_mutex_prio = 0x9C; + break; + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_80: + case MACFG_81: + case MACFG_84: + case MACFG_85: + ocp_reg_mutex_oob = 0x110; + ocp_reg_mutex_ib = 0x114; + ocp_reg_mutex_prio = 0x11C; + break; + default: + return; } - else { - len -= (4 - val_shift); - shift = 4 - val_shift; - addr += 4; + + re_ocp_write(sc, ocp_reg_mutex_ib, 1, BIT_0); + reg_16 = re_ocp_read(sc, ocp_reg_mutex_oob, 1); + wait_cnt_0 = 0; + while(reg_16) { + reg_a0 = re_ocp_read(sc, ocp_reg_mutex_prio, 1); + if (reg_a0) { + re_ocp_write(sc, ocp_reg_mutex_ib, 1, 0x00); + reg_a0 = re_ocp_read(sc, ocp_reg_mutex_prio, 1); + wait_Cnt_1 = 0; + while(reg_a0) { + reg_a0 = re_ocp_read(sc, ocp_reg_mutex_prio, 1); + + wait_Cnt_1++; + + if (wait_Cnt_1 > 2000) + break; + }; + re_ocp_write(sc, ocp_reg_mutex_ib, 1, BIT_0); + + } + reg_16 = re_ocp_read(sc, ocp_reg_mutex_oob, 1); + + wait_cnt_0++; + + if (wait_cnt_0 > 2000) + break; + }; +} + +static void OOB_mutex_unlock(struct re_softc *sc) +{ + u_int16_t ocp_reg_mutex_ib; + u_int16_t ocp_reg_mutex_prio; + + if (!sc->re_dash) + return; + + switch (sc->re_type) { + case MACFG_63: + case MACFG_64: + case MACFG_65: + ocp_reg_mutex_ib = 0x17; + ocp_reg_mutex_prio = 0x9C; + break; + case MACFG_66: + ocp_reg_mutex_ib = 0x07; + ocp_reg_mutex_prio = 0x9C; + break; + case MACFG_61: + case MACFG_62: + case MACFG_67: + case MACFG_70: + case MACFG_71: + case MACFG_72: + case MACFG_73: + case MACFG_80: + case MACFG_81: + case MACFG_84: + case MACFG_85: + ocp_reg_mutex_ib = 0x114; + ocp_reg_mutex_prio = 0x11C; + break; + default: + return; } - } - DELAY(20); + re_ocp_write(sc, ocp_reg_mutex_prio, 1, BIT_0); + re_ocp_write(sc, ocp_reg_mutex_ib, 1, 0x00); +} - return 0; +static u_int32_t re_get_dash_fw_ver(struct re_softc *sc) +{ + if (HW_DASH_SUPPORT_GET_FIRMWARE_VERSION(sc)) + return re_ocp_read(sc, OCP_REG_FIRMWARE_MAJOR_VERSION, 4); + else + return 0xffffffff; } -static int OCP_write_with_oob_base_address(struct re_softc* sc, u_int16_t addr, u_int8_t len, u_int32_t value, const u_int32_t base_address) +static int _re_check_dash(struct re_softc *sc) { - return re_eri_write_with_oob_base_address(sc, addr, len, value, ERIAR_OOB, base_address); + if (HW_DASH_SUPPORT_DASH(sc) == FALSE) + return 0; + + if (!sc->AllowAccessDashOcp) + return 0; + + if (HW_DASH_SUPPORT_TYPE_2(sc) || HW_DASH_SUPPORT_TYPE_3(sc) || + HW_DASH_SUPPORT_TYPE_4(sc)) { + return !!(re_ocp_read(sc, 0x128, 1) & BIT_0); + } else if (HW_DASH_SUPPORT_TYPE_1(sc)) { + if (sc->re_type == MACFG_66) + return !!(re_ocp_read(sc, 0xb8, 2) & BIT_15); + else + return !!(re_ocp_read(sc, 0x10, 2) & BIT_15); + } + + return 0; } -static void OCP_write(struct re_softc* sc, u_int16_t addr, u_int8_t len, u_int32_t value) +static int re_check_dash(struct re_softc *sc) { - if (HW_DASH_SUPPORT_TYPE_2(sc)) - re_eri_write(sc, addr, len, value, ERIAR_OOB); - else if (HW_DASH_SUPPORT_TYPE_3(sc)) - OCP_write_with_oob_base_address(sc, addr, len, value, RTL8168FP_OOBMAC_BASE); - else - real_ocp_write(sc, addr, len, value); + if (_re_check_dash(sc)) { + u_int32_t ver = re_get_dash_fw_ver(sc); + sc->re_dash_fw_ver = ver; + if (!(ver == 0 || ver == 0xffffffff)) + return 1; + } + + return 0; } -static void OOB_mutex_lock(struct re_softc* sc) +static void re_wait_dash_fw_ready(struct re_softc *sc) { - u_int8_t reg_16, reg_a0; - u_int32_t wait_cnt_0, wait_Cnt_1; - u_int16_t ocp_reg_mutex_ib; - u_int16_t ocp_reg_mutex_oob; - u_int16_t ocp_reg_mutex_prio; + int timeout; - switch (sc->re_type) { - case MACFG_63: - case MACFG_64: - case MACFG_65: - ocp_reg_mutex_oob = 0x16; - ocp_reg_mutex_ib = 0x17; - ocp_reg_mutex_prio = 0x9C; - break; - case MACFG_66: - ocp_reg_mutex_oob = 0x06; - ocp_reg_mutex_ib = 0x07; - ocp_reg_mutex_prio = 0x9C; - break; - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - default: - ocp_reg_mutex_oob = 0x110; - ocp_reg_mutex_ib = 0x114; - ocp_reg_mutex_prio = 0x11C; - break; - } - - OCP_write(sc, ocp_reg_mutex_ib, 1, BIT_0); - reg_16 = OCP_read(sc, ocp_reg_mutex_oob, 1); - wait_cnt_0 = 0; - while (reg_16) { - reg_a0 = OCP_read(sc, ocp_reg_mutex_prio, 1); - if (reg_a0) { - OCP_write(sc, ocp_reg_mutex_ib, 1, 0x00); - reg_a0 = OCP_read(sc, ocp_reg_mutex_prio, 1); - wait_Cnt_1 = 0; - while (reg_a0) { - reg_a0 = OCP_read(sc, ocp_reg_mutex_prio, 1); - - wait_Cnt_1++; - - if (wait_Cnt_1 > 2000) - break; - }; - OCP_write(sc, ocp_reg_mutex_ib, 1, BIT_0); + if (!HW_DASH_SUPPORT_DASH(sc)) + return; + if (!sc->re_dash) + return; + + if (HW_DASH_SUPPORT_TYPE_2(sc) || HW_DASH_SUPPORT_TYPE_3(sc) || + HW_DASH_SUPPORT_TYPE_4(sc)) { + for (timeout = 0; timeout < 10; timeout++) { + DELAY(10000); + if (re_ocp_read(sc, 0x124, 1) & BIT_0) + break; + } + } else { + u_int32_t reg; + + if (sc->re_type == MACFG_66) + reg = 0xB8; + else + reg = 0x10; + + for (timeout = 0; timeout < 10; timeout++) { + DELAY(10000); + if (re_ocp_read(sc, reg, 2) & BIT_11) + break; + } } - reg_16 = OCP_read(sc, ocp_reg_mutex_oob, 1); +} + +static void re_notify_dash_oob_dp(struct re_softc *sc, u_int32_t cmd) +{ + if (!HW_DASH_SUPPORT_TYPE_1(sc)) + return; - wait_cnt_0++; + if (sc->re_type == MACFG_66 && cmd == OOB_CMD_DRIVER_START) + CSR_WRITE_1(sc, RE_TwiCmdReg, CSR_READ_1(sc, RE_TwiCmdReg) | BIT_7); - if (wait_cnt_0 > 2000) - break; - }; + re_eri_write(sc, 0xE8, 1, (u_int8_t)cmd, ERIAR_ExGMAC); + + re_ocp_write(sc, 0x30, 1, 0x01); + + if (sc->re_type == MACFG_66 && cmd == OOB_CMD_DRIVER_STOP) + CSR_WRITE_1(sc, RE_TwiCmdReg, CSR_READ_1(sc, RE_TwiCmdReg) & ~BIT_7); } -static void OOB_mutex_unlock(struct re_softc* sc) +static void re_notify_dash_oob_cmac(struct re_softc *sc, u_int32_t cmd) { - u_int16_t ocp_reg_mutex_ib; - u_int16_t ocp_reg_mutex_prio; + if (!HW_DASH_SUPPORT_CMAC(sc)) + return; - switch (sc->re_type) { - case MACFG_63: - case MACFG_64: - case MACFG_65: - ocp_reg_mutex_ib = 0x17; - ocp_reg_mutex_prio = 0x9C; - break; - case MACFG_66: - ocp_reg_mutex_ib = 0x07; - ocp_reg_mutex_prio = 0x9C; - break; - case MACFG_61: - case MACFG_62: - case MACFG_67: - case MACFG_70: - case MACFG_71: - case MACFG_72: - case MACFG_73: - default: - ocp_reg_mutex_ib = 0x114; - ocp_reg_mutex_prio = 0x11C; - break; - } + re_ocp_write(sc, 0x180, 1, cmd); + re_ocp_write(sc, 0x30, 1, re_ocp_read(sc, 0x30, 1) | BIT_0); +} - OCP_write(sc, ocp_reg_mutex_prio, 1, BIT_0); - OCP_write(sc, ocp_reg_mutex_ib, 1, 0x00); +static void re_notify_dash_oob_ipc2(struct re_softc *sc, u_int32_t cmd) +{ + if (!HW_DASH_SUPPORT_IPC2(sc)) + return; + + re_ocp_write(sc, RE_IB2SOC_DATA, 4, cmd); + re_ocp_write(sc, RE_IB2SOC_CMD, 4, 0x00); + re_ocp_write(sc, RE_IB2SOC_SET, 4, 0x01); } -static int re_check_dash(struct re_softc* sc) +static void re_notify_dash_oob(struct re_softc *sc, u_int32_t cmd) { - if (HW_DASH_SUPPORT_DASH(sc) == FALSE) - return 0; + switch (sc->HwSuppDashVer) { + case 1: + return re_notify_dash_oob_dp(sc, cmd); + case 2: + case 3: + return re_notify_dash_oob_cmac(sc, cmd); + case 4: + return re_notify_dash_oob_ipc2(sc, cmd); + default: + return; + } +} - if (HW_DASH_SUPPORT_TYPE_2(sc) || HW_DASH_SUPPORT_TYPE_3(sc)) { - return !!(OCP_read(sc, 0x128, 1) & BIT_0); - } - else if (HW_DASH_SUPPORT_TYPE_1(sc)) { - if (sc->re_type == MACFG_66) - return !!(OCP_read(sc, 0xb8, 2) & BIT_15); - else - return !!(OCP_read(sc, 0x10, 2) & BIT_15); - } +#ifndef _WIN32 + +void re_driver_start(struct re_softc *sc) +{ + if (!HW_DASH_SUPPORT_DASH(sc)) + return; - return 0; + if (!sc->AllowAccessDashOcp) + return; + + re_notify_dash_oob(sc, OOB_CMD_DRIVER_START); + + re_wait_dash_fw_ready(sc); } -static void OOB_notify(struct re_softc* sc, u_int8_t cmd) +void re_driver_stop(struct re_softc *sc) { - int i; + if (!HW_DASH_SUPPORT_DASH(sc)) + return; - CSR_WRITE_1(sc, RE_ERIDR, cmd); - CSR_WRITE_4(sc, RE_ERIAR, 0x800010E8); - DELAY(2000); - for (i = 0; i < 5; i++) { - DELAY(100); - if (!(CSR_READ_4(sc, RE_ERIAR) & ERIAR_Flag)) - break; - } + if (!sc->AllowAccessDashOcp) + return; + + re_notify_dash_oob(sc, OOB_CMD_DRIVER_STOP); - OCP_write(sc, 0x30, 1, 0x01); + re_wait_dash_fw_ready(sc); } +#endif // !_WIN32 + /*----------------------------------------------------------------------------*/ /* 8139 (CR9346) 9346 command register bits (offset 0x50, 1 byte)*/ /*----------------------------------------------------------------------------*/ @@ -32125,119 +38991,120 @@ static void OOB_notify(struct re_softc* sc, u_int8_t cmd) /* * Shift out bit(s) to the EEPROM. */ -static void re_eeprom_ShiftOutBits(struct re_softc* sc, int data, int count) +static void re_eeprom_ShiftOutBits(struct re_softc *sc, int data, int count) { - u_int16_t x, mask; + u_int16_t x, mask; - mask = 0x01 << (count - 1); - x = CSR_READ_1(sc, RE_EECMD); + mask = 0x01 << (count - 1); + x = CSR_READ_1(sc, RE_EECMD); - x &= ~(EEDO | EEDI); + x &= ~(EEDO | EEDI); - do { - x &= ~EEDI; - if (data & mask) - x |= EEDI; + do { + x &= ~EEDI; + if (data & mask) + x |= EEDI; - CSR_WRITE_1(sc, RE_EECMD, x); - DELAY(CLOCK_RATE); - RaiseClock(sc, x); - LowerClock(sc, x); - mask = mask >> 1; - } while (mask); + CSR_WRITE_1(sc, RE_EECMD, x); + DELAY(CLOCK_RATE); + RaiseClock(sc,x); + LowerClock(sc,x); + mask = mask >> 1; + } while (mask); - x &= ~EEDI; - CSR_WRITE_1(sc, RE_EECMD, x); + x &= ~EEDI; + CSR_WRITE_1(sc, RE_EECMD, x); } /* * Shift in bit(s) from the EEPROM. */ -static u_int16_t re_eeprom_ShiftInBits(struct re_softc* sc) +static u_int16_t re_eeprom_ShiftInBits(struct re_softc *sc) { - u_int16_t x, d, i; - x = CSR_READ_1(sc, RE_EECMD); + u_int16_t x,d,i; + x = CSR_READ_1(sc, RE_EECMD); - x &= ~(EEDO | EEDI); - d = 0; + x &= ~(EEDO | EEDI); + d = 0; - for (i = 0; i < 16; i++) { - d = d << 1; - RaiseClock(sc, x); + for (i=0; i<16; i++) { + d = d << 1; + RaiseClock(sc, x); - x = CSR_READ_1(sc, RE_EECMD); + x = CSR_READ_1(sc, RE_EECMD); - x &= ~(EEDI); - if (x & EEDO) - d |= 1; + x &= ~(EEDI); + if (x & EEDO) + d |= 1; - LowerClock(sc, x); - } + LowerClock(sc, x); + } - return d; + return d; } /* * Clean up EEprom read/write setting */ -static void re_eeprom_EEpromCleanup(struct re_softc* sc) +static void re_eeprom_EEpromCleanup(struct re_softc *sc) { - u_int16_t x; - x = CSR_READ_1(sc, RE_EECMD); + u_int16_t x; + x = CSR_READ_1(sc, RE_EECMD); - x &= ~(EECS | EEDI); - CSR_WRITE_1(sc, RE_EECMD, x); + x &= ~(EECS | EEDI); + CSR_WRITE_1(sc, RE_EECMD, x); - RaiseClock(sc, x); - LowerClock(sc, x); + RaiseClock(sc, x); + LowerClock(sc, x); } /* * Read a word of data stored in the EEPROM at address 'addr.' */ -static void re_eeprom_getword(struct re_softc* sc, int addr, u_int16_t* dest) +static void re_eeprom_getword(struct re_softc *sc, int addr, u_int16_t *dest) { - u_int16_t x; + u_int16_t x; - /* select EEPROM, reset bits, set EECS*/ - x = CSR_READ_1(sc, RE_EECMD); + /* select EEPROM, reset bits, set EECS*/ + x = CSR_READ_1(sc, RE_EECMD); - x &= ~(EEDI | EEDO | EESK | CR9346_EEM0); - x |= CR9346_EEM1 | EECS; - CSR_WRITE_1(sc, RE_EECMD, x); + x &= ~(EEDI | EEDO | EESK | CR9346_EEM0); + x |= CR9346_EEM1 | EECS; + CSR_WRITE_1(sc, RE_EECMD, x); - /* write the read opcode and register number in that order*/ - /* The opcode is 3bits in length, reg is 6 bits long*/ - re_eeprom_ShiftOutBits(sc, EEPROM_READ_OPCODE, 3); + /* write the read opcode and register number in that order*/ + /* The opcode is 3bits in length, reg is 6 bits long*/ + re_eeprom_ShiftOutBits(sc, EEPROM_READ_OPCODE, 3); - if (CSR_READ_4(sc, RE_RXCFG) & RE_RXCFG_RX_9356SEL) - re_eeprom_ShiftOutBits(sc, addr, 8); /*93c56=8*/ - else - re_eeprom_ShiftOutBits(sc, addr, 6); /*93c46=6*/ + if (CSR_READ_4(sc, RE_RXCFG) & RE_RXCFG_RX_9356SEL) + re_eeprom_ShiftOutBits(sc, addr,8); /*93c56=8*/ + else + re_eeprom_ShiftOutBits(sc, addr,6); /*93c46=6*/ - /* Now read the data (16 bits) in from the selected EEPROM word*/ - *dest = re_eeprom_ShiftInBits(sc); + /* Now read the data (16 bits) in from the selected EEPROM word*/ + *dest=re_eeprom_ShiftInBits(sc); - re_eeprom_EEpromCleanup(sc); - return; + re_eeprom_EEpromCleanup(sc); + return; } /* * Read a sequence of words from the EEPROM. */ -static void re_read_eeprom(struct re_softc* sc, caddr_t dest, int off, int cnt, int swap) +static void re_read_eeprom(struct re_softc *sc, caddr_t dest, int off, int cnt, + int swap) { - int i; - u_int16_t word = 0, * ptr; - - for (i = 0; i < cnt; i++) { - re_eeprom_getword(sc, off + i, &word); - ptr = (u_int16_t*)(dest + (i * 2)); - if (swap) - *ptr = ntohs(word); - else - *ptr = word; - } + int i; + u_int16_t word = 0, *ptr; + + for (i = 0; i < cnt; i++) { + re_eeprom_getword(sc, off + i, &word); + ptr = (u_int16_t *)(dest + (i * 2)); + if (swap) + *ptr = ntohs(word); + else + *ptr = word; + } - return; -} \ No newline at end of file + return; +} diff --git a/rxqueue.cpp b/rxqueue.cpp index a94f1e6..f03b661 100644 --- a/rxqueue.cpp +++ b/rxqueue.cpp @@ -297,7 +297,7 @@ RxSlideBuffers( RtPostRxDescriptor(&rx->RxdBase[RxDescIdx], NetExtensionGetFragmentLogicalAddress(&rx->LogicalAddressExtension, index), - RxDescIdx == (rx->NumRxDesc - 1)); + RxDescIdx == (rx->NumRxDesc - 1u)); index = NetRingIncrementIndex(fr, index); } while (index != 0); @@ -319,7 +319,7 @@ RxPostBuffers( RtPostRxDescriptor(&rx->RxdBase[RxDescIdx], NetExtensionGetFragmentLogicalAddress(&rx->LogicalAddressExtension, index), - RxDescIdx == (rx->NumRxDesc - 1)); + RxDescIdx == (rx->NumRxDesc - 1u)); fr->NextIndex = NetRingIncrementIndex(fr, fr->NextIndex); } diff --git a/txqueue.cpp b/txqueue.cpp index fed96ab..5993050 100644 --- a/txqueue.cpp +++ b/txqueue.cpp @@ -634,6 +634,7 @@ EvtTxQueueCancel( TraceEntry(TraceLoggingPointer(txQueue, "TxQueue")); RT_TXQUEUE* tx = RtGetTxQueueContext(txQueue); + (void)tx; // // If the chipset is able to cancel outstanding IOs, then it should do so