]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
net: mediatek: optimize the switch reset delay wait time
authorWeijie Gao <weijie.gao@mediatek.com>
Wed, 19 Jul 2023 09:16:59 +0000 (17:16 +0800)
committerTom Rini <trini@konsulko.com>
Thu, 3 Aug 2023 13:40:50 +0000 (09:40 -0400)
Not all switches requires 1 second delay after deasserting reset.
MT7531 requires only maximum 200ms.

This patch defines dedicated reset wait time for each switch chip, and will
significantly improve the boot time for boards using MT7531.

Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
drivers/net/mtk_eth.c

index 90f1d2591b6eb030684e8ec9511a976dabb82b6d..cd72070ff625c05426712b9bd8d07f6297a4e84f 100644 (file)
@@ -127,6 +127,7 @@ struct mtk_eth_priv {
        u32 mt753x_smi_addr;
        u32 mt753x_phy_base;
        u32 mt753x_pmcr;
+       u32 mt753x_reset_wait_time;
 
        struct gpio_desc rst_gpio;
        int mcm;
@@ -943,12 +944,12 @@ int mt753x_switch_init(struct mtk_eth_priv *priv)
                reset_assert(&priv->rst_mcm);
                udelay(1000);
                reset_deassert(&priv->rst_mcm);
-               mdelay(1000);
+               mdelay(priv->mt753x_reset_wait_time);
        } else if (dm_gpio_is_valid(&priv->rst_gpio)) {
                dm_gpio_set_value(&priv->rst_gpio, 0);
                udelay(1000);
                dm_gpio_set_value(&priv->rst_gpio, 1);
-               mdelay(1000);
+               mdelay(priv->mt753x_reset_wait_time);
        }
 
        ret = priv->switch_init(priv);
@@ -1528,11 +1529,13 @@ static int mtk_eth_of_to_plat(struct udevice *dev)
                        priv->switch_init = mt7530_setup;
                        priv->switch_mac_control = mt7530_mac_control;
                        priv->mt753x_smi_addr = MT753X_DFL_SMI_ADDR;
+                       priv->mt753x_reset_wait_time = 1000;
                } else if (!strcmp(str, "mt7531")) {
                        priv->sw = SW_MT7531;
                        priv->switch_init = mt7531_setup;
                        priv->switch_mac_control = mt7531_mac_control;
                        priv->mt753x_smi_addr = MT753X_DFL_SMI_ADDR;
+                       priv->mt753x_reset_wait_time = 200;
                } else {
                        printf("error: unsupported switch\n");
                        return -EINVAL;