Skip to content

Commit 00696e6

Browse files
authored
Merge pull request #3378 from NXPmicro/K66_ENET
K66F: Enable LWIP feature
2 parents b13954c + 428e8b2 commit 00696e6

File tree

3 files changed

+100
-1
lines changed

3 files changed

+100
-1
lines changed
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
/*
2+
* Copyright (c) 2016, Freescale Semiconductor, Inc.
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without modification,
6+
* are permitted provided that the following conditions are met:
7+
*
8+
* o Redistributions of source code must retain the above copyright notice, this list
9+
* of conditions and the following disclaimer.
10+
*
11+
* o Redistributions in binary form must reproduce the above copyright notice, this
12+
* list of conditions and the following disclaimer in the documentation and/or
13+
* other materials provided with the distribution.
14+
*
15+
* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
16+
* contributors may be used to endorse or promote products derived from this
17+
* software without specific prior written permission.
18+
*
19+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22+
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
23+
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26+
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29+
*/
30+
31+
#include "fsl_port.h"
32+
33+
/*******************************************************************************
34+
* Code
35+
******************************************************************************/
36+
void k66f_init_eth_hardware(void)
37+
{
38+
port_pin_config_t configENET = {0};
39+
40+
#ifndef FEATURE_UVISOR
41+
/* Disable MPU only when uVisor is not around. */
42+
MPU->CESR &= ~MPU_CESR_VLD_MASK;
43+
#endif/*FEATURE_UVISOR*/
44+
45+
/* Ungate the port clock */
46+
CLOCK_EnableClock(kCLOCK_PortA);
47+
CLOCK_EnableClock(kCLOCK_PortB);
48+
CLOCK_EnableClock(kCLOCK_PortE);
49+
50+
/* Affects PORTE_PCR26 register, configured as ENET_1588 CLKIN */
51+
PORT_SetPinMux(PORTE, 26u, kPORT_MuxAlt2);
52+
/* Affects PORTB_PCR1 register */
53+
PORT_SetPinMux(PORTB, 1u, kPORT_MuxAlt4);
54+
55+
configENET.openDrainEnable = kPORT_OpenDrainEnable;
56+
configENET.mux = kPORT_MuxAlt4;
57+
configENET.pullSelect = kPORT_PullUp;
58+
/* Affects PORTB_PCR0 register */
59+
PORT_SetPinConfig(PORTB, 0u, &configENET);
60+
61+
/* Affects PORTA_PCR13 register */
62+
PORT_SetPinMux(PORTA, 13u, kPORT_MuxAlt4);
63+
/* Affects PORTA_PCR12 register */
64+
PORT_SetPinMux(PORTA, 12u, kPORT_MuxAlt4);
65+
/* Affects PORTA_PCR14 register */
66+
PORT_SetPinMux(PORTA, 14u, kPORT_MuxAlt4);
67+
/* Affects PORTA_PCR5 register */
68+
PORT_SetPinMux(PORTA, 5u, kPORT_MuxAlt4);
69+
/* Affects PORTA_PCR16 register */
70+
PORT_SetPinMux(PORTA, 16u, kPORT_MuxAlt4);
71+
/* Affects PORTA_PCR17 register */
72+
PORT_SetPinMux(PORTA, 17u, kPORT_MuxAlt4);
73+
/* Affects PORTA_PCR15 register */
74+
PORT_SetPinMux(PORTA, 15u, kPORT_MuxAlt4);
75+
76+
/* Set RMII clock src. */
77+
CLOCK_SetRmii0Clock(1U);
78+
79+
/* Select the Ethernet timestamp clock source */
80+
CLOCK_SetEnetTime0Clock(0x2);
81+
}
82+
83+
/*******************************************************************************
84+
* EOF
85+
******************************************************************************/
86+
87+

features/FEATURE_LWIP/lwip-interface/lwip-eth/arch/TARGET_Freescale/k64f_emac.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,13 @@ uint32_t *rx_ptr[ENET_RX_RING_LEN];
4141
********************************************************************************/
4242
#define ENET_BuffSizeAlign(n) ENET_ALIGN(n, ENET_BUFF_ALIGNMENT)
4343
#define ENET_ALIGN(x,align) ((unsigned int)((x) + ((align)-1)) & (unsigned int)(~(unsigned int)((align)- 1)))
44+
#if (defined(TARGET_K64F) && (defined(TARGET_FRDM)))
4445
extern void k64f_init_eth_hardware(void);
46+
#endif
47+
48+
#if (defined(TARGET_K66F) && (defined(TARGET_FRDM)))
49+
extern void k66f_init_eth_hardware(void);
50+
#endif
4551

4652
/* K64F EMAC driver data structure */
4753
struct k64f_enetdata {
@@ -204,8 +210,13 @@ static err_t low_level_init(struct netif *netif)
204210
(uint8_t *)&rx_ptr,
205211
NULL,
206212
};
207-
213+
#if (defined(TARGET_K64F) && (defined(TARGET_FRDM)))
208214
k64f_init_eth_hardware();
215+
#endif
216+
217+
#if (defined(TARGET_K66F) && (defined(TARGET_FRDM)))
218+
k66f_init_eth_hardware();
219+
#endif
209220

210221
sysClock = CLOCK_GetFreq(kCLOCK_CoreSysClk);
211222

targets/targets.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,7 @@
615615
"inherits": ["Target"],
616616
"detect_code": ["0311"],
617617
"device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES", "TRNG"],
618+
"features": ["LWIP"],
618619
"release_versions": ["2", "5"],
619620
"device_name" : "MK66FN2M0xxx18"
620621
},

0 commit comments

Comments
 (0)