arm: a37xx: pci: Fix condition for CRS response
authorPali Rohár <pali@kernel.org>
Tue, 19 Oct 2021 09:05:01 +0000 (11:05 +0200)
committerStefan Roese <sr@denx.de>
Thu, 21 Oct 2021 05:39:05 +0000 (07:39 +0200)
As stated in comment above the code, CRS response can be returned to OS
only for 4-byte PCI_VENDOR_ID config read request. So fix the code.

Fixes: 1d7ad68559e2 ("arm: a37xx: pci: Handle propagation of CRSSVE bit from PCIe Root Port")
Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Stefan Roese <sr@denx.de>
drivers/pci/pci-aardvark.c

index ade5ab0..9e623b6 100644 (file)
@@ -445,7 +445,7 @@ static int pcie_advk_read_config(const struct udevice *bus, pci_dev_t bdf,
         * for returning CRS, so that if U-Boot does support CRS in the future,
         * it will work for Aardvark.
         */
-       allow_crs = pcie->cfgcrssve;
+       allow_crs = (offset == PCI_VENDOR_ID) && (size == PCI_SIZE_32) && pcie->cfgcrssve;
 
        if (advk_readl(pcie, PIO_START)) {
                dev_err(pcie->dev,