From 0d33a3427edfa6d50e183569f70cf5b08aad4df7 Mon Sep 17 00:00:00 2001 From: Daniel DeGrasse Date: Mon, 10 Jan 2022 15:29:53 -0600 Subject: [PATCH] boards: mimxrt1170_evk: Enable ethernet for RT1170 evk Enables ethernet for RT1170 EVK. Tested using samples/net/telnet. Signed-off-by: Daniel DeGrasse --- boards/arm/mimxrt1170_evk/Kconfig.defconfig | 7 ++ boards/arm/mimxrt1170_evk/doc/index.rst | 88 ++++++++++++------- .../arm/mimxrt1170_evk/mimxrt1170_evk_cm7.dts | 7 ++ .../mimxrt1170_evk/mimxrt1170_evk_cm7.yaml | 1 + boards/arm/mimxrt1170_evk/pinmux.c | 12 ++- 5 files changed, 78 insertions(+), 37 deletions(-) diff --git a/boards/arm/mimxrt1170_evk/Kconfig.defconfig b/boards/arm/mimxrt1170_evk/Kconfig.defconfig index 03017bbf2aa..d1fdc0fcb7c 100644 --- a/boards/arm/mimxrt1170_evk/Kconfig.defconfig +++ b/boards/arm/mimxrt1170_evk/Kconfig.defconfig @@ -42,4 +42,11 @@ endchoice endif #FLASH +if NETWORKING + +config NET_L2_ETHERNET + default y if CPU_CORTEX_M7 # No cache memory support is required for driver + +endif # NETWORKING + endif # BOARD_MIMXRT1170_EVK_CM7 || BOARD_MIMXRT1170_EVK_CM4 diff --git a/boards/arm/mimxrt1170_evk/doc/index.rst b/boards/arm/mimxrt1170_evk/doc/index.rst index a4d7c9e6ddf..732cd1c790a 100644 --- a/boards/arm/mimxrt1170_evk/doc/index.rst +++ b/boards/arm/mimxrt1170_evk/doc/index.rst @@ -117,6 +117,8 @@ features: +-----------+------------+-------------------------------------+ | WATCHDOG | on-chip | watchdog | +-----------+------------+-------------------------------------+ +| ENET | on-chip | ethernet | ++-----------+------------+-------------------------------------+ The default configuration can be found in the defconfig file: ``boards/arm/mimxrt1170_evk/mimxrt1170_evk_cm7_defconfig`` @@ -128,39 +130,59 @@ Connections and I/Os The MIMXRT1170 SoC has six pairs of pinmux/gpio controllers. -+---------------+-----------------+---------------------------+ -| Name | Function | Usage | -+===============+=================+===========================+ -| WAKEUP | GPIO | SW7 | -+---------------+-----------------+---------------------------+ -| GPIO_AD_04 | GPIO | LED | -+---------------+-----------------+---------------------------+ -| GPIO_AD_24 | LPUART1_TX | UART Console | -+---------------+-----------------+---------------------------+ -| GPIO_AD_25 | LPUART1_RX | UART Console | -+---------------+-----------------+---------------------------+ -| GPIO_LPSR_00 | CAN3_TX | flexcan | -+---------------+-----------------+---------------------------+ -| GPIO_LPSR_01 | CAN3_RX | flexcan | -+---------------+-----------------+---------------------------+ -| GPIO_AD_29 | SPI1_CS0 | spi | -+---------------+-----------------+---------------------------+ -| GPIO_AD_28 | SPI1_CLK | spi | -+---------------+-----------------+---------------------------+ -| GPIO_AD_30 | SPI1_SDO | spi | -+---------------+-----------------+---------------------------+ -| GPIO_AD_31 | SPI1_SDI | spi | -+---------------+-----------------+---------------------------+ -| GPIO_AD_08 | LPI2C1_SCL | i2c | -+---------------+-----------------+---------------------------+ -| GPIO_AD_09 | LPI2C1_SDA | i2c | -+---------------+-----------------+---------------------------+ -| GPIO_LPSR_05 | LPI2C5_SCL | i2c | -+---------------+-----------------+---------------------------+ -| GPIO_LPSR_04 | LPI2C5_SDA | i2c | -+---------------+-----------------+---------------------------+ -| GPIO_AD_04 | FLEXPWM1_PWM2 | pwm | -+---------------+-----------------+---------------------------+ ++-----------------+-----------------+---------------------------+ +| Name | Function | Usage | ++-----------------+-----------------+---------------------------+ +| WAKEUP | GPIO | SW7 | ++-----------------+-----------------+---------------------------+ +| GPIO_AD_04 | GPIO | LED | ++-----------------+-----------------+---------------------------+ +| GPIO_AD_24 | LPUART1_TX | UART Console | ++-----------------+-----------------+---------------------------+ +| GPIO_AD_25 | LPUART1_RX | UART Console | ++-----------------+-----------------+---------------------------+ +| GPIO_LPSR_00 | CAN3_TX | flexcan | ++-----------------+-----------------+---------------------------+ +| GPIO_LPSR_01 | CAN3_RX | flexcan | ++-----------------+-----------------+---------------------------+ +| GPIO_AD_29 | SPI1_CS0 | spi | ++-----------------+-----------------+---------------------------+ +| GPIO_AD_28 | SPI1_CLK | spi | ++-----------------+-----------------+---------------------------+ +| GPIO_AD_30 | SPI1_SDO | spi | ++-----------------+-----------------+---------------------------+ +| GPIO_AD_31 | SPI1_SDI | spi | ++-----------------+-----------------+---------------------------+ +| GPIO_AD_08 | LPI2C1_SCL | i2c | ++-----------------+-----------------+---------------------------+ +| GPIO_AD_09 | LPI2C1_SDA | i2c | ++-----------------+-----------------+---------------------------+ +| GPIO_LPSR_05 | LPI2C5_SCL | i2c | ++-----------------+-----------------+---------------------------+ +| GPIO_LPSR_04 | LPI2C5_SDA | i2c | ++-----------------+-----------------+---------------------------+ +| GPIO_AD_04 | FLEXPWM1_PWM2 | pwm | ++-----------------+-----------------+---------------------------+ +| GPIO_AD_32 | ENET_MDC | Ethernet | ++-----------------+-----------------+---------------------------+ +| GPIO_AD_33 | ENET_MDIO | Ethernet | ++-----------------+-----------------+---------------------------+ +| GPIO_DISP_B2_02 | ENET_TX_DATA00 | Ethernet | ++-----------------+-----------------+---------------------------+ +| GPIO_DISP_B2_03 | ENET_TX_DATA01 | Ethernet | ++-----------------+-----------------+---------------------------+ +| GPIO_DISP_B2_04 | ENET_TX_EN | Ethernet | ++-----------------+-----------------+---------------------------+ +| GPIO_DISP_B2_05 | ENET_REF_CLK | Ethernet | ++-----------------+-----------------+---------------------------+ +| GPIO_DISP_B2_06 | ENET_RX_DATA00 | Ethernet | ++-----------------+-----------------+---------------------------+ +| GPIO_DISP_B2_07 | ENET_RX_DATA01 | Ethernet | ++-----------------+-----------------+---------------------------+ +| GPIO_DISP_B2_08 | ENET_RX_EN | Ethernet | ++-----------------+-----------------+---------------------------+ +| GPIO_DISP_B2_09 | ENET_RX_ER | Ethernet | ++-----------------+-----------------+---------------------------+ System Clock diff --git a/boards/arm/mimxrt1170_evk/mimxrt1170_evk_cm7.dts b/boards/arm/mimxrt1170_evk/mimxrt1170_evk_cm7.dts index dbb9c9899a7..36ed22506c5 100644 --- a/boards/arm/mimxrt1170_evk/mimxrt1170_evk_cm7.dts +++ b/boards/arm/mimxrt1170_evk/mimxrt1170_evk_cm7.dts @@ -121,3 +121,10 @@ &wdog1 { status = "okay"; }; + +&enet { + status = "okay"; + ptp { + status = "okay"; + }; +}; diff --git a/boards/arm/mimxrt1170_evk/mimxrt1170_evk_cm7.yaml b/boards/arm/mimxrt1170_evk/mimxrt1170_evk_cm7.yaml index 6f95f67e958..ff854ba415b 100644 --- a/boards/arm/mimxrt1170_evk/mimxrt1170_evk_cm7.yaml +++ b/boards/arm/mimxrt1170_evk/mimxrt1170_evk_cm7.yaml @@ -24,3 +24,4 @@ supported: - pwm - dma - watchdog + - netif:eth diff --git a/boards/arm/mimxrt1170_evk/pinmux.c b/boards/arm/mimxrt1170_evk/pinmux.c index 40960fd4d88..68bbc34c334 100644 --- a/boards/arm/mimxrt1170_evk/pinmux.c +++ b/boards/arm/mimxrt1170_evk/pinmux.c @@ -108,12 +108,13 @@ static int mimxrt1170_evk_init(const struct device *dev) #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(enet), okay) && CONFIG_NET_L2_ETHERNET + IOMUXC_SetPinMux(IOMUXC_GPIO_AD_12_GPIO9_IO11, 0U); IOMUXC_SetPinMux(IOMUXC_GPIO_AD_32_ENET_MDC, 0U); IOMUXC_SetPinMux(IOMUXC_GPIO_AD_33_ENET_MDIO, 0U); IOMUXC_SetPinMux(IOMUXC_GPIO_DISP_B2_02_ENET_TX_DATA00, 0U); IOMUXC_SetPinMux(IOMUXC_GPIO_DISP_B2_03_ENET_TX_DATA01, 0U); IOMUXC_SetPinMux(IOMUXC_GPIO_DISP_B2_04_ENET_TX_EN, 0U); - IOMUXC_SetPinMux(IOMUXC_GPIO_DISP_B2_05_ENET_REF_CLK1, 1U); + IOMUXC_SetPinMux(IOMUXC_GPIO_DISP_B2_05_ENET_REF_CLK, 1U); IOMUXC_SetPinMux(IOMUXC_GPIO_DISP_B2_06_ENET_RX_DATA00, 1U); IOMUXC_SetPinMux(IOMUXC_GPIO_DISP_B2_07_ENET_RX_DATA01, 1U); IOMUXC_SetPinMux(IOMUXC_GPIO_DISP_B2_08_ENET_RX_EN, 0U); @@ -126,7 +127,7 @@ static int mimxrt1170_evk_init(const struct device *dev) IOMUXC_SetPinConfig(IOMUXC_GPIO_DISP_B2_02_ENET_TX_DATA00, 0x02U); IOMUXC_SetPinConfig(IOMUXC_GPIO_DISP_B2_03_ENET_TX_DATA01, 0x02U); IOMUXC_SetPinConfig(IOMUXC_GPIO_DISP_B2_04_ENET_TX_EN, 0x02U); - IOMUXC_SetPinConfig(IOMUXC_GPIO_DISP_B2_05_ENET_REF_CLK1, 0x02U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_DISP_B2_05_ENET_REF_CLK, 0x03U); IOMUXC_SetPinConfig(IOMUXC_GPIO_DISP_B2_06_ENET_RX_DATA00, 0x06U); IOMUXC_SetPinConfig(IOMUXC_GPIO_DISP_B2_07_ENET_RX_DATA01, 0x06U); IOMUXC_SetPinConfig(IOMUXC_GPIO_DISP_B2_08_ENET_RX_EN, 0x06U); @@ -138,8 +139,11 @@ static int mimxrt1170_evk_init(const struct device *dev) GPIO_PinInit(GPIO12, 12, &enet_gpio_config); /* pull up the ENET_INT before RESET. */ - GPIO_WritePinOutput(GPIO1, 11, 1); - GPIO_WritePinOutput(GPIO1, 12, 0); + GPIO_WritePinOutput(GPIO9, 11, 1); + GPIO_WritePinOutput(GPIO12, 12, 0); + + /* 50M ENET_REF_CLOCK output to PHY and ENET module. */ + IOMUXC_GPR->GPR4 |= 0x3; #endif