summary refs log tree commit diff
diff options
context:
space:
mode:
authorPali Rohár <pali@kernel.org>2021-11-30 18:29:12 +0100
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>2021-12-02 09:55:49 +0000
commit759dec2e3dfdbd261c41d2279f04f2351c971a49 (patch)
tree7d1249306fede80390c761ff61b319162a88942d
parent1f54391be8ce0c981d312cb93acdc5608def576a (diff)
downloadlinux-759dec2e3dfdbd261c41d2279f04f2351c971a49.tar.gz
PCI: aardvark: Disable link training when unbinding driver
Disable link training circuit in driver unbind sequence. We want to
leave link training in the same state as it was before the driver was
probed.

Link: https://lore.kernel.org/r/20211130172913.9727-11-kabel@kernel.org
Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Marek Behún <kabel@kernel.org>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
-rw-r--r--drivers/pci/controller/pci-aardvark.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
index 271ebecee965..e5c88f1c177b 100644
--- a/drivers/pci/controller/pci-aardvark.c
+++ b/drivers/pci/controller/pci-aardvark.c
@@ -1741,6 +1741,11 @@ static int advk_pcie_remove(struct platform_device *pdev)
 	if (pcie->reset_gpio)
 		gpiod_set_value_cansleep(pcie->reset_gpio, 1);
 
+	/* Disable link training */
+	val = advk_readl(pcie, PCIE_CORE_CTRL0_REG);
+	val &= ~LINK_TRAINING_EN;
+	advk_writel(pcie, val, PCIE_CORE_CTRL0_REG);
+
 	/* Disable outbound address windows mapping */
 	for (i = 0; i < OB_WIN_COUNT; i++)
 		advk_pcie_disable_ob_win(pcie, i);