]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
Revert "arm64: a37xx: pci: Assert PERST# signal when unloading driver"
authorPali Rohár <pali@kernel.org>
Wed, 23 Dec 2020 15:07:08 +0000 (16:07 +0100)
committerStefan Roese <sr@denx.de>
Mon, 28 Dec 2020 08:42:06 +0000 (09:42 +0100)
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@kernel.org>
Reviewed-by: Stefan Roese <sr@denx.de>
drivers/pci/pci-aardvark.c

index babb84ca937fefec1c9a2a6e3e131364f79c0930..5c6e30e6671d2b5b606b4d8b1baa175b01034eba 100644 (file)
@@ -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);