Skip to content

Commit 5524edb

Browse files
Mikkel Jakobsencfriedt
authored andcommitted
boards: mimxrt1024_evk: enable mcux ethernet driver and pins
Enables the mcux ethernet driver and pin muxes on the mimxrt1024_evk board in the same way as is done on the mimxrt1020_evk and mimxrt1050_evk. Documentation updated accordingly. Signed-off-by: Mikkel Jakobsen <[email protected]>
1 parent aecdf4c commit 5524edb

File tree

4 files changed

+99
-0
lines changed

4 files changed

+99
-0
lines changed

boards/arm/mimxrt1024_evk/Kconfig.defconfig

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,11 @@ config FLASH_MCUX_FLEXSPI_NOR
1818
config FLASH_MCUX_FLEXSPI_XIP
1919
default y if FLASH
2020

21+
if NETWORKING
22+
23+
config NET_L2_ETHERNET
24+
default y
25+
26+
endif # NETWORKING
27+
2128
endif # BOARD_MIMXRT1024_EVK

boards/arm/mimxrt1024_evk/doc/index.rst

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ features:
7979
| UART | on-chip | serial port-polling; |
8080
| | | serial port-interrupt |
8181
+-----------+------------+-------------------------------------+
82+
| ENET | on-chip | ethernet |
83+
+-----------+------------+-------------------------------------+
8284

8385
The default configuration can be found in the defconfig file:
8486
``boards/arm/mimxrt1024_evk/mimxrt1024_evk_defconfig``
@@ -101,6 +103,30 @@ The MIMXRT1024 SoC has five pairs of pinmux/gpio controllers.
101103
+---------------+-----------------+---------------------------+
102104
| WAKEUP | GPIO | SW4 |
103105
+---------------+-----------------+---------------------------+
106+
| GPIO_AD_B0_04 | ENET_RST | Ethernet |
107+
+---------------+-----------------+---------------------------+
108+
| GPIO_AD_B0_08 | ENET_REF_CLK | Ethernet |
109+
+---------------+-----------------+---------------------------+
110+
| GPIO_AD_B0_09 | ENET_RX_DATA01 | Ethernet |
111+
+---------------+-----------------+---------------------------+
112+
| GPIO_AD_B0_10 | ENET_RX_DATA00 | Ethernet |
113+
+---------------+-----------------+---------------------------+
114+
| GPIO_AD_B0_11 | ENET_RX_EN | Ethernet |
115+
+---------------+-----------------+---------------------------+
116+
| GPIO_AD_B0_12 | ENET_RX_ER | Ethernet |
117+
+---------------+-----------------+---------------------------+
118+
| GPIO_AD_B0_13 | ENET_TX_EN | Ethernet |
119+
+---------------+-----------------+---------------------------+
120+
| GPIO_AD_B0_14 | ENET_TX_DATA00 | Ethernet |
121+
+---------------+-----------------+---------------------------+
122+
| GPIO_AD_B0_15 | ENET_TX_DATA01 | Ethernet |
123+
+---------------+-----------------+---------------------------+
124+
| GPIO_AD_B1_06 | ENET_INT | Ethernet |
125+
+---------------+-----------------+---------------------------+
126+
| GPIO_EMC_41 | ENET_MDC | Ethernet |
127+
+---------------+-----------------+---------------------------+
128+
| GPIO_EMC_40 | ENET_MDIO | Ethernet |
129+
+---------------+-----------------+---------------------------+
104130

105131
System Clock
106132
============

boards/arm/mimxrt1024_evk/mimxrt1024_evk.dts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,13 @@
8080
};
8181
};
8282

