u-boot/drivers/pci
Stephen Warren f5c6db84e7 pci: tegra: fix DM conversion issues on Tegra20
Tegra20's PCIe controller has a couple of quirks. There are workarounds in
the driver for these, but they don't work after the DM conversion:

1) The PCI_CLASS value is wrong in HW.

This is worked around in pci_tegra_read_config() by patching up the value
read from that register. Pre-DM, the PCIe core always read this via a
16-bit access to the 16-bit offset 0xa. With DM, 32-bit accesses are used,
so we need to check for offset 0x8 instead. Mask the offset value back to
32-bit alignment to make this work in all cases.

2) Accessing devices other than dev 1 causes a data abort.

Pre-DM, this was worked around in pci_skip_dev(), which the PCIe core code
called during enumeration while iterating over a bus. The DM PCIe core
doesn't use this function. Instead, enhance tegra_pcie_conf_address() to
validate the bdf being accessed, and refuse to access invalid devices.
Since pci_skip_dev() isn't used, delete it.

I've also validated that both these WARs are only needed for Tegra20, by
testing on Tegra30/Cardhu and Tegra124/Jetson TKx. So, compile them in
conditionally.

Fixes: e81ca88451 ("dm: tegra: pci: Convert tegra boards to driver model for PCI")
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Reviewed-by: Thierry Reding <treding@nvidia.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Tom Warren <twarren@nvidia.com>
2016-05-04 13:31:04 -07:00
..
fsl_pci_init.c fsl/pci: Set CFG_READY for PCIe v3.0 and later 2015-05-04 09:24:23 -07:00
Kconfig dm: pci: Disable PCI compatibility functions by default 2015-12-01 06:26:38 -07:00
Makefile dm: pci: video: Convert video and pci_rom to use DM PCI API 2016-01-12 10:19:09 -07:00
pci-emul-uclass.c dm: sandbox: pci: Add a PCI emulation uclass 2015-04-16 19:27:43 -06:00
pci-uclass.c pci: Device scanning range fix 2016-04-25 15:10:43 -04:00
pci.c dm: pci: Mark legacy files as such 2016-01-12 10:19:09 -07:00
pci_auto.c pci: Fix compiler warnings in dm_pciauto_setup_device() 2016-02-26 08:53:10 -07:00
pci_auto_common.c dm: pci: Break out the common region display code 2016-03-14 15:34:50 -06:00
pci_auto_old.c drivers/pci: Fix for debug builds without CONFIG_PCI_ENUM_ONLY 2016-01-14 14:08:59 +01:00
pci_common.c dm: pci: Switch to DM API for PCI address mapping 2016-01-12 10:19:09 -07:00
pci_compat.c dm: pci: Move pci_bus_to_hose() to compatibility 2016-01-24 12:07:17 +08:00
pci_ftpci100.c Merge branch 'master' of git://git.denx.de/u-boot-nds32 2013-07-25 08:51:51 -04:00
pci_gt64120.c qemu-malta: Update for SPDX license identifiers 2013-07-25 08:51:48 -04:00
pci_indirect.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
pci_internal.h dm: pci: Move pci_bus_to_hose() to compatibility 2016-01-24 12:07:17 +08:00
pci_msc01.c malta: support for coreFPGA6 boards 2013-11-09 17:21:01 +01:00
pci_mvebu.c drivers/pci/pci_mvebu: Fix for boards with X4 lanes 2016-01-14 14:08:59 +01:00
pci_rom.c pci_rom: fix may be used uninitialized warning 2016-02-24 18:43:59 -05:00
pci_sandbox.c dm: sandbox: Add a simple PCI driver 2015-04-16 19:27:43 -06:00
pci_sh4.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
pci_sh7751.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
pci_sh7780.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
pci_tegra.c pci: tegra: fix DM conversion issues on Tegra20 2016-05-04 13:31:04 -07:00
pci_x86.c x86: pci: Tidy up the generic x86 PCI driver 2015-07-14 18:03:19 -06:00
pcie_imx.c pci: imx: Adjust the return value when imx_pcie_addr_valid() fails 2016-01-08 10:15:49 -05:00
pcie_layerscape.c pci/layerscape: set LUT and msi-map for discovered PCI devices 2016-03-21 12:42:13 -07:00
tsi108_pci.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
w83c553f.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00