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

Max Merchel max.merchel at ew.tq-group.com
Thu Mar 12 15:43:49 CET 2026


Am 12.03.26 um 10:57 schrieb Max Merchel:
> 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>
> ---

Drop this Patch.

The values ​​can be read from the device trees, and therefore the
changes will be removed in the following series

Max

>   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);
>   

-- 
Best regards,
Max

TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany
Amtsgericht München, HRB 105018
Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider
http://www.tq-group.com/



More information about the U-Boot mailing list