mbed library sources
Fork of mbed-src by
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/common/phyksz8081/fsl_phy_driver.c@168:cf9372ac0a74, 2014-04-24 (annotated)
- Committer:
- mbed_official
- Date:
- Thu Apr 24 10:45:06 2014 +0100
- Revision:
- 168:cf9372ac0a74
Synchronized with git revision 94fd2228fb4a382fb98d0115f6691fc0b659eea8
Full URL: https://github.com/mbedmicro/mbed/commit/94fd2228fb4a382fb98d0115f6691fc0b659eea8/
Currently NET_7 (HttpClient test) and NET_8 (NTP test) fail for
unknown reasons.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbed_official | 168:cf9372ac0a74 | 1 | /* |
mbed_official | 168:cf9372ac0a74 | 2 | * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. |
mbed_official | 168:cf9372ac0a74 | 3 | * All rights reserved. |
mbed_official | 168:cf9372ac0a74 | 4 | * |
mbed_official | 168:cf9372ac0a74 | 5 | * Redistribution and use in source and binary forms, with or without modification, |
mbed_official | 168:cf9372ac0a74 | 6 | * are permitted provided that the following conditions are met: |
mbed_official | 168:cf9372ac0a74 | 7 | * |
mbed_official | 168:cf9372ac0a74 | 8 | * o Redistributions of source code must retain the above copyright notice, this list |
mbed_official | 168:cf9372ac0a74 | 9 | * of conditions and the following disclaimer. |
mbed_official | 168:cf9372ac0a74 | 10 | * |
mbed_official | 168:cf9372ac0a74 | 11 | * o Redistributions in binary form must reproduce the above copyright notice, this |
mbed_official | 168:cf9372ac0a74 | 12 | * list of conditions and the following disclaimer in the documentation and/or |
mbed_official | 168:cf9372ac0a74 | 13 | * other materials provided with the distribution. |
mbed_official | 168:cf9372ac0a74 | 14 | * |
mbed_official | 168:cf9372ac0a74 | 15 | * o Neither the name of Freescale Semiconductor, Inc. nor the names of its |
mbed_official | 168:cf9372ac0a74 | 16 | * contributors may be used to endorse or promote products derived from this |
mbed_official | 168:cf9372ac0a74 | 17 | * software without specific prior written permission. |
mbed_official | 168:cf9372ac0a74 | 18 | * |
mbed_official | 168:cf9372ac0a74 | 19 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
mbed_official | 168:cf9372ac0a74 | 20 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
mbed_official | 168:cf9372ac0a74 | 21 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
mbed_official | 168:cf9372ac0a74 | 22 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR |
mbed_official | 168:cf9372ac0a74 | 23 | * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
mbed_official | 168:cf9372ac0a74 | 24 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
mbed_official | 168:cf9372ac0a74 | 25 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
mbed_official | 168:cf9372ac0a74 | 26 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
mbed_official | 168:cf9372ac0a74 | 27 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
mbed_official | 168:cf9372ac0a74 | 28 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
mbed_official | 168:cf9372ac0a74 | 29 | */ |
mbed_official | 168:cf9372ac0a74 | 30 | |
mbed_official | 168:cf9372ac0a74 | 31 | #include "fsl_phy_driver.h" |
mbed_official | 168:cf9372ac0a74 | 32 | |
mbed_official | 168:cf9372ac0a74 | 33 | /******************************************************************************* |
mbed_official | 168:cf9372ac0a74 | 34 | * Variables |
mbed_official | 168:cf9372ac0a74 | 35 | ******************************************************************************/ |
mbed_official | 168:cf9372ac0a74 | 36 | |
mbed_official | 168:cf9372ac0a74 | 37 | /*! @brief Define Phy API structure for MAC application*/ |
mbed_official | 168:cf9372ac0a74 | 38 | const enet_phy_api_t g_enetPhyApi = |
mbed_official | 168:cf9372ac0a74 | 39 | { |
mbed_official | 168:cf9372ac0a74 | 40 | phy_auto_discover, |
mbed_official | 168:cf9372ac0a74 | 41 | phy_init, |
mbed_official | 168:cf9372ac0a74 | 42 | phy_get_link_speed, |
mbed_official | 168:cf9372ac0a74 | 43 | phy_get_link_status, |
mbed_official | 168:cf9372ac0a74 | 44 | phy_get_link_duplex, |
mbed_official | 168:cf9372ac0a74 | 45 | }; |
mbed_official | 168:cf9372ac0a74 | 46 | /******************************************************************************* |
mbed_official | 168:cf9372ac0a74 | 47 | * Code |
mbed_official | 168:cf9372ac0a74 | 48 | ******************************************************************************/ |
mbed_official | 168:cf9372ac0a74 | 49 | /*FUNCTION**************************************************************** |
mbed_official | 168:cf9372ac0a74 | 50 | * |
mbed_official | 168:cf9372ac0a74 | 51 | * Function Name: phy_init |
mbed_official | 168:cf9372ac0a74 | 52 | * Return Value: The execution status. |
mbed_official | 168:cf9372ac0a74 | 53 | * Description: Initialize Phy. |
mbed_official | 168:cf9372ac0a74 | 54 | * This interface provides initialize functions for Phy, This is called by enet |
mbed_official | 168:cf9372ac0a74 | 55 | * initialize function. Phy is usually deault auto-negotiation. so there is no |
mbed_official | 168:cf9372ac0a74 | 56 | * need to do the intialize about this. we just need to check the loop mode. |
mbed_official | 168:cf9372ac0a74 | 57 | *END*********************************************************************/ |
mbed_official | 168:cf9372ac0a74 | 58 | uint32_t phy_init(enet_dev_if_t * enetIfPtr) |
mbed_official | 168:cf9372ac0a74 | 59 | { |
mbed_official | 168:cf9372ac0a74 | 60 | uint32_t data; |
mbed_official | 168:cf9372ac0a74 | 61 | uint32_t counter; |
mbed_official | 168:cf9372ac0a74 | 62 | uint32_t result; |
mbed_official | 168:cf9372ac0a74 | 63 | |
mbed_official | 168:cf9372ac0a74 | 64 | /* Check input parameters*/ |
mbed_official | 168:cf9372ac0a74 | 65 | if (!enetIfPtr) |
mbed_official | 168:cf9372ac0a74 | 66 | { |
mbed_official | 168:cf9372ac0a74 | 67 | return kStatus_PHY_InvaildInput; |
mbed_official | 168:cf9372ac0a74 | 68 | } |
mbed_official | 168:cf9372ac0a74 | 69 | |
mbed_official | 168:cf9372ac0a74 | 70 | /* Reset Phy*/ |
mbed_official | 168:cf9372ac0a74 | 71 | if ((result = (enetIfPtr->macApiPtr->enet_mii_read(enetIfPtr->deviceNumber, |
mbed_official | 168:cf9372ac0a74 | 72 | enetIfPtr->phyCfgPtr->phyAddr,kEnetPhySR,&data))) == kStatus_PHY_Success) |
mbed_official | 168:cf9372ac0a74 | 73 | { |
mbed_official | 168:cf9372ac0a74 | 74 | if ((data & kEnetPhyAutoNegAble) != 0) |
mbed_official | 168:cf9372ac0a74 | 75 | { |
mbed_official | 168:cf9372ac0a74 | 76 | /* Set Autonegotiation*/ |
mbed_official | 168:cf9372ac0a74 | 77 | enetIfPtr->macApiPtr->enet_mii_write(enetIfPtr->deviceNumber, |
mbed_official | 168:cf9372ac0a74 | 78 | enetIfPtr->phyCfgPtr->phyAddr, kEnetPhyCR, kEnetPhyAutoNeg); |
mbed_official | 168:cf9372ac0a74 | 79 | for (counter = 0; counter < kPhyTimeout; counter++) |
mbed_official | 168:cf9372ac0a74 | 80 | { |
mbed_official | 168:cf9372ac0a74 | 81 | if (enetIfPtr->macApiPtr->enet_mii_read(enetIfPtr->deviceNumber, |
mbed_official | 168:cf9372ac0a74 | 82 | enetIfPtr->phyCfgPtr->phyAddr,kEnetPhySR,&data)== kStatus_PHY_Success) |
mbed_official | 168:cf9372ac0a74 | 83 | { |
mbed_official | 168:cf9372ac0a74 | 84 | if ((data & kEnetPhyAutoNegComplete) != 0) |
mbed_official | 168:cf9372ac0a74 | 85 | { |
mbed_official | 168:cf9372ac0a74 | 86 | break; |
mbed_official | 168:cf9372ac0a74 | 87 | } |
mbed_official | 168:cf9372ac0a74 | 88 | } |
mbed_official | 168:cf9372ac0a74 | 89 | } |
mbed_official | 168:cf9372ac0a74 | 90 | |
mbed_official | 168:cf9372ac0a74 | 91 | if (counter == kPhyTimeout) |
mbed_official | 168:cf9372ac0a74 | 92 | { |
mbed_official | 168:cf9372ac0a74 | 93 | return kStatus_PHY_TimeOut; |
mbed_official | 168:cf9372ac0a74 | 94 | } |
mbed_official | 168:cf9372ac0a74 | 95 | } |
mbed_official | 168:cf9372ac0a74 | 96 | } |
mbed_official | 168:cf9372ac0a74 | 97 | |
mbed_official | 168:cf9372ac0a74 | 98 | if (enetIfPtr->phyCfgPtr->isLoopEnabled) |
mbed_official | 168:cf9372ac0a74 | 99 | { |
mbed_official | 168:cf9372ac0a74 | 100 | /* First read the current status in control register*/ |
mbed_official | 168:cf9372ac0a74 | 101 | if (enetIfPtr->macApiPtr->enet_mii_read(enetIfPtr->deviceNumber, |
mbed_official | 168:cf9372ac0a74 | 102 | enetIfPtr->phyCfgPtr->phyAddr,kEnetPhyCR,&data)) |
mbed_official | 168:cf9372ac0a74 | 103 | { |
mbed_official | 168:cf9372ac0a74 | 104 | result = enetIfPtr->macApiPtr->enet_mii_write(enetIfPtr->deviceNumber, |
mbed_official | 168:cf9372ac0a74 | 105 | enetIfPtr->phyCfgPtr->phyAddr,kEnetPhyCR,(data|kEnetPhyLoop)); |
mbed_official | 168:cf9372ac0a74 | 106 | } |
mbed_official | 168:cf9372ac0a74 | 107 | } |
mbed_official | 168:cf9372ac0a74 | 108 | |
mbed_official | 168:cf9372ac0a74 | 109 | return result; |
mbed_official | 168:cf9372ac0a74 | 110 | } |
mbed_official | 168:cf9372ac0a74 | 111 | |
mbed_official | 168:cf9372ac0a74 | 112 | /*FUNCTION**************************************************************** |
mbed_official | 168:cf9372ac0a74 | 113 | * |
mbed_official | 168:cf9372ac0a74 | 114 | * Function Name: phy_auto_discover |
mbed_official | 168:cf9372ac0a74 | 115 | * Return Value: The execution status. |
mbed_official | 168:cf9372ac0a74 | 116 | * Description: Phy address auto discover. |
mbed_official | 168:cf9372ac0a74 | 117 | * This function provides a interface to get phy address using phy address auto |
mbed_official | 168:cf9372ac0a74 | 118 | * discovering, this interface is used when the phy address is unknown. |
mbed_official | 168:cf9372ac0a74 | 119 | *END*********************************************************************/ |
mbed_official | 168:cf9372ac0a74 | 120 | uint32_t phy_auto_discover(enet_dev_if_t * enetIfPtr) |
mbed_official | 168:cf9372ac0a74 | 121 | { |
mbed_official | 168:cf9372ac0a74 | 122 | uint32_t addrIdx,data; |
mbed_official | 168:cf9372ac0a74 | 123 | uint32_t result = kStatus_PHY_Fail; |
mbed_official | 168:cf9372ac0a74 | 124 | |
mbed_official | 168:cf9372ac0a74 | 125 | /* Check input parameters*/ |
mbed_official | 168:cf9372ac0a74 | 126 | if (!enetIfPtr) |
mbed_official | 168:cf9372ac0a74 | 127 | { |
mbed_official | 168:cf9372ac0a74 | 128 | return kStatus_PHY_InvaildInput; |
mbed_official | 168:cf9372ac0a74 | 129 | } |
mbed_official | 168:cf9372ac0a74 | 130 | |
mbed_official | 168:cf9372ac0a74 | 131 | for (addrIdx = 0; addrIdx < 32; addrIdx++) |
mbed_official | 168:cf9372ac0a74 | 132 | { |
mbed_official | 168:cf9372ac0a74 | 133 | enetIfPtr->phyCfgPtr->phyAddr = addrIdx; |
mbed_official | 168:cf9372ac0a74 | 134 | result = enetIfPtr->macApiPtr->enet_mii_read(enetIfPtr->deviceNumber, |
mbed_official | 168:cf9372ac0a74 | 135 | enetIfPtr->phyCfgPtr->phyAddr,kEnetPhyId1,&data); |
mbed_official | 168:cf9372ac0a74 | 136 | if ((result == kStatus_PHY_Success) && (data != 0) && (data != 0xffff) ) |
mbed_official | 168:cf9372ac0a74 | 137 | { |
mbed_official | 168:cf9372ac0a74 | 138 | return kStatus_PHY_Success; |
mbed_official | 168:cf9372ac0a74 | 139 | } |
mbed_official | 168:cf9372ac0a74 | 140 | } |
mbed_official | 168:cf9372ac0a74 | 141 | |
mbed_official | 168:cf9372ac0a74 | 142 | return result; |
mbed_official | 168:cf9372ac0a74 | 143 | } |
mbed_official | 168:cf9372ac0a74 | 144 | |
mbed_official | 168:cf9372ac0a74 | 145 | /*FUNCTION**************************************************************** |
mbed_official | 168:cf9372ac0a74 | 146 | * |
mbed_official | 168:cf9372ac0a74 | 147 | * Function Name: phy_get_link_speed |
mbed_official | 168:cf9372ac0a74 | 148 | * Return Value: The execution status. |
mbed_official | 168:cf9372ac0a74 | 149 | * Description: Get phy link speed. |
mbed_official | 168:cf9372ac0a74 | 150 | * This function provides a interface to get link speed. |
mbed_official | 168:cf9372ac0a74 | 151 | *END*********************************************************************/ |
mbed_official | 168:cf9372ac0a74 | 152 | uint32_t phy_get_link_speed(enet_dev_if_t * enetIfPtr, enet_phy_speed_t *status) |
mbed_official | 168:cf9372ac0a74 | 153 | { |
mbed_official | 168:cf9372ac0a74 | 154 | uint32_t result = kStatus_PHY_Success; |
mbed_official | 168:cf9372ac0a74 | 155 | uint32_t data; |
mbed_official | 168:cf9372ac0a74 | 156 | |
mbed_official | 168:cf9372ac0a74 | 157 | /* Check input parameters*/ |
mbed_official | 168:cf9372ac0a74 | 158 | if ((!enetIfPtr) || (!status)) |
mbed_official | 168:cf9372ac0a74 | 159 | { |
mbed_official | 168:cf9372ac0a74 | 160 | return kStatus_PHY_InvaildInput; |
mbed_official | 168:cf9372ac0a74 | 161 | } |
mbed_official | 168:cf9372ac0a74 | 162 | |
mbed_official | 168:cf9372ac0a74 | 163 | result = enetIfPtr->macApiPtr->enet_mii_read(enetIfPtr->deviceNumber, |
mbed_official | 168:cf9372ac0a74 | 164 | enetIfPtr->phyCfgPtr->phyAddr, kEnetPhyCt2,&data); |
mbed_official | 168:cf9372ac0a74 | 165 | if (result == kStatus_PHY_Success) |
mbed_official | 168:cf9372ac0a74 | 166 | { |
mbed_official | 168:cf9372ac0a74 | 167 | data &= kEnetPhySpeedDulpexMask; |
mbed_official | 168:cf9372ac0a74 | 168 | if ((kEnetPhy100HalfDuplex == data) || (kEnetPhy100FullDuplex == data)) |
mbed_official | 168:cf9372ac0a74 | 169 | { |
mbed_official | 168:cf9372ac0a74 | 170 | *status = kEnetSpeed100M; |
mbed_official | 168:cf9372ac0a74 | 171 | } |
mbed_official | 168:cf9372ac0a74 | 172 | else |
mbed_official | 168:cf9372ac0a74 | 173 | { |
mbed_official | 168:cf9372ac0a74 | 174 | *status = kEnetSpeed10M; |
mbed_official | 168:cf9372ac0a74 | 175 | } |
mbed_official | 168:cf9372ac0a74 | 176 | } |
mbed_official | 168:cf9372ac0a74 | 177 | |
mbed_official | 168:cf9372ac0a74 | 178 | return result; |
mbed_official | 168:cf9372ac0a74 | 179 | } |
mbed_official | 168:cf9372ac0a74 | 180 | |
mbed_official | 168:cf9372ac0a74 | 181 | /*FUNCTION**************************************************************** |
mbed_official | 168:cf9372ac0a74 | 182 | * |
mbed_official | 168:cf9372ac0a74 | 183 | * Function Name: phy_get_link_status |
mbed_official | 168:cf9372ac0a74 | 184 | * Return Value: The execution status. |
mbed_official | 168:cf9372ac0a74 | 185 | * Description: Get phy link status. |
mbed_official | 168:cf9372ac0a74 | 186 | * This function provides a interface to get link status to see if the link |
mbed_official | 168:cf9372ac0a74 | 187 | * status is on or off. |
mbed_official | 168:cf9372ac0a74 | 188 | *END*********************************************************************/ |
mbed_official | 168:cf9372ac0a74 | 189 | uint32_t phy_get_link_status(enet_dev_if_t * enetIfPtr, bool *status) |
mbed_official | 168:cf9372ac0a74 | 190 | { |
mbed_official | 168:cf9372ac0a74 | 191 | uint32_t result = kStatus_PHY_Success; |
mbed_official | 168:cf9372ac0a74 | 192 | uint32_t data; |
mbed_official | 168:cf9372ac0a74 | 193 | |
mbed_official | 168:cf9372ac0a74 | 194 | /* Check input parameters*/ |
mbed_official | 168:cf9372ac0a74 | 195 | if ((!enetIfPtr) || (!status)) |
mbed_official | 168:cf9372ac0a74 | 196 | { |
mbed_official | 168:cf9372ac0a74 | 197 | return kStatus_PHY_InvaildInput; |
mbed_official | 168:cf9372ac0a74 | 198 | } |
mbed_official | 168:cf9372ac0a74 | 199 | |
mbed_official | 168:cf9372ac0a74 | 200 | result = enetIfPtr->macApiPtr->enet_mii_read(enetIfPtr->deviceNumber, |
mbed_official | 168:cf9372ac0a74 | 201 | enetIfPtr->phyCfgPtr->phyAddr,kEnetPhyCR,&data); |
mbed_official | 168:cf9372ac0a74 | 202 | if ((result == kStatus_PHY_Success) && (!(data & kEnetPhyReset))) |
mbed_official | 168:cf9372ac0a74 | 203 | { |
mbed_official | 168:cf9372ac0a74 | 204 | data = 0; |
mbed_official | 168:cf9372ac0a74 | 205 | result = enetIfPtr->macApiPtr->enet_mii_read(enetIfPtr->deviceNumber, |
mbed_official | 168:cf9372ac0a74 | 206 | enetIfPtr->phyCfgPtr->phyAddr,kEnetPhySR, &data); |
mbed_official | 168:cf9372ac0a74 | 207 | if (result == kStatus_PHY_Success) |
mbed_official | 168:cf9372ac0a74 | 208 | { |
mbed_official | 168:cf9372ac0a74 | 209 | if (!(kEnetPhyLinkStatus & data)) |
mbed_official | 168:cf9372ac0a74 | 210 | { |
mbed_official | 168:cf9372ac0a74 | 211 | *status = false; |
mbed_official | 168:cf9372ac0a74 | 212 | } |
mbed_official | 168:cf9372ac0a74 | 213 | else |
mbed_official | 168:cf9372ac0a74 | 214 | { |
mbed_official | 168:cf9372ac0a74 | 215 | *status = true; |
mbed_official | 168:cf9372ac0a74 | 216 | } |
mbed_official | 168:cf9372ac0a74 | 217 | } |
mbed_official | 168:cf9372ac0a74 | 218 | } |
mbed_official | 168:cf9372ac0a74 | 219 | |
mbed_official | 168:cf9372ac0a74 | 220 | return result; |
mbed_official | 168:cf9372ac0a74 | 221 | } |
mbed_official | 168:cf9372ac0a74 | 222 | |
mbed_official | 168:cf9372ac0a74 | 223 | /*FUNCTION**************************************************************** |
mbed_official | 168:cf9372ac0a74 | 224 | * |
mbed_official | 168:cf9372ac0a74 | 225 | * Function Name: phy_get_link_duplex |
mbed_official | 168:cf9372ac0a74 | 226 | * Return Value: The execution status. |
mbed_official | 168:cf9372ac0a74 | 227 | * Description: Get phy link duplex. |
mbed_official | 168:cf9372ac0a74 | 228 | * This function provides a interface to get link duplex to see if the link |
mbed_official | 168:cf9372ac0a74 | 229 | * duplex is full or half. |
mbed_official | 168:cf9372ac0a74 | 230 | *END*********************************************************************/ |
mbed_official | 168:cf9372ac0a74 | 231 | uint32_t phy_get_link_duplex(enet_dev_if_t * enetIfPtr, enet_phy_duplex_t *status) |
mbed_official | 168:cf9372ac0a74 | 232 | { |
mbed_official | 168:cf9372ac0a74 | 233 | uint32_t result = kStatus_PHY_Success; |
mbed_official | 168:cf9372ac0a74 | 234 | uint32_t data; |
mbed_official | 168:cf9372ac0a74 | 235 | |
mbed_official | 168:cf9372ac0a74 | 236 | /* Check input parameters*/ |
mbed_official | 168:cf9372ac0a74 | 237 | if ((!enetIfPtr) || (!status)) |
mbed_official | 168:cf9372ac0a74 | 238 | { |
mbed_official | 168:cf9372ac0a74 | 239 | return kStatus_PHY_InvaildInput; |
mbed_official | 168:cf9372ac0a74 | 240 | } |
mbed_official | 168:cf9372ac0a74 | 241 | |
mbed_official | 168:cf9372ac0a74 | 242 | result = enetIfPtr->macApiPtr->enet_mii_read(enetIfPtr->deviceNumber, |
mbed_official | 168:cf9372ac0a74 | 243 | enetIfPtr->phyCfgPtr->phyAddr,kEnetPhyCt2,&data); |
mbed_official | 168:cf9372ac0a74 | 244 | if (result == kStatus_PHY_Success) |
mbed_official | 168:cf9372ac0a74 | 245 | { |
mbed_official | 168:cf9372ac0a74 | 246 | data &= kEnetPhySpeedDulpexMask; |
mbed_official | 168:cf9372ac0a74 | 247 | if ((kEnetPhy10FullDuplex == data) || (kEnetPhy100FullDuplex == data)) |
mbed_official | 168:cf9372ac0a74 | 248 | { |
mbed_official | 168:cf9372ac0a74 | 249 | *status = kEnetFullDuplex; |
mbed_official | 168:cf9372ac0a74 | 250 | } |
mbed_official | 168:cf9372ac0a74 | 251 | else |
mbed_official | 168:cf9372ac0a74 | 252 | { |
mbed_official | 168:cf9372ac0a74 | 253 | *status = kEnetHalfDuplex; |
mbed_official | 168:cf9372ac0a74 | 254 | } |
mbed_official | 168:cf9372ac0a74 | 255 | } |
mbed_official | 168:cf9372ac0a74 | 256 | |
mbed_official | 168:cf9372ac0a74 | 257 | return result; |
mbed_official | 168:cf9372ac0a74 | 258 | } |
mbed_official | 168:cf9372ac0a74 | 259 | |
mbed_official | 168:cf9372ac0a74 | 260 | |
mbed_official | 168:cf9372ac0a74 | 261 | /******************************************************************************* |
mbed_official | 168:cf9372ac0a74 | 262 | * EOF |
mbed_official | 168:cf9372ac0a74 | 263 | ******************************************************************************/ |
mbed_official | 168:cf9372ac0a74 | 264 |