diff mbox series

[U-Boot,2/2] board: stm32f746-disco: Get MII/RMII phy_mode from DT

Message ID 1550844284-12219-2-git-send-email-patrice.chotard@st.com
State Accepted
Commit 77594d7fbf01f2b2c968271951d41edb515428f4
Delegated to: Tom Rini
Headers show
Series [U-Boot,1/2] configs: stm32f746-disco: Enable SPI_FLASH_MACRONIX | expand

Commit Message

Patrice CHOTARD Feb. 22, 2019, 2:04 p.m. UTC
This is needed to make ethernet work on stm32f746-eval which
uses MII mode.

Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
---

 board/st/stm32f746-disco/stm32f746-disco.c | 23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

Comments

Joe Hershberger March 4, 2019, 11:15 p.m. UTC | #1
On Fri, Feb 22, 2019 at 8:06 AM Patrice Chotard <patrice.chotard@st.com> wrote:
>
> This is needed to make ethernet work on stm32f746-eval which
> uses MII mode.
>
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>

Acked-by: Joe Hershberger <joe.hershberger@ni.com>
diff mbox series

Patch

diff --git a/board/st/stm32f746-disco/stm32f746-disco.c b/board/st/stm32f746-disco/stm32f746-disco.c
index 7c9b1ad82aa1..e89ed2153bc3 100644
--- a/board/st/stm32f746-disco/stm32f746-disco.c
+++ b/board/st/stm32f746-disco/stm32f746-disco.c
@@ -7,6 +7,8 @@ 
 #include <common.h>
 #include <dm.h>
 #include <lcd.h>
+#include <miiphy.h>
+#include <phy_interface.h>
 #include <ram.h>
 #include <spl.h>
 #include <splash.h>
@@ -123,8 +125,25 @@  int board_init(void)
 	gd->bd->bi_boot_params = gd->bd->bi_dram[0].start + 0x100;
 
 #ifdef CONFIG_ETH_DESIGNWARE
-	/* Set >RMII mode */
-	STM32_SYSCFG->pmc |= SYSCFG_PMC_MII_RMII_SEL;
+	const char *phy_mode;
+	int node;
+
+	node = fdt_node_offset_by_compatible(gd->fdt_blob, 0, "st,stm32-dwmac");
+	if (node < 0)
+		return -1;
+
+	phy_mode = fdt_getprop(gd->fdt_blob, node, "phy-mode", NULL);
+
+	switch (phy_get_interface_by_name(phy_mode)) {
+	case PHY_INTERFACE_MODE_RMII:
+		STM32_SYSCFG->pmc |= SYSCFG_PMC_MII_RMII_SEL;
+		break;
+	case PHY_INTERFACE_MODE_MII:
+		STM32_SYSCFG->pmc &= ~SYSCFG_PMC_MII_RMII_SEL;
+		break;
+	default:
+		printf("PHY interface %s not supported !\n", phy_mode);
+	}
 #endif
 
 #if defined(CONFIG_CMD_BMP)