linux/drivers/pci/host
Gabriele Paoloni fa3b7cbab5 PCI: spear: Fix dw_pcie_cfg_read/write() usage
The first argument of dw_pcie_cfg_read/write() is a 32-bit aligned address.
The second argument is the byte offset into a 32-bit word, and
dw_pcie_cfg_read/write() only look at the low two bits.

SPEAr13xx used dw_pcie_cfg_read() and dw_pcie_cfg_write() incorrectly: it
passed important address bits in the second argument, where they were
ignored.

Pass the complete 32-bit word address in the first argument and only the
2-bit offset into that word in the second argument.

Without this fix, SPEAr13xx host will never work with few buggy gen1 card
which connects with only gen1 host and also with any endpoint which would
generate a read request of more than 128 bytes.

[bhelgaas: changelog]
Reported-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Pratyush Anand <panand@redhat.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
CC: stable@vger.kernel.org	# v3.17+
2015-11-02 14:48:36 -06:00
..
Kconfig ARM: SoC 64-bit changes for v4.3 2015-09-01 13:29:48 -07:00
Makefile Merge branches 'pci/host-designware', 'pci/host-designware-common', 'pci/host-generic', 'pci/host-imx6', 'pci/host-iproc' and 'pci/host-xgene' into next 2015-06-16 08:19:55 -05:00
pci-dra7xx.c Merge branches 'pci/host-dra7xx', 'pci/host-imx6' and 'pci/host-spear' into next 2015-08-24 14:15:05 -05:00
pci-exynos.c PCI: designware: Wait for link to come up with consistent style 2015-06-10 13:52:59 -05:00
pci-host-generic.c PCI: generic: Remove dependency on ARM-specific struct hw_pci 2015-08-20 12:02:49 -05:00
pci-imx6.c PCI: imx6: Simplify a trivial if-return sequence 2015-08-20 01:31:58 -05:00
pci-keystone-dw.c PCI: designware: Make get_msi_addr() return phys_addr_t, not u32 2015-09-18 13:58:35 -05:00
pci-keystone.c PCI/keystone: Prepare irq handlers for irq argument removal 2015-07-16 23:31:37 +02:00
pci-keystone.h PCI: designware: Make get_msi_addr() return phys_addr_t, not u32 2015-09-18 13:58:35 -05:00
pci-layerscape.c PCI: designware: Wait for link to come up with consistent style 2015-06-10 13:52:59 -05:00
pci-mvebu.c PCI: Drop references acquired by of_parse_phandle() 2015-08-20 12:02:50 -05:00
pci-rcar-gen2.c PCI: rcar: Verify that mem_res is 64K-aligned 2015-02-24 00:24:19 -06:00
pci-tegra.c PCI: Kill off set_irq_flags() usage 2015-08-11 15:17:43 -05:00
pci-versatile.c Merge branches 'pci/host-exynos', 'pci/host-iproc', 'pci/host-keystone', 'pci/host-layerscape', 'pci/host-mvebu', 'pci/host-rcar' and 'pci/host-versatile' into next 2015-04-10 08:26:54 -05:00
pci-xgene-msi.c Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-01 14:33:35 -07:00
pci-xgene.c Merge branches 'pci/enumeration' and 'pci/misc' into next 2015-08-28 15:53:08 -05:00
pcie-designware.c PCI: designware: Set up high part of MSI target address 2015-11-02 14:48:34 -06:00
pcie-designware.h PCI: designware: Make get_msi_addr() return phys_addr_t, not u32 2015-09-18 13:58:35 -05:00
pcie-iproc-bcma.c PCI: iproc: Free resource list after registration 2015-05-27 18:34:05 -05:00
pcie-iproc-platform.c PCI: iproc: Free resource list after registration 2015-05-27 18:34:05 -05:00
pcie-iproc.c PCI: iproc: enable arm64 support for iProc PCIe 2015-07-29 22:07:02 +02:00
pcie-iproc.h PCI: iproc: enable arm64 support for iProc PCIe 2015-07-29 22:07:02 +02:00
pcie-rcar.c PCI: Kill off set_irq_flags() usage 2015-08-11 15:17:43 -05:00
pcie-spear13xx.c PCI: spear: Fix dw_pcie_cfg_read/write() usage 2015-11-02 14:48:36 -06:00
pcie-xilinx.c Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-01 14:33:35 -07:00