83+
&enet {
84+
status = "okay";
85+
ptp {
86+
status = "okay";
87+
};
88+
};
89+
8390
&lpuart1 {
8491
status = "okay";
8592
current-speed = <115200>;

boards/arm/mimxrt1024_evk/pinmux.c

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@
88
#include <fsl_iomuxc.h>
99
#include <fsl_gpio.h>
1010

11+
#if DT_NODE_HAS_STATUS(DT_NODELABEL(enet), okay) && CONFIG_NET_L2_ETHERNET
12+
static gpio_pin_config_t enet_gpio_config = {
13+
.direction = kGPIO_DigitalOutput,
14+
.outputLogic = 0,
15+
.interruptMode = kGPIO_NoIntmode
16+
};
17+
#endif
1118

1219
static int mimxrt1024_evk_init(const struct device *dev)
1320
{
@@ -43,7 +50,59 @@ static int mimxrt1024_evk_init(const struct device *dev)
4350
IOMUXC_SW_PAD_CTL_PAD_DSE(6));
4451
#endif
4552

53+
#if DT_NODE_HAS_STATUS(DT_NODELABEL(enet), okay) && CONFIG_NET_L2_ETHERNET
54+
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_04_GPIO1_IO04, 0U);
55+
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B1_06_GPIO1_IO22, 0U);
56+
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_10_ENET_RDATA00, 0);
57+
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_09_ENET_RDATA01, 0);
58+
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_11_ENET_RX_EN, 0);
59+
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_14_ENET_TDATA00, 0);
60+
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_15_ENET_TDATA01, 0);
61+
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_13_ENET_TX_EN, 0);
62+
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_08_ENET_REF_CLK1, 1);
63+
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_12_ENET_RX_ER, 0);
64+
IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_41_ENET_MDC, 0);
65+
IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_40_ENET_MDIO, 0);
66+
67+
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_04_GPIO1_IO04, 0xB0A9u);
68+
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B1_06_GPIO1_IO22, 0xB0A9u);
69+
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_10_ENET_RDATA00, 0xB0E9);
70+
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_09_ENET_RDATA01, 0xB0E9);
71+
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_11_ENET_RX_EN, 0xB0E9);
72+
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_14_ENET_TDATA00, 0xB0E9);
73+
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_15_ENET_TDATA01, 0xB0E9);
74+
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_13_ENET_TX_EN, 0xB0E9);
75+
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_08_ENET_REF_CLK1, 0x31);
76+
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_12_ENET_RX_ER, 0xB0E9);
77+
IOMUXC_SetPinConfig(IOMUXC_GPIO_EMC_41_ENET_MDC, 0xB0E9);
78+
IOMUXC_SetPinConfig(IOMUXC_GPIO_EMC_40_ENET_MDIO, 0xB829);
79+
80+
IOMUXC_EnableMode(IOMUXC_GPR, kIOMUXC_GPR_ENET1TxClkOutputDir, true);
81+
82+
/* Initialize ENET_INT GPIO */
83+
GPIO_PinInit(GPIO1, 4, &enet_gpio_config);
84+
GPIO_PinInit(GPIO1, 22, &enet_gpio_config);
85+
86+
/* pull up the ENET_INT before RESET. */
87+
GPIO_WritePinOutput(GPIO1, 22, 1);
88+
GPIO_WritePinOutput(GPIO1, 4, 0);
89+
#endif
90+
4691
return 0;
4792
}
4893

94+
#if DT_NODE_HAS_STATUS(DT_NODELABEL(enet), okay) && CONFIG_NET_L2_ETHERNET
95+
static int mimxrt1024_evk_phy_reset(const struct device *dev)
96+
{
97+
/* RESET PHY chip. */
98+
k_busy_wait(USEC_PER_MSEC * 10U);
99+
GPIO_WritePinOutput(GPIO1, 4, 1);
100+
101+
return 0;
102+
}
103+
#endif
104+
49105
SYS_INIT(mimxrt1024_evk_init, PRE_KERNEL_1, 0);
106+
#if DT_NODE_HAS_STATUS(DT_NODELABEL(enet), okay) && CONFIG_NET_L2_ETHERNET
107+
SYS_INIT(mimxrt1024_evk_phy_reset, PRE_KERNEL_2, 1);
108+
#endif

0 commit comments

Comments
 (0)