[PATCH 12/13] board: tqma6: use runtime SoC detection in enet setup

Max Merchel Max.Merchel at ew.tq-group.com
Thu Mar 12 10:57:08 CET 2026


Select the appropriate settings based on the CPU type during
Ethernet configuration.

Signed-off-by: Paul Gerber <Paul.Gerber at ew.tq-group.com>
Signed-off-by: Max Merchel <Max.Merchel at ew.tq-group.com>
---
 board/tq/tqma6/tqma6_mba6.c | 124 ++++++++++++++++++++----------------
 1 file changed, 69 insertions(+), 55 deletions(-)

diff --git a/board/tq/tqma6/tqma6_mba6.c b/board/tq/tqma6/tqma6_mba6.c
index 32aeb1b07c8..f1b9dc8d372 100644
--- a/board/tq/tqma6/tqma6_mba6.c
+++ b/board/tq/tqma6/tqma6_mba6.c
@@ -33,21 +33,21 @@
 
 #include "../common/tq_bb.h"
 
-#if defined(CONFIG_TQMA6Q)
+#define TQMA6Q_IOMUX_SW_PAD_CTRL_GRP_DDR_TYPE_RGMII	0x02e0790
+#define TQMA6Q_IOMUX_SW_PAD_CTRL_GRP_RGMII_TERM		0x02e07ac
 
-#define IOMUX_SW_PAD_CTRL_GRP_DDR_TYPE_RGMII	0x02e0790
-#define IOMUX_SW_PAD_CTRL_GRP_RGMII_TERM	0x02e07ac
+#define TQMA6DL_IOMUX_SW_PAD_CTRL_GRP_DDR_TYPE_RGMII	0x02e0768
+#define TQMA6DL_IOMUX_SW_PAD_CTRL_GRP_RGMII_TERM	0x02e0788
 
-#elif defined(CONFIG_TQMA6S) || defined(CONFIG_TQMA6DL)
+#define TQMA6Q_MBA6X_KSZ9031_CTRL_SKEW	0x0032
+#define TQMA6Q_MBA6X_KSZ9031_CLK_SKEW	0x03ff
+#define TQMA6Q_MBA6X_KSZ9031_RX_SKEW	0x3333
+#define TQMA6Q_MBA6X_KSZ9031_TX_SKEW	0x2036
 
-#define IOMUX_SW_PAD_CTRL_GRP_DDR_TYPE_RGMII	0x02e0768
-#define IOMUX_SW_PAD_CTRL_GRP_RGMII_TERM	0x02e0788
-
-#else
-
-#error "need to select module"
-
-#endif
+#define TQMA6DL_MBA6X_KSZ9031_CTRL_SKEW	0x0030
+#define TQMA6DL_MBA6X_KSZ9031_CLK_SKEW	0x03ff
+#define TQMA6DL_MBA6X_KSZ9031_RX_SKEW	0x3333
+#define TQMA6DL_MBA6X_KSZ9031_TX_SKEW	0x2052
 
 /* disable on die termination for RGMII */
 #define IOMUX_SW_PAD_CTRL_GRP_RGMII_TERM_DISABLE	0x00000000
@@ -63,10 +63,17 @@ static void mba6_setup_iomuxc_enet(void)
 	/* clear gpr1[ENET_CLK_SEL] for externel clock */
 	clrbits_le32(&iomuxc_regs->gpr[1], IOMUXC_GPR1_ENET_CLK_SEL_MASK);
 
-	__raw_writel(IOMUX_SW_PAD_CTRL_GRP_RGMII_TERM_DISABLE,
-		     (void *)IOMUX_SW_PAD_CTRL_GRP_RGMII_TERM);
-	__raw_writel(IOMUX_SW_PAD_CTRL_GRP_DDR_TYPE_RGMII_1P5V,
-		     (void *)IOMUX_SW_PAD_CTRL_GRP_DDR_TYPE_RGMII);
+	if (is_mx6sdl()) {
+		__raw_writel(IOMUX_SW_PAD_CTRL_GRP_RGMII_TERM_DISABLE,
+			     (void *)TQMA6DL_IOMUX_SW_PAD_CTRL_GRP_RGMII_TERM);
+		__raw_writel(IOMUX_SW_PAD_CTRL_GRP_DDR_TYPE_RGMII_1P5V,
+			     (void *)TQMA6DL_IOMUX_SW_PAD_CTRL_GRP_DDR_TYPE_RGMII);
+	} else if (is_mx6dq()) {
+		__raw_writel(IOMUX_SW_PAD_CTRL_GRP_RGMII_TERM_DISABLE,
+			     (void *)TQMA6Q_IOMUX_SW_PAD_CTRL_GRP_RGMII_TERM);
+		__raw_writel(IOMUX_SW_PAD_CTRL_GRP_DDR_TYPE_RGMII_1P5V,
+			     (void *)TQMA6Q_IOMUX_SW_PAD_CTRL_GRP_DDR_TYPE_RGMII);
+	}
 }
 
 int board_mmc_get_env_dev(int devno)
