mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Thu Apr 03 11:45:06 2014 +0100
Revision:
149:1fb5f62b92bd
Parent:
targets/hal/TARGET_Freescale/TARGET_KSDK_MCUS/TARGET_KSDK_CODE/hal/enet/fsl_enet_hal.c@146:f64d43ff0c18
Child:
204:92d082577917
Synchronized with git revision 220c0bb39ceee40016e1e86350c058963d01ed42

Full URL: https://github.com/mbedmicro/mbed/commit/220c0bb39ceee40016e1e86350c058963d01ed42/

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 146:f64d43ff0c18 1 /*
mbed_official 146:f64d43ff0c18 2 * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc.
mbed_official 146:f64d43ff0c18 3 * All rights reserved.
mbed_official 146:f64d43ff0c18 4 *
mbed_official 146:f64d43ff0c18 5 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 146:f64d43ff0c18 6 * are permitted provided that the following conditions are met:
mbed_official 146:f64d43ff0c18 7 *
mbed_official 146:f64d43ff0c18 8 * o Redistributions of source code must retain the above copyright notice, this list
mbed_official 146:f64d43ff0c18 9 * of conditions and the following disclaimer.
mbed_official 146:f64d43ff0c18 10 *
mbed_official 146:f64d43ff0c18 11 * o Redistributions in binary form must reproduce the above copyright notice, this
mbed_official 146:f64d43ff0c18 12 * list of conditions and the following disclaimer in the documentation and/or
mbed_official 146:f64d43ff0c18 13 * other materials provided with the distribution.
mbed_official 146:f64d43ff0c18 14 *
mbed_official 146:f64d43ff0c18 15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
mbed_official 146:f64d43ff0c18 16 * contributors may be used to endorse or promote products derived from this
mbed_official 146:f64d43ff0c18 17 * software without specific prior written permission.
mbed_official 146:f64d43ff0c18 18 *
mbed_official 146:f64d43ff0c18 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
mbed_official 146:f64d43ff0c18 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
mbed_official 146:f64d43ff0c18 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 146:f64d43ff0c18 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
mbed_official 146:f64d43ff0c18 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
mbed_official 146:f64d43ff0c18 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
mbed_official 146:f64d43ff0c18 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
mbed_official 146:f64d43ff0c18 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
mbed_official 146:f64d43ff0c18 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
mbed_official 146:f64d43ff0c18 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 146:f64d43ff0c18 29 */
mbed_official 146:f64d43ff0c18 30
mbed_official 146:f64d43ff0c18 31 #include "fsl_enet_hal.h"
mbed_official 146:f64d43ff0c18 32
mbed_official 146:f64d43ff0c18 33 /*******************************************************************************
mbed_official 146:f64d43ff0c18 34 * Code
mbed_official 146:f64d43ff0c18 35 ******************************************************************************/
mbed_official 146:f64d43ff0c18 36
mbed_official 146:f64d43ff0c18 37 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 38 *
mbed_official 146:f64d43ff0c18 39 * Function Name: enet_hal_set_mac_address
mbed_official 146:f64d43ff0c18 40 * Description: Set ENET mac physical address.
mbed_official 146:f64d43ff0c18 41 *
mbed_official 146:f64d43ff0c18 42 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 43 void enet_hal_set_mac_address(uint32_t instance, enetMacAddr hwAddr)
mbed_official 146:f64d43ff0c18 44 {
mbed_official 146:f64d43ff0c18 45 assert(instance < HW_ENET_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 46
mbed_official 146:f64d43ff0c18 47 uint32_t address, data;
mbed_official 146:f64d43ff0c18 48
mbed_official 146:f64d43ff0c18 49 address = (uint32_t)(((uint32_t)hwAddr[0] << 24U)|((uint32_t)hwAddr[1] << 16U)|((uint32_t)hwAddr[2] << 8U)| (uint32_t)hwAddr[3]) ;
mbed_official 146:f64d43ff0c18 50 HW_ENET_PALR_WR(instance,address); /* Set low physical address */
mbed_official 146:f64d43ff0c18 51 address = (uint32_t)(((uint32_t)hwAddr[4] << 24U)|((uint32_t)hwAddr[5] << 16U)) ;
mbed_official 146:f64d43ff0c18 52 data = HW_ENET_PAUR_RD(instance) & BM_ENET_PAUR_TYPE;
mbed_official 146:f64d43ff0c18 53 HW_ENET_PAUR_WR(instance, (data | address)); /* Set high physical address */
mbed_official 146:f64d43ff0c18 54 }
mbed_official 146:f64d43ff0c18 55
mbed_official 146:f64d43ff0c18 56 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 57 *
mbed_official 146:f64d43ff0c18 58 * Function Name: enet_hal_set_group_hashtable
mbed_official 146:f64d43ff0c18 59 * Description: Set multicast group address hash value to the mac register
mbed_official 146:f64d43ff0c18 60 * To join the multicast group address.
mbed_official 146:f64d43ff0c18 61 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 62 void enet_hal_set_group_hashtable(uint32_t instance, uint32_t crcValue, enet_special_address_filter_t mode)
mbed_official 146:f64d43ff0c18 63 {
mbed_official 146:f64d43ff0c18 64 assert(instance < HW_ENET_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 65
mbed_official 146:f64d43ff0c18 66 switch (mode)
mbed_official 146:f64d43ff0c18 67 {
mbed_official 146:f64d43ff0c18 68 case kEnetSpecialAddressInit: /* Clear group address register on ENET initialize */
mbed_official 146:f64d43ff0c18 69 HW_ENET_GALR_WR(instance,0);
mbed_official 146:f64d43ff0c18 70 HW_ENET_GAUR_WR(instance,0);
mbed_official 146:f64d43ff0c18 71 break;
mbed_official 146:f64d43ff0c18 72 case kEnetSpecialAddressEnable: /* Enable a multicast group address*/
mbed_official 146:f64d43ff0c18 73 if (!((crcValue >> 31) & 1U))
mbed_official 146:f64d43ff0c18 74 {
mbed_official 146:f64d43ff0c18 75 HW_ENET_GALR_SET(instance,(1U << ((crcValue >> 26) & kEnetHashValMask)));
mbed_official 146:f64d43ff0c18 76 }
mbed_official 146:f64d43ff0c18 77 else
mbed_official 146:f64d43ff0c18 78 {
mbed_official 146:f64d43ff0c18 79 HW_ENET_GAUR_SET(instance,(1U << ((crcValue >> 26) & kEnetHashValMask)));
mbed_official 146:f64d43ff0c18 80 }
mbed_official 146:f64d43ff0c18 81 break;
mbed_official 146:f64d43ff0c18 82 case kEnetSpecialAddressDisable: /* Disable a multicast group address*/
mbed_official 146:f64d43ff0c18 83 if (!((crcValue >> 31) & 1U))
mbed_official 146:f64d43ff0c18 84 {
mbed_official 146:f64d43ff0c18 85 HW_ENET_GALR_CLR(instance,(1U << ((crcValue >> 26) & kEnetHashValMask)));
mbed_official 146:f64d43ff0c18 86 }
mbed_official 146:f64d43ff0c18 87 else
mbed_official 146:f64d43ff0c18 88 {
mbed_official 146:f64d43ff0c18 89 HW_ENET_GAUR_CLR(instance,(1U << ((crcValue>>26) & kEnetHashValMask)));
mbed_official 146:f64d43ff0c18 90 }
mbed_official 146:f64d43ff0c18 91 break;
mbed_official 146:f64d43ff0c18 92 default:
mbed_official 146:f64d43ff0c18 93 break;
mbed_official 146:f64d43ff0c18 94 }
mbed_official 146:f64d43ff0c18 95 }
mbed_official 146:f64d43ff0c18 96
mbed_official 146:f64d43ff0c18 97 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 98 *
mbed_official 146:f64d43ff0c18 99 * Function Name: enet_hal_set_individual_hashtable
mbed_official 146:f64d43ff0c18 100 * Description: Set a specific unicast address hash value to the mac register
mbed_official 146:f64d43ff0c18 101 * To receive frames with the individual destination address.
mbed_official 146:f64d43ff0c18 102 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 103 void enet_hal_set_individual_hashtable(uint32_t instance, uint32_t crcValue, enet_special_address_filter_t mode)
mbed_official 146:f64d43ff0c18 104 {
mbed_official 146:f64d43ff0c18 105 assert(instance < HW_ENET_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 106
mbed_official 146:f64d43ff0c18 107 switch (mode)
mbed_official 146:f64d43ff0c18 108 {
mbed_official 146:f64d43ff0c18 109 case kEnetSpecialAddressInit: /* Clear individual address register on ENET initialize */
mbed_official 146:f64d43ff0c18 110 HW_ENET_IALR_WR(instance,0);
mbed_official 146:f64d43ff0c18 111 HW_ENET_IAUR_WR(instance,0);
mbed_official 146:f64d43ff0c18 112 break;
mbed_official 146:f64d43ff0c18 113 case kEnetSpecialAddressEnable: /* Enable a special address*/
mbed_official 146:f64d43ff0c18 114 if (((crcValue >>31) & 1U) == 0)
mbed_official 146:f64d43ff0c18 115 {
mbed_official 146:f64d43ff0c18 116 HW_ENET_IALR_SET(instance,(1U << ((crcValue>>26)& kEnetHashValMask)));
mbed_official 146:f64d43ff0c18 117 }
mbed_official 146:f64d43ff0c18 118 else
mbed_official 146:f64d43ff0c18 119 {
mbed_official 146:f64d43ff0c18 120 HW_ENET_IAUR_SET(instance,(1U << ((crcValue>>26)& kEnetHashValMask)));
mbed_official 146:f64d43ff0c18 121 }
mbed_official 146:f64d43ff0c18 122 break;
mbed_official 146:f64d43ff0c18 123 case kEnetSpecialAddressDisable: /* Disable a special address*/
mbed_official 146:f64d43ff0c18 124 if (((crcValue >>31) & 1U) == 0)
mbed_official 146:f64d43ff0c18 125 {
mbed_official 146:f64d43ff0c18 126 HW_ENET_IALR_CLR(instance,(1U << ((crcValue>>26)& kEnetHashValMask)));
mbed_official 146:f64d43ff0c18 127 }
mbed_official 146:f64d43ff0c18 128 else
mbed_official 146:f64d43ff0c18 129 {
mbed_official 146:f64d43ff0c18 130 HW_ENET_IAUR_CLR(instance,(1U << ((crcValue>>26)& kEnetHashValMask)));
mbed_official 146:f64d43ff0c18 131 }
mbed_official 146:f64d43ff0c18 132 break;
mbed_official 146:f64d43ff0c18 133 default:
mbed_official 146:f64d43ff0c18 134 break;
mbed_official 146:f64d43ff0c18 135 }
mbed_official 146:f64d43ff0c18 136 }
mbed_official 146:f64d43ff0c18 137
mbed_official 146:f64d43ff0c18 138 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 139 *
mbed_official 146:f64d43ff0c18 140 * Function Name: enet_hal_config_tx_fifo
mbed_official 146:f64d43ff0c18 141 * Description: Configure ENET transmit FIFO.
mbed_official 146:f64d43ff0c18 142 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 143 void enet_hal_config_tx_fifo(uint32_t instance, enet_config_tx_fifo_t *thresholdCfg)
mbed_official 146:f64d43ff0c18 144 {
mbed_official 146:f64d43ff0c18 145 assert(instance < HW_ENET_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 146 assert(thresholdCfg);
mbed_official 146:f64d43ff0c18 147 assert(thresholdCfg->txFifoWrite <= BM_ENET_TFWR_TFWR);
mbed_official 146:f64d43ff0c18 148
mbed_official 146:f64d43ff0c18 149 BW_ENET_TFWR_STRFWD(instance, thresholdCfg->isStoreForwardEnabled); /* Set store and forward mode*/
mbed_official 146:f64d43ff0c18 150 if(!thresholdCfg->isStoreForwardEnabled)
mbed_official 146:f64d43ff0c18 151 {
mbed_official 146:f64d43ff0c18 152 BW_ENET_TFWR_TFWR(instance, thresholdCfg->txFifoWrite); /* Set transmit FIFO write bytes*/
mbed_official 146:f64d43ff0c18 153 }
mbed_official 146:f64d43ff0c18 154 BW_ENET_TSEM_TX_SECTION_EMPTY(instance,thresholdCfg->txEmpty); /* Set transmit FIFO empty threshold*/
mbed_official 146:f64d43ff0c18 155 BW_ENET_TAEM_TX_ALMOST_EMPTY(instance,thresholdCfg->txAlmostEmpty); /* Set transmit FIFO almost empty threshold*/
mbed_official 146:f64d43ff0c18 156 BW_ENET_TAFL_TX_ALMOST_FULL(instance,thresholdCfg->txAlmostFull); /* Set transmit FIFO almost full threshold*/
mbed_official 146:f64d43ff0c18 157 }
mbed_official 146:f64d43ff0c18 158
mbed_official 146:f64d43ff0c18 159 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 160 *
mbed_official 146:f64d43ff0c18 161 * Function Name: enet_hal_config_rx_fifo
mbed_official 146:f64d43ff0c18 162 * Description: Configure ENET receive FIFO.
mbed_official 146:f64d43ff0c18 163 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 164 void enet_hal_config_rx_fifo(uint32_t instance,enet_config_rx_fifo_t *thresholdCfg )
mbed_official 146:f64d43ff0c18 165 {
mbed_official 146:f64d43ff0c18 166 assert(instance < HW_ENET_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 167 assert(thresholdCfg);
mbed_official 146:f64d43ff0c18 168 if(thresholdCfg->rxFull > 0)
mbed_official 146:f64d43ff0c18 169 {
mbed_official 146:f64d43ff0c18 170 assert(thresholdCfg->rxFull > thresholdCfg->rxAlmostEmpty);
mbed_official 146:f64d43ff0c18 171 }
mbed_official 146:f64d43ff0c18 172
mbed_official 146:f64d43ff0c18 173 BW_ENET_RSFL_RX_SECTION_FULL(instance,thresholdCfg->rxFull); /* Set receive FIFO full threshold*/
mbed_official 146:f64d43ff0c18 174 BW_ENET_RSEM_RX_SECTION_EMPTY(instance,thresholdCfg->rxEmpty); /* Set receive FIFO empty threshold*/
mbed_official 146:f64d43ff0c18 175 BW_ENET_RAEM_RX_ALMOST_EMPTY(instance,thresholdCfg->rxAlmostEmpty); /* Set receive FIFO almost empty threshold*/
mbed_official 146:f64d43ff0c18 176 BW_ENET_RAFL_RX_ALMOST_FULL(instance,thresholdCfg->rxAlmostFull); /* Set receive FIFO almost full threshold*/
mbed_official 146:f64d43ff0c18 177 }
mbed_official 146:f64d43ff0c18 178
mbed_official 146:f64d43ff0c18 179 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 180 *
mbed_official 146:f64d43ff0c18 181 * Function Name: enet_hal_init_rxbds
mbed_official 146:f64d43ff0c18 182 * Description: Initialize ENET receive buffer descriptors.
mbed_official 146:f64d43ff0c18 183 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 184 void enet_hal_init_rxbds(void *rxBds, uint8_t *buffer, bool isLastBd)
mbed_official 146:f64d43ff0c18 185 {
mbed_official 146:f64d43ff0c18 186 assert(rxBds);
mbed_official 146:f64d43ff0c18 187 assert(buffer);
mbed_official 146:f64d43ff0c18 188
mbed_official 146:f64d43ff0c18 189 volatile enet_bd_struct_t *bdPtr = (enet_bd_struct_t *)rxBds;
mbed_official 146:f64d43ff0c18 190
mbed_official 146:f64d43ff0c18 191 bdPtr->buffer = (uint8_t *)NTOHL((uint32_t)buffer); /* Set data buffer address */
mbed_official 146:f64d43ff0c18 192 bdPtr->length = 0; /* Initialize data length*/
mbed_official 146:f64d43ff0c18 193
mbed_official 146:f64d43ff0c18 194 /*The last buffer descriptor should be set with the wrap flag*/
mbed_official 146:f64d43ff0c18 195 if (isLastBd)
mbed_official 146:f64d43ff0c18 196 {
mbed_official 146:f64d43ff0c18 197 bdPtr->control |= kEnetRxBdWrap;
mbed_official 146:f64d43ff0c18 198 }
mbed_official 146:f64d43ff0c18 199 bdPtr->control |= kEnetRxBdEmpty; /* Initialize bd with empty bit*/
mbed_official 146:f64d43ff0c18 200 bdPtr->controlExtend1 |= kEnetRxBdIntrrupt;/* Enable receive interrupt*/
mbed_official 146:f64d43ff0c18 201 }
mbed_official 146:f64d43ff0c18 202
mbed_official 146:f64d43ff0c18 203 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 204 *
mbed_official 146:f64d43ff0c18 205 * Function Name: enet_hal_init_txbds
mbed_official 146:f64d43ff0c18 206 * Description: Initialize ENET transmit buffer descriptors.
mbed_official 146:f64d43ff0c18 207 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 208 void enet_hal_init_txbds(void *txBds, bool isLastBd)
mbed_official 146:f64d43ff0c18 209 {
mbed_official 146:f64d43ff0c18 210 assert(txBds);
mbed_official 146:f64d43ff0c18 211
mbed_official 146:f64d43ff0c18 212 volatile enet_bd_struct_t *bdPtr = (enet_bd_struct_t *)txBds;
mbed_official 146:f64d43ff0c18 213
mbed_official 146:f64d43ff0c18 214 bdPtr->length = 0; /* Initialize data length*/
mbed_official 146:f64d43ff0c18 215
mbed_official 146:f64d43ff0c18 216 /*The last buffer descriptor should be set with the wrap flag*/
mbed_official 146:f64d43ff0c18 217 if (isLastBd)
mbed_official 146:f64d43ff0c18 218 {
mbed_official 146:f64d43ff0c18 219 bdPtr->control |= kEnetTxBdWrap;
mbed_official 146:f64d43ff0c18 220 }
mbed_official 146:f64d43ff0c18 221 }
mbed_official 146:f64d43ff0c18 222
mbed_official 146:f64d43ff0c18 223 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 224 *
mbed_official 146:f64d43ff0c18 225 * Function Name: enet_hal_update_rxbds
mbed_official 146:f64d43ff0c18 226 * Description: Update ENET receive buffer descriptors.
mbed_official 146:f64d43ff0c18 227 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 228 void enet_hal_update_rxbds(void *rxBds, uint8_t *data, bool isbufferUpdate)
mbed_official 146:f64d43ff0c18 229 {
mbed_official 146:f64d43ff0c18 230 assert(rxBds);
mbed_official 146:f64d43ff0c18 231
mbed_official 146:f64d43ff0c18 232 volatile enet_bd_struct_t *bdPtr = (enet_bd_struct_t *)rxBds;
mbed_official 146:f64d43ff0c18 233
mbed_official 146:f64d43ff0c18 234 if (isbufferUpdate)
mbed_official 146:f64d43ff0c18 235 {
mbed_official 146:f64d43ff0c18 236 bdPtr->buffer = (uint8_t *)HTONL((uint32_t)data);
mbed_official 146:f64d43ff0c18 237 }
mbed_official 146:f64d43ff0c18 238 bdPtr->control &= kEnetRxBdWrap; /* Clear status*/
mbed_official 146:f64d43ff0c18 239 bdPtr->control |= kEnetRxBdEmpty; /* Set rx bd empty*/
mbed_official 146:f64d43ff0c18 240 bdPtr->controlExtend1 |= kEnetRxBdIntrrupt;/* Enable interrupt*/
mbed_official 146:f64d43ff0c18 241 }
mbed_official 146:f64d43ff0c18 242
mbed_official 146:f64d43ff0c18 243 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 244 *
mbed_official 146:f64d43ff0c18 245 * Function Name: enet_hal_update_txbds
mbed_official 146:f64d43ff0c18 246 * Description: Update ENET transmit buffer descriptors.
mbed_official 146:f64d43ff0c18 247 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 248 void enet_hal_update_txbds(void *txBds,uint8_t *buffer, uint16_t length, bool isTxtsCfged)
mbed_official 146:f64d43ff0c18 249 {
mbed_official 146:f64d43ff0c18 250 assert(txBds);
mbed_official 146:f64d43ff0c18 251 assert(buffer);
mbed_official 146:f64d43ff0c18 252
mbed_official 146:f64d43ff0c18 253 volatile enet_bd_struct_t * bdPtr = (enet_bd_struct_t *)txBds;
mbed_official 146:f64d43ff0c18 254
mbed_official 146:f64d43ff0c18 255 bdPtr->length = HTONS(length); /* Set data length*/
mbed_official 146:f64d43ff0c18 256 bdPtr->buffer = (uint8_t *)HTONL((uint32_t)buffer); /* Set data buffer*/
mbed_official 146:f64d43ff0c18 257 bdPtr->control |= kEnetTxBdLast | kEnetTxBdTransmitCrc | kEnetTxBdReady;/* set control */
mbed_official 146:f64d43ff0c18 258 if (isTxtsCfged)
mbed_official 146:f64d43ff0c18 259 {
mbed_official 146:f64d43ff0c18 260 /* Set receive and timestamp interrupt*/
mbed_official 146:f64d43ff0c18 261 bdPtr->controlExtend1 |= (kEnetTxBdTxInterrupt | kEnetTxBdTimeStamp);
mbed_official 146:f64d43ff0c18 262 }
mbed_official 146:f64d43ff0c18 263 else
mbed_official 146:f64d43ff0c18 264 {
mbed_official 146:f64d43ff0c18 265 /* Set receive interrupt*/
mbed_official 146:f64d43ff0c18 266 bdPtr->controlExtend1 |= kEnetTxBdTxInterrupt;
mbed_official 146:f64d43ff0c18 267 }
mbed_official 146:f64d43ff0c18 268 }
mbed_official 146:f64d43ff0c18 269
mbed_official 146:f64d43ff0c18 270 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 271 *
mbed_official 146:f64d43ff0c18 272 * Function Name: enet_hal_get_rxbd_control
mbed_official 146:f64d43ff0c18 273 * Description: Get receive buffer descriptor control and status region.
mbed_official 146:f64d43ff0c18 274 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 275 uint16_t enet_hal_get_rxbd_control(void *curBd)
mbed_official 146:f64d43ff0c18 276 {
mbed_official 146:f64d43ff0c18 277 assert(curBd);
mbed_official 146:f64d43ff0c18 278
mbed_official 146:f64d43ff0c18 279 volatile enet_bd_struct_t *bdPtr = (enet_bd_struct_t *)curBd;
mbed_official 146:f64d43ff0c18 280 return bdPtr->control;
mbed_official 146:f64d43ff0c18 281 }
mbed_official 146:f64d43ff0c18 282
mbed_official 146:f64d43ff0c18 283 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 284 *
mbed_official 146:f64d43ff0c18 285 * Function Name: enet_hal_get_txbd_control
mbed_official 146:f64d43ff0c18 286 * Description: Get ENET transmit buffer descriptor control and status data.
mbed_official 146:f64d43ff0c18 287 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 288 uint16_t enet_hal_get_txbd_control(void *curBd)
mbed_official 146:f64d43ff0c18 289 {
mbed_official 146:f64d43ff0c18 290 assert(curBd);
mbed_official 146:f64d43ff0c18 291 volatile enet_bd_struct_t *bdPtr = (enet_bd_struct_t *)curBd;
mbed_official 146:f64d43ff0c18 292 return bdPtr->control;
mbed_official 146:f64d43ff0c18 293 }
mbed_official 146:f64d43ff0c18 294
mbed_official 146:f64d43ff0c18 295 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 296 *
mbed_official 146:f64d43ff0c18 297 * Function Name: enet_hal_get_bd_length
mbed_official 146:f64d43ff0c18 298 * Description: Get ENET data length of buffer descriptors.
mbed_official 146:f64d43ff0c18 299 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 300 uint16_t enet_hal_get_bd_length(void *curBd)
mbed_official 146:f64d43ff0c18 301 {
mbed_official 146:f64d43ff0c18 302 assert(curBd);
mbed_official 146:f64d43ff0c18 303 uint16_t length;
mbed_official 146:f64d43ff0c18 304
mbed_official 146:f64d43ff0c18 305 volatile enet_bd_struct_t *bdPtr = (enet_bd_struct_t *)curBd;
mbed_official 146:f64d43ff0c18 306 length = bdPtr->length;
mbed_official 146:f64d43ff0c18 307 return NTOHS(length);
mbed_official 146:f64d43ff0c18 308 }
mbed_official 146:f64d43ff0c18 309
mbed_official 146:f64d43ff0c18 310 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 311 *
mbed_official 146:f64d43ff0c18 312 * Function Name: enet_hal_get_bd_buffer
mbed_official 146:f64d43ff0c18 313 * Description: Get the buffer address of buffer descriptors.
mbed_official 146:f64d43ff0c18 314 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 315 uint8_t* enet_hal_get_bd_buffer(void *curBd)
mbed_official 146:f64d43ff0c18 316 {
mbed_official 146:f64d43ff0c18 317 assert(curBd);
mbed_official 146:f64d43ff0c18 318
mbed_official 146:f64d43ff0c18 319 volatile enet_bd_struct_t *bdPtr = (enet_bd_struct_t *)curBd;
mbed_official 146:f64d43ff0c18 320 uint32_t buffer = (uint32_t)(bdPtr->buffer);
mbed_official 146:f64d43ff0c18 321 return (uint8_t *)NTOHL(buffer);
mbed_official 146:f64d43ff0c18 322 }
mbed_official 146:f64d43ff0c18 323
mbed_official 146:f64d43ff0c18 324 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 325 *
mbed_official 146:f64d43ff0c18 326 * Function Name: enet_hal_get_bd_timestamp
mbed_official 146:f64d43ff0c18 327 * Description: Get the timestamp of buffer descriptors.
mbed_official 146:f64d43ff0c18 328 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 329 uint32_t enet_hal_get_bd_timestamp(void *curBd)
mbed_official 146:f64d43ff0c18 330 {
mbed_official 146:f64d43ff0c18 331 assert(curBd);
mbed_official 146:f64d43ff0c18 332 volatile enet_bd_struct_t *bdPtr = (enet_bd_struct_t *)curBd;
mbed_official 146:f64d43ff0c18 333 uint32_t timestamp = bdPtr->timestamp;
mbed_official 146:f64d43ff0c18 334 return NTOHL(timestamp);
mbed_official 146:f64d43ff0c18 335 }
mbed_official 146:f64d43ff0c18 336
mbed_official 146:f64d43ff0c18 337 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 338 *
mbed_official 146:f64d43ff0c18 339 * Function Name: enet_hal_get_rxbd_control_extend
mbed_official 146:f64d43ff0c18 340 * Description: Get ENET receive buffer descriptor extended control region.
mbed_official 146:f64d43ff0c18 341 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 342 bool enet_hal_get_rxbd_control_extend(void *curBd,enet_rx_bd_control_extend_t controlRegion)
mbed_official 146:f64d43ff0c18 343 {
mbed_official 146:f64d43ff0c18 344 assert(curBd);
mbed_official 146:f64d43ff0c18 345
mbed_official 146:f64d43ff0c18 346 volatile enet_bd_struct_t *bdPtr = (enet_bd_struct_t *)curBd;
mbed_official 146:f64d43ff0c18 347
mbed_official 146:f64d43ff0c18 348 #if SYSTEM_LITTLE_ENDIAN && FSL_FEATURE_ENET_DMA_BIG_ENDIAN_ONLY
mbed_official 146:f64d43ff0c18 349 if (((uint16_t)controlRegion > kEnetRxBdCtlJudge1) && ((uint16_t)controlRegion < kEnetRxBdCtlJudge2))
mbed_official 146:f64d43ff0c18 350 {
mbed_official 146:f64d43ff0c18 351 return ((bdPtr->controlExtend0 & controlRegion) != 0); /* Control extended0 region*/
mbed_official 146:f64d43ff0c18 352 }
mbed_official 146:f64d43ff0c18 353 else
mbed_official 146:f64d43ff0c18 354 {
mbed_official 146:f64d43ff0c18 355 return ((bdPtr->controlExtend1 & controlRegion) != 0); /* Control extended1 region*/
mbed_official 146:f64d43ff0c18 356 }
mbed_official 146:f64d43ff0c18 357 #else
mbed_official 146:f64d43ff0c18 358 if( (uint16_t)controlRegion < kEnetRxBdCtlJudge1)
mbed_official 146:f64d43ff0c18 359 {
mbed_official 146:f64d43ff0c18 360 return ((bdPtr->controlExtend0 & controlRegion) != 0); /* Control extended0 region*/
mbed_official 146:f64d43ff0c18 361 }
mbed_official 146:f64d43ff0c18 362 else
mbed_official 146:f64d43ff0c18 363 {
mbed_official 146:f64d43ff0c18 364 return ((bdPtr->controlExtend1 & controlRegion) != 0);/* Control extended1 region*/
mbed_official 146:f64d43ff0c18 365 }
mbed_official 146:f64d43ff0c18 366 #endif
mbed_official 146:f64d43ff0c18 367 }
mbed_official 146:f64d43ff0c18 368
mbed_official 146:f64d43ff0c18 369 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 370 *
mbed_official 146:f64d43ff0c18 371 * Function Name: enet_hal_get_txbd_control_extend
mbed_official 146:f64d43ff0c18 372 * Description: Get ENET transmit buffer descriptor extended control region.
mbed_official 146:f64d43ff0c18 373 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 374 uint16_t enet_hal_get_txbd_control_extend(void *curBd)
mbed_official 146:f64d43ff0c18 375 {
mbed_official 146:f64d43ff0c18 376 assert(curBd);
mbed_official 146:f64d43ff0c18 377 volatile enet_bd_struct_t *bdPtr = (enet_bd_struct_t *)curBd;
mbed_official 146:f64d43ff0c18 378
mbed_official 146:f64d43ff0c18 379 return bdPtr->controlExtend0;
mbed_official 146:f64d43ff0c18 380 }
mbed_official 146:f64d43ff0c18 381
mbed_official 146:f64d43ff0c18 382 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 383 *
mbed_official 146:f64d43ff0c18 384 * Function Name: enet_hal_get_txbd_timestamp_flag
mbed_official 146:f64d43ff0c18 385 * Description: Get ENET transmit buffer descriptor timestamp region.
mbed_official 146:f64d43ff0c18 386 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 387 bool enet_hal_get_txbd_timestamp_flag(void *curBd)
mbed_official 146:f64d43ff0c18 388 {
mbed_official 146:f64d43ff0c18 389 assert(curBd);
mbed_official 146:f64d43ff0c18 390 volatile enet_bd_struct_t *bdPtr = (enet_bd_struct_t *)curBd;
mbed_official 146:f64d43ff0c18 391 return ((bdPtr->controlExtend1 & kEnetTxBdTimeStamp) != 0);
mbed_official 146:f64d43ff0c18 392 }
mbed_official 146:f64d43ff0c18 393
mbed_official 146:f64d43ff0c18 394 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 395 *
mbed_official 146:f64d43ff0c18 396 * Function Name: enet_hal_config_rmii
mbed_official 146:f64d43ff0c18 397 * Description: Configure (R)MII mode.
mbed_official 146:f64d43ff0c18 398 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 399 void enet_hal_config_rmii(uint32_t instance, enet_config_rmii_t mode, enet_config_speed_t speed, enet_config_duplex_t duplex, bool isRxOnTxDisabled, bool isLoopEnabled)
mbed_official 146:f64d43ff0c18 400 {
mbed_official 146:f64d43ff0c18 401 assert(instance < HW_ENET_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 402
mbed_official 146:f64d43ff0c18 403 BW_ENET_RCR_MII_MODE(instance,1); /* Set mii mode */
mbed_official 146:f64d43ff0c18 404 BW_ENET_RCR_RMII_MODE(instance,mode);
mbed_official 146:f64d43ff0c18 405 BW_ENET_RCR_RMII_10T(instance,speed); /* Set speed mode */
mbed_official 146:f64d43ff0c18 406 BW_ENET_TCR_FDEN(instance,duplex); /* Set duplex mode*/
mbed_official 146:f64d43ff0c18 407 if ((!duplex) && isRxOnTxDisabled)
mbed_official 146:f64d43ff0c18 408 {
mbed_official 146:f64d43ff0c18 409 BW_ENET_RCR_DRT(instance,1); /* Disable receive on transmit*/
mbed_official 146:f64d43ff0c18 410 }
mbed_official 146:f64d43ff0c18 411
mbed_official 146:f64d43ff0c18 412 if (mode == kEnetCfgMii) /* Set internal loop only for mii mode*/
mbed_official 146:f64d43ff0c18 413 {
mbed_official 146:f64d43ff0c18 414 BW_ENET_RCR_LOOP(instance,isLoopEnabled);
mbed_official 146:f64d43ff0c18 415 }
mbed_official 146:f64d43ff0c18 416 else
mbed_official 146:f64d43ff0c18 417 {
mbed_official 146:f64d43ff0c18 418 BW_ENET_RCR_LOOP(instance, 0); /* Clear internal loop for rmii mode*/
mbed_official 146:f64d43ff0c18 419 }
mbed_official 146:f64d43ff0c18 420 }
mbed_official 146:f64d43ff0c18 421
mbed_official 146:f64d43ff0c18 422 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 423 *
mbed_official 146:f64d43ff0c18 424 * Function Name: enet_hal_set_mii_command
mbed_official 146:f64d43ff0c18 425 * Description: Set MII command.
mbed_official 146:f64d43ff0c18 426 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 427 void enet_hal_set_mii_command(uint32_t instance, uint32_t phyAddr, uint32_t phyReg, enet_mii_operation_t operation, uint32_t data)
mbed_official 146:f64d43ff0c18 428 {
mbed_official 146:f64d43ff0c18 429 assert(instance < HW_ENET_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 430 uint32_t mmfrValue = 0 ;
mbed_official 146:f64d43ff0c18 431
mbed_official 146:f64d43ff0c18 432 mmfrValue = BF_ENET_MMFR_ST(1)| BF_ENET_MMFR_OP(operation)| BF_ENET_MMFR_PA(phyAddr) | BF_ENET_MMFR_RA(phyReg)| BF_ENET_MMFR_TA(2) | (data&0xFFFF); /* mii command*/
mbed_official 146:f64d43ff0c18 433 HW_ENET_MMFR_WR(instance,mmfrValue);
mbed_official 146:f64d43ff0c18 434 }
mbed_official 146:f64d43ff0c18 435
mbed_official 146:f64d43ff0c18 436 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 437 *
mbed_official 146:f64d43ff0c18 438 * Function Name: enet_hal_config_ethernet
mbed_official 146:f64d43ff0c18 439 * Description: Enable or disable normal Ethernet mode and enhanced mode.
mbed_official 146:f64d43ff0c18 440 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 441 void enet_hal_config_ethernet(uint32_t instance, bool isEnhanced, bool isEnabled)
mbed_official 146:f64d43ff0c18 442 {
mbed_official 146:f64d43ff0c18 443 assert(instance < HW_ENET_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 444
mbed_official 146:f64d43ff0c18 445 BW_ENET_ECR_ETHEREN(instance,isEnabled); /* Enable/Disable Ethernet module*/
mbed_official 146:f64d43ff0c18 446 if (isEnhanced)
mbed_official 146:f64d43ff0c18 447 {
mbed_official 146:f64d43ff0c18 448 BW_ENET_ECR_EN1588(instance,isEnabled); /* Enable/Disable enhanced frame feature*/
mbed_official 146:f64d43ff0c18 449 }
mbed_official 146:f64d43ff0c18 450 #if SYSTEM_LITTLE_ENDIAN && !FSL_FEATURE_ENET_DMA_BIG_ENDIAN_ONLY
mbed_official 146:f64d43ff0c18 451 BW_ENET_ECR_DBSWP(instance,1); /* buffer descriptor byte swapping for little-endian system and endianness configurable IP*/
mbed_official 146:f64d43ff0c18 452 #endif
mbed_official 146:f64d43ff0c18 453 }
mbed_official 146:f64d43ff0c18 454
mbed_official 146:f64d43ff0c18 455 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 456 *
mbed_official 146:f64d43ff0c18 457 * Function Name: enet_hal_config_interrupt
mbed_official 146:f64d43ff0c18 458 * Description: Enable or disable different Ethernet interrupts.
mbed_official 146:f64d43ff0c18 459 * the parameter source is the interrupt source and enet_interrupt_request_t
mbed_official 146:f64d43ff0c18 460 * enum types is recommended to be used as the interrupt sources.
mbed_official 146:f64d43ff0c18 461 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 462 void enet_hal_config_interrupt(uint32_t instance, uint32_t source, bool isEnabled)
mbed_official 146:f64d43ff0c18 463 {
mbed_official 146:f64d43ff0c18 464 assert(instance < HW_ENET_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 465
mbed_official 146:f64d43ff0c18 466 if (isEnabled)
mbed_official 146:f64d43ff0c18 467 {
mbed_official 146:f64d43ff0c18 468 HW_ENET_EIMR_SET(instance,source); /* Enable interrupt */
mbed_official 146:f64d43ff0c18 469 }
mbed_official 146:f64d43ff0c18 470 else
mbed_official 146:f64d43ff0c18 471 {
mbed_official 146:f64d43ff0c18 472 HW_ENET_EIMR_CLR(instance,source); /* Disable interrupt*/
mbed_official 146:f64d43ff0c18 473 }
mbed_official 146:f64d43ff0c18 474 }
mbed_official 146:f64d43ff0c18 475
mbed_official 146:f64d43ff0c18 476 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 477 *
mbed_official 146:f64d43ff0c18 478 * Function Name: enet_hal_config_tx_accelerator
mbed_official 146:f64d43ff0c18 479 * Description: Configure Ethernet transmit accelerator features.
mbed_official 146:f64d43ff0c18 480 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 481 void enet_hal_config_tx_accelerator(uint32_t instance, enet_config_tx_accelerator_t *txCfgPtr)
mbed_official 146:f64d43ff0c18 482 {
mbed_official 146:f64d43ff0c18 483 assert(instance < HW_ENET_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 484 assert(txCfgPtr);
mbed_official 146:f64d43ff0c18 485
mbed_official 146:f64d43ff0c18 486 HW_ENET_TACC_WR(instance,0); /* Clear all*/
mbed_official 146:f64d43ff0c18 487 BW_ENET_TACC_IPCHK(instance,txCfgPtr->isIpCheckEnabled); /* Insert ipheader checksum */
mbed_official 146:f64d43ff0c18 488 BW_ENET_TACC_PROCHK(instance,txCfgPtr->isProtocolCheckEnabled); /* Insert protocol checksum*/
mbed_official 146:f64d43ff0c18 489 BW_ENET_TACC_SHIFT16(instance,txCfgPtr->isShift16Enabled); /* Set tx fifo shift-16*/
mbed_official 146:f64d43ff0c18 490 }
mbed_official 146:f64d43ff0c18 491
mbed_official 146:f64d43ff0c18 492 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 493 *
mbed_official 146:f64d43ff0c18 494 * Function Name: enet_hal_config_rx_accelerator
mbed_official 146:f64d43ff0c18 495 * Description: Configure Ethernet receive accelerator features.
mbed_official 146:f64d43ff0c18 496 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 497 void enet_hal_config_rx_accelerator(uint32_t instance, enet_config_rx_accelerator_t *rxCfgPtr)
mbed_official 146:f64d43ff0c18 498 {
mbed_official 146:f64d43ff0c18 499 assert(instance < HW_ENET_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 500 assert(rxCfgPtr);
mbed_official 146:f64d43ff0c18 501
mbed_official 146:f64d43ff0c18 502 HW_ENET_RACC_WR(instance,0); /* Clear all*/
mbed_official 146:f64d43ff0c18 503 BW_ENET_RACC_IPDIS(instance,rxCfgPtr->isIpcheckEnabled); /* Set ipchecksum field*/
mbed_official 146:f64d43ff0c18 504 BW_ENET_RACC_PRODIS(instance,rxCfgPtr->isProtocolCheckEnabled); /* Set protocol field*/
mbed_official 146:f64d43ff0c18 505 BW_ENET_RACC_LINEDIS(instance,rxCfgPtr->isMacCheckEnabled); /* Set maccheck field*/
mbed_official 146:f64d43ff0c18 506 BW_ENET_RACC_SHIFT16(instance,rxCfgPtr->isShift16Enabled); /* Set rx fifo shift field*/
mbed_official 146:f64d43ff0c18 507 BW_ENET_RACC_PADREM(instance,rxCfgPtr->isPadRemoveEnabled); /* Set rx padding remove field*/
mbed_official 146:f64d43ff0c18 508 }
mbed_official 146:f64d43ff0c18 509
mbed_official 146:f64d43ff0c18 510 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 511 *
mbed_official 146:f64d43ff0c18 512 * Function Name: enet_hal_set_txpause
mbed_official 146:f64d43ff0c18 513 * Return Value: The execution status.
mbed_official 146:f64d43ff0c18 514 * Description: Set the ENET transmit controller with pause duration and
mbed_official 146:f64d43ff0c18 515 * Set enet transmit PAUSE frame transmission.
mbed_official 146:f64d43ff0c18 516 * This should be called when a PAUSE frame is dynamically wanted.
mbed_official 146:f64d43ff0c18 517 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 518 void enet_hal_set_txpause(uint32_t instance, uint32_t pauseDuration)
mbed_official 146:f64d43ff0c18 519 {
mbed_official 146:f64d43ff0c18 520 assert(instance < HW_ENET_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 521 assert(pauseDuration <= BM_ENET_OPD_PAUSE_DUR);
mbed_official 146:f64d43ff0c18 522 BW_ENET_OPD_PAUSE_DUR(instance, pauseDuration);
mbed_official 146:f64d43ff0c18 523 BW_ENET_TCR_TFC_PAUSE(instance, 1);
mbed_official 146:f64d43ff0c18 524 }
mbed_official 146:f64d43ff0c18 525
mbed_official 146:f64d43ff0c18 526 /*FUNCTION****************************************************************
mbed_official 146:f64d43ff0c18 527 *
mbed_official 146:f64d43ff0c18 528 * Function Name: enet_hal_init_ptp_timer
mbed_official 146:f64d43ff0c18 529 * Description: Initialize Ethernet ptp timer.
mbed_official 146:f64d43ff0c18 530 *END*********************************************************************/
mbed_official 146:f64d43ff0c18 531 void enet_hal_init_ptp_timer(uint32_t instance,enet_config_ptp_timer_t *ptpCfgPtr)
mbed_official 146:f64d43ff0c18 532 {
mbed_official 146:f64d43ff0c18 533 assert(instance < HW_ENET_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 534 assert(ptpCfgPtr);
mbed_official 146:f64d43ff0c18 535
mbed_official 146:f64d43ff0c18 536 BW_ENET_ATINC_INC(instance, ptpCfgPtr->clockIncease); /* Set increase value for ptp timer*/
mbed_official 146:f64d43ff0c18 537 HW_ENET_ATPER_WR(instance, ptpCfgPtr->period); /* Set wrap time for ptp timer*/
mbed_official 146:f64d43ff0c18 538 /* set periodical event and the event signal output assertion*/
mbed_official 146:f64d43ff0c18 539 BW_ENET_ATCR_PEREN(instance, 1);
mbed_official 146:f64d43ff0c18 540 BW_ENET_ATCR_PINPER(instance, 1);
mbed_official 146:f64d43ff0c18 541 /* Set ptp timer slave/master mode*/
mbed_official 146:f64d43ff0c18 542 BW_ENET_ATCR_SLAVE(instance, ptpCfgPtr->isSlaveEnabled);
mbed_official 146:f64d43ff0c18 543 }
mbed_official 146:f64d43ff0c18 544
mbed_official 146:f64d43ff0c18 545 /*******************************************************************************
mbed_official 146:f64d43ff0c18 546 * EOF
mbed_official 146:f64d43ff0c18 547 ******************************************************************************/
mbed_official 146:f64d43ff0c18 548