]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
PCI: rcar: Fix bridge logic configuration accesses
authorBen Dooks <ben.dooks@codethink.co.uk>
Tue, 18 Feb 2014 02:11:11 +0000 (11:11 +0900)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 18 Feb 2014 20:19:59 +0000 (13:19 -0700)
The bridge logic at slot 0 only supports reads up to 0x40 and the rest of
the PCI configuration space for this slot is marked as reserved in the
manual.

Trying a read from offset 0x100 is producing an error from the bridge. With
error interrupts enabled, the following is printed:

  pci-rcar-gen2 ee0d0000.pci: error irq: status 00000014

Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Simon Horman <horms+renesas@verge.net.au>
drivers/pci/host/pci-rcar-gen2.c

index 11e444e79f4529f99a5efde4e53594ef90be93ac..6288476576a7b26881bd7452b2caedc487719484 100644 (file)
@@ -119,6 +119,10 @@ static void __iomem *rcar_pci_cfg_base(struct pci_bus *bus, unsigned int devfn,
        if (slot > 2)
                return NULL;
 
+       /* bridge logic only has registers to 0x40 */
+       if (slot == 0x0 && where >= 0x40)
+               return NULL;
+
        val = slot ? RCAR_AHBPCI_WIN1_DEVICE | RCAR_AHBPCI_WIN_CTR_CFG :
                     RCAR_AHBPCI_WIN1_HOST | RCAR_AHBPCI_WIN_CTR_CFG;