]> git.baikalelectronics.ru Git - kernel.git/commit
PCI: aardvark: Improve link training
authorMarek Behún <marek.behun@nic.cz>
Thu, 30 Apr 2020 08:06:17 +0000 (10:06 +0200)
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Mon, 18 May 2020 13:40:38 +0000 (14:40 +0100)
commite63aa31f409a9a5d48f2e9e5af00d0b392ce9987
tree3e109600deb69dd4847d231a6be51a971b453a3f
parent9386f0caf48ae87666aadf8d3fda6830fc02eb61
PCI: aardvark: Improve link training

Currently the aardvark driver trains link in PCIe gen2 mode. This may
cause some buggy gen1 cards (such as Compex WLE900VX) to be unstable or
even not detected. Moreover when ASPM code tries to retrain link second
time, these cards may stop responding and link goes down. If gen1 is
used this does not happen.

Unconditionally forcing gen1 is not a good solution since it may have
performance impact on gen2 cards.

To overcome this, read 'max-link-speed' property (as defined in PCI
device tree bindings) and use this as max gen mode. Then iteratively try
link training at this mode or lower until successful. After successful
link training choose final controller gen based on Negotiated Link Speed
from Link Status register, which should match card speed.

Link: https://lore.kernel.org/r/20200430080625.26070-5-pali@kernel.org
Tested-by: Tomasz Maciej Nowak <tmn505@gmail.com>
Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Marek Behún <marek.behun@nic.cz>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Acked-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
drivers/pci/controller/pci-aardvark.c