diff mbox series

[17/29] net: mediatek: optimize the switch reset delay wait time

Message ID f9206f28fa3895bc67134928a79114d874757bed.1689756363.git.weijie.gao@mediatek.com
State Accepted
Commit c41a058fb2a3405a36d70274d8415957e46fa0d6
Delegated to: Tom Rini
Headers show
Series Add support for MediaTek MT7988 SoC | expand

Commit Message

Weijie Gao (高惟杰) July 19, 2023, 9:16 a.m. UTC
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 | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/drivers/net/mtk_eth.c b/drivers/net/mtk_eth.c
index 90f1d2591b..cd72070ff6 100644
--- a/drivers/net/mtk_eth.c
+++ b/drivers/net/mtk_eth.c
@@ -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;