mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 15:32:33 +00:00
53 lines
1.8 KiB
Diff
53 lines
1.8 KiB
Diff
|
From 0cb2a8f3456ff1cc51d571e287a48e8fddc98ec2 Mon Sep 17 00:00:00 2001
|
||
|
From: Sergio Paracuellos <sergio.paracuellos@gmail.com>
|
||
|
Date: Sat, 31 Dec 2022 08:40:41 +0100
|
||
|
Subject: PCI: mt7621: Delay phy ports initialization
|
||
|
|
||
|
Some devices like ZBT WE1326 and ZBT WF3526-P and some Netgear models need
|
||
|
to delay phy port initialization after calling the mt7621_pcie_init_port()
|
||
|
driver function to get into reliable boots for both warm and hard resets.
|
||
|
|
||
|
The delay required to detect the ports seems to be in the range [75-100]
|
||
|
milliseconds.
|
||
|
|
||
|
If the ports are not detected the controller is not functional.
|
||
|
|
||
|
There is no datasheet or something similar to really understand why this
|
||
|
extra delay is needed only for these devices and it is not for most of
|
||
|
the boards that are built on mt7621 SoC.
|
||
|
|
||
|
This issue has been reported by openWRT community and the complete
|
||
|
discussion is in [0]. The 100 milliseconds delay has been tested in all
|
||
|
devices to validate it.
|
||
|
|
||
|
Add the extra 100 milliseconds delay to fix the issue.
|
||
|
|
||
|
[0]: https://github.com/openwrt/openwrt/pull/11220
|
||
|
|
||
|
Link: https://lore.kernel.org/r/20221231074041.264738-1-sergio.paracuellos@gmail.com
|
||
|
Fixes: 2bdd5238e756 ("PCI: mt7621: Add MediaTek MT7621 PCIe host controller driver")
|
||
|
Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
|
||
|
Signed-off-by: Lorenzo Pieralisi <lpieralisi@kernel.org>
|
||
|
---
|
||
|
drivers/pci/controller/pcie-mt7621.c | 2 ++
|
||
|
1 file changed, 2 insertions(+)
|
||
|
|
||
|
--- a/drivers/pci/controller/pcie-mt7621.c
|
||
|
+++ b/drivers/pci/controller/pcie-mt7621.c
|
||
|
@@ -58,6 +58,7 @@
|
||
|
#define PCIE_PORT_LINKUP BIT(0)
|
||
|
#define PCIE_PORT_CNT 3
|
||
|
|
||
|
+#define INIT_PORTS_DELAY_MS 100
|
||
|
#define PERST_DELAY_MS 100
|
||
|
|
||
|
/**
|
||
|
@@ -374,6 +375,7 @@ static int mt7621_pcie_init_ports(struct
|
||
|
}
|
||
|
}
|
||
|
|
||
|
+ msleep(INIT_PORTS_DELAY_MS);
|
||
|
mt7621_pcie_reset_ep_deassert(pcie);
|
||
|
|
||
|
tmp = NULL;
|