PCI: brcmstb: Enable CRS software visibility after linkup
authorJonathan Bell <jonathan@raspberrypi.com>
Wed, 24 Jan 2024 13:55:45 +0000 (13:55 +0000)
committerDom Cobley <popcornmix@gmail.com>
Mon, 19 Feb 2024 11:35:37 +0000 (11:35 +0000)
commitc93e072ce7d776c4436178759bb651cf1e8b2bc3
tree7ed1ffa874b0a39b90cfe81d1a9e7001c5fb386d
parentcef5481417ff3e41831f3d8b6e18cebdfcdcf176
PCI: brcmstb: Enable CRS software visibility after linkup

It appears that bits in the Root Control Register are reset with
perst_n, which means the PCI layer's call to enable CRS prior to
adding/scanning the bus has no effect. Open-code the enable in
brcm_pcie_start_link as a workaround.

Without CRS visibility, configuration reads issued by the CPU don't
retire if the endpoint returns a CRS response - the RC will poll until a
(large) timeout is reached. This means the core can stall for a long
time during boot.

Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
drivers/pci/controller/pcie-brcmstb.c