@@ -81,45 +88,52 @@ int board_mmc_get_env_dev(int devno)
 
 int board_phy_config(struct phy_device *phydev)
 {
-/*
- * optimized pad skew values depends on CPU variant on the TQMa6x module:
- * CONFIG_TQMA6Q: i.MX6Q/D
- * CONFIG_TQMA6S: i.MX6S
- * CONFIG_TQMA6DL: i.MX6DL
- */
-#if defined(CONFIG_TQMA6Q)
-#define MBA6X_KSZ9031_CTRL_SKEW	0x0032
-#define MBA6X_KSZ9031_CLK_SKEW	0x03ff
-#define MBA6X_KSZ9031_RX_SKEW	0x3333
-#define MBA6X_KSZ9031_TX_SKEW	0x2036
-#elif defined(CONFIG_TQMA6S) || defined(CONFIG_TQMA6DL)
-#define MBA6X_KSZ9031_CTRL_SKEW	0x0030
-#define MBA6X_KSZ9031_CLK_SKEW	0x03ff
-#define MBA6X_KSZ9031_RX_SKEW	0x3333
-#define MBA6X_KSZ9031_TX_SKEW	0x2052
-#else
-#error
-#endif
-	/* min rx/tx ctrl delay */
-	ksz9031_phy_extended_write(phydev, 2,
-				   MII_KSZ9031_EXT_RGMII_CTRL_SIG_SKEW,
-				   MII_KSZ9031_MOD_DATA_NO_POST_INC,
-				   MBA6X_KSZ9031_CTRL_SKEW);
-	/* min rx delay */
-	ksz9031_phy_extended_write(phydev, 2,
-				   MII_KSZ9031_EXT_RGMII_RX_DATA_SKEW,
-				   MII_KSZ9031_MOD_DATA_NO_POST_INC,
-				   MBA6X_KSZ9031_RX_SKEW);
-	/* max tx delay */
-	ksz9031_phy_extended_write(phydev, 2,
-				   MII_KSZ9031_EXT_RGMII_TX_DATA_SKEW,
-				   MII_KSZ9031_MOD_DATA_NO_POST_INC,
-				   MBA6X_KSZ9031_TX_SKEW);
-	/* rx/tx clk skew */
-	ksz9031_phy_extended_write(phydev, 2,
-				   MII_KSZ9031_EXT_RGMII_CLOCK_SKEW,
-				   MII_KSZ9031_MOD_DATA_NO_POST_INC,
-				   MBA6X_KSZ9031_CLK_SKEW);
+	/*
+	 * optimized pad skew values depends on CPU variant on the TQMa6x module:
+	 */
+	if (is_mx6sdl()) {
+		/* min rx/tx ctrl delay */
+		ksz9031_phy_extended_write(phydev, 2,
+					   MII_KSZ9031_EXT_RGMII_CTRL_SIG_SKEW,
+					   MII_KSZ9031_MOD_DATA_NO_POST_INC,
+					   TQMA6DL_MBA6X_KSZ9031_CTRL_SKEW);
+		/* min rx delay */
+		ksz9031_phy_extended_write(phydev, 2,
+					   MII_KSZ9031_EXT_RGMII_RX_DATA_SKEW,
+					   MII_KSZ9031_MOD_DATA_NO_POST_INC,
+					   TQMA6DL_MBA6X_KSZ9031_RX_SKEW);
+		/* max tx delay */
+		ksz9031_phy_extended_write(phydev, 2,
+					   MII_KSZ9031_EXT_RGMII_TX_DATA_SKEW,
+					   MII_KSZ9031_MOD_DATA_NO_POST_INC,
+					   TQMA6DL_MBA6X_KSZ9031_TX_SKEW);
+		/* rx/tx clk skew */
+		ksz9031_phy_extended_write(phydev, 2,
+					   MII_KSZ9031_EXT_RGMII_CLOCK_SKEW,
+					   MII_KSZ9031_MOD_DATA_NO_POST_INC,
+					   TQMA6DL_MBA6X_KSZ9031_CLK_SKEW);
+	} else if (is_mx6dq()) {
+		/* min rx/tx ctrl delay */
+		ksz9031_phy_extended_write(phydev, 2,
+					   MII_KSZ9031_EXT_RGMII_CTRL_SIG_SKEW,
+					   MII_KSZ9031_MOD_DATA_NO_POST_INC,
+					   TQMA6Q_MBA6X_KSZ9031_CTRL_SKEW);
+		/* min rx delay */
+		ksz9031_phy_extended_write(phydev, 2,
+					   MII_KSZ9031_EXT_RGMII_RX_DATA_SKEW,
+					   MII_KSZ9031_MOD_DATA_NO_POST_INC,
+					   TQMA6Q_MBA6X_KSZ9031_RX_SKEW);
+		/* max tx delay */
+		ksz9031_phy_extended_write(phydev, 2,
+					   MII_KSZ9031_EXT_RGMII_TX_DATA_SKEW,
+					   MII_KSZ9031_MOD_DATA_NO_POST_INC,
+					   TQMA6Q_MBA6X_KSZ9031_TX_SKEW);
+		/* rx/tx clk skew */
+		ksz9031_phy_extended_write(phydev, 2,
+					   MII_KSZ9031_EXT_RGMII_CLOCK_SKEW,
+					   MII_KSZ9031_MOD_DATA_NO_POST_INC,
+					   TQMA6Q_MBA6X_KSZ9031_CLK_SKEW);
+	}
 
 	phydev->drv->config(phydev);
 
-- 
2.43.0



More information about the U-Boot mailing list