[PATCH] Revert "arm64: a37xx: pci: Assert PERST# signal when unloading driver"
Stefan Roese
sr at denx.de
Mon Dec 28 09:35:41 CET 2020
On 23.12.20 16:07, Pali Rohár wrote:
> This reverts commit 828d32621686aec593076d16445d39b9b8d49c05.
>
> This change revers code which asserting PERST# signal when unloading
> driver. Driver's remove callback is still there as it is used for other
> functionality.
>
> Asserting PERST# signal prior booting kernel is causing that A3720 boards
> (Turris MOX and Espressobin) with stable Linux kernel versions 4.14 and
> 4.19 are not able to detect some PCIe cards (e.g. Compex WLE200 and WLE900)
> and anymore. When PERST# signal is not asserted these cards are detected
> correctly. As this is regression for existing stable Linux kernel versions
> revert this problematic change in U-Boot.
>
> To make cards working with OpenWRT 4.14 kernel it is needed to disable link
> training prior booting kernel, which is already done in driver's remove
> callback.
>
> Described issue is in Linux kernel pci aardvark driver which is (hopefully)
> fixed in latest upstream versions. Latest upstream versions should be able
> to initialize PCIe bus and detects cards independently of the link training
> and PERST# signal state.
>
> So with this change, U-Boot on A3720 boards should be able to boot OpenWRT
> 4.14 kernel, stable 4.14 and 4.19 kernels and also latest mainline kernels.
>
> Signed-off-by: Pali Rohár <pali at kernel.org>
> ---
> Stefan, please include this patch for U-Boot 2020.01 release. It fixes
> using PCIe cards on Espressobin with OpenWRT which Gérald reported to
> me and I was reproduced it.
Will do.
Reviewed-by: Stefan Roese <sr at denx.de>
Thanks,
Stefan
> Gérald, if you have a time please this patch if it fixes this issue.
>
> I have tested this patch with OpenWRT 4.14 kernel, stable 4.19 kernel
> and mainline 5.10 on Espressobin. And with OpenWRT TurrisOS 4.14 kernel
> and mainline 5.10 on Turris MOX. Both after cold boot and reboot with
> Compex WLE900 and WLE200 cards.
>
> I hope that there would not be any new regression.
> ---
> drivers/pci/pci-aardvark.c | 3 ---
> 1 file changed, 3 deletions(-)
>
> diff --git a/drivers/pci/pci-aardvark.c b/drivers/pci/pci-aardvark.c
> index babb84ca93..5c6e30e667 100644
> --- a/drivers/pci/pci-aardvark.c
> +++ b/drivers/pci/pci-aardvark.c
> @@ -649,9 +649,6 @@ static int pcie_advk_remove(struct udevice *dev)
> struct pcie_advk *pcie = dev_get_priv(dev);
> u32 reg;
>
> - if (dm_gpio_is_valid(&pcie->reset_gpio))
> - dm_gpio_set_value(&pcie->reset_gpio, 1);
> -
> reg = advk_readl(pcie, PCIE_CORE_CTRL0_REG);
> reg &= ~LINK_TRAINING_EN;
> advk_writel(pcie, reg, PCIE_CORE_CTRL0_REG);
>
Viele Grüße,
Stefan
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de
More information about the U-Boot
mailing list