PCI: aardvark: Wait for endpoint to be ready before training link
authorRemi Pommarel <repk@triplefau.lt>
Wed, 22 May 2019 21:33:50 +0000 (23:33 +0200)
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Tue, 15 Oct 2019 09:38:23 +0000 (10:38 +0100)
commitf4c7d053d7f77cd5c1a1ba7c7ce085ddba13d1d7
treef72e1e1d4670d83d616ae64b7185c6c40891edc4
parent364b3f1ff8f096d45f042a9c85daf7a1fc78413e
PCI: aardvark: Wait for endpoint to be ready before training link

When configuring pcie reset pin from gpio (e.g. initially set by
u-boot) to pcie function this pin goes low for a brief moment
asserting the PERST# signal. Thus connected device enters fundamental
reset process and link configuration can only begin after a minimal
100ms delay (see [1]).

Because the pin configuration comes from the "default" pinctrl it is
implicitly configured before the probe callback is called:

driver_probe_device()
  really_probe()
    ...
    pinctrl_bind_pins() /* Here pin goes from gpio to PCIE reset
                           function and PERST# is asserted */
    ...
    drv->probe()

[1] "PCI Express Base Specification", REV. 4.0
    PCI Express, February 19 2014, 6.6.1 Conventional Reset

Signed-off-by: Remi Pommarel <repk@triplefau.lt>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
drivers/pci/controller/pci-aardvark.c