linux_old1/drivers/pci/host
Tomasz Nowicki 44f22bd91e PCI: Add MCFG quirks for Cavium ThunderX pass2.x host controller
ThunderX PCIe controller to off-chip devices (so-called PEM) is not fully
compliant with ECAM standard. It uses non-standard configuration space
accessors (see thunder_pem_ecam_ops) and custom configuration space
granulation (see bus_shift = 24). In order to access configuration space
and probe PEM as ACPI-based PCI host controller we need to add MCFG quirk
infrastructure. This involves:
1. A new thunder_pem_acpi_init() init function to locate PEM-specific
   register ranges using ACPI.
2. Export PEM thunder_pem_ecam_ops structure so it is visible to MCFG quirk
   code.
3. New quirk entries for each PEM segment. Each contains platform IDs,
   mentioned thunder_pem_ecam_ops and CFG resources.

Quirk is considered for ThunderX silicon pass2.x only which is identified
via MCFG revision 1.

ThunderX pass 2.x requires the following accessors:

  NUMA Node 0 PCI segments  0- 3: pci_generic_ecam_ops (ECAM-compliant)
  NUMA Node 0 PCI segments  4- 9: thunder_pem_ecam_ops (MCFG quirk)
  NUMA Node 1 PCI segments 10-13: pci_generic_ecam_ops (ECAM-compliant)
  NUMA Node 1 PCI segments 14-19: thunder_pem_ecam_ops (MCFG quirk)

[bhelgaas: adapt to use acpi_get_rc_resources(), update Makefile/ifdefs so
quirk doesn't depend on CONFIG_PCI_HOST_THUNDER_PEM]
Signed-off-by: Tomasz Nowicki <tn@semihalf.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
2016-12-06 13:45:49 -06:00
..
Kconfig PCI: Add MCFG quirks for Cavium ThunderX pass2.x host controller 2016-12-06 13:45:49 -06:00
Makefile PCI: Add MCFG quirks for Cavium ThunderX pass2.x host controller 2016-12-06 13:45:49 -06:00
pci-aardvark.c PCI: aardvark: Remove unused platform data 2016-10-11 19:44:04 -05:00
pci-dra7xx.c PCI: dra7xx: Reorder struct dra7xx_pcie 2016-10-12 00:05:54 -05:00
pci-exynos.c PCI: exynos: Reorder struct exynos_pcie 2016-10-11 21:30:52 -05:00
pci-host-common.c Merge branch 'pci/enumeration' into next 2016-10-03 09:43:19 -05:00
pci-host-generic.c Merge branches 'pci/demodularize-hosts' and 'pci/host-request-windows' into next 2016-08-01 12:23:57 -05:00
pci-hyperv.c PCI: hv: Handle hv_pci_generic_compl() error case 2016-09-06 12:23:30 -05:00
pci-imx6.c PCI: imx6: Remove unused return values 2016-10-11 22:26:28 -05:00
pci-keystone-dw.c PCI: keystone: Add app register accessors 2016-10-11 22:58:34 -05:00
pci-keystone.c PCI: keystone: Pass keystone_pcie, not address, to IRQ functions 2016-10-11 22:56:46 -05:00
pci-keystone.h PCI: keystone: Reorder struct keystone_pcie 2016-10-11 22:58:43 -05:00
pci-layerscape.c PCI: layerscape: Reorder struct ls_pcie 2016-10-11 23:15:58 -05:00
pci-mvebu.c PCI: mvebu: Use existing of_node pointer 2016-10-11 23:19:05 -05:00
pci-rcar-gen2.c PCI: rcar-gen2: Add local struct device pointers 2016-10-11 23:34:57 -05:00
pci-tegra.c PCI: tegra: Remove unused platform data 2016-10-11 23:45:32 -05:00
pci-thunder-ecam.c Merge branches 'pci/demodularize-hosts' and 'pci/host-request-windows' into next 2016-08-01 12:23:57 -05:00
pci-thunder-pem.c PCI: Add MCFG quirks for Cavium ThunderX pass2.x host controller 2016-12-06 13:45:49 -06:00
pci-versatile.c PCI: versatile: Fix pci_remap_iospace() failure path 2016-09-06 12:41:15 -05:00
pci-xgene-msi.c irqdomain/msi: Use fwnode instead of of_node 2015-10-13 19:01:25 +02:00
pci-xgene.c PCI: xgene: Add register accessors 2016-10-11 23:54:31 -05:00
pcie-altera-msi.c Merge branches 'pci/host-aardvark', 'pci/host-altera', 'pci/host-artpec', 'pci/host-designware', 'pci/host-hv', 'pci/host-keystone', 'pci/host-rcar', 'pci/host-rockchip', 'pci/host-tegra' and 'pci/host-xilinx' into next 2016-10-05 13:59:14 -05:00
pcie-altera.c PCI: altera: Simplify TLP_CFG_DW1 usage 2016-10-11 19:57:49 -05:00
pcie-armada8k.c PCI: armada: Reorder struct armada8k_pcie 2016-10-11 20:33:01 -05:00
pcie-artpec6.c PCI: artpec6: Add resource name comments 2016-10-11 20:49:40 -05:00
pcie-designware-plat.c PCI: designware-plat: Remove unused platform data 2016-10-11 08:38:46 -05:00
pcie-designware.c PCI: designware: Swap order of dw_pcie_writel_unroll() reg/val arguments 2016-10-11 08:34:47 -05:00
pcie-designware.h PCI: designware: Export dw_pcie_readl_rc(), dw_pcie_writel_rc() 2016-10-11 08:31:52 -05:00
pcie-hisi.c PCI: Add MCFG quirks for HiSilicon Hip05/06/07 host controllers 2016-12-06 13:45:49 -06:00
pcie-iproc-bcma.c PCI: iproc: Validate CSR base in BCMA setup code 2016-10-11 22:38:51 -05:00
pcie-iproc-msi.c PCI: iproc: Add iProc PCIe MSI support 2016-01-06 18:04:35 -06:00
pcie-iproc-platform.c PCI: iproc: Set drvdata at end of probe function 2016-10-11 22:36:38 -05:00
pcie-iproc.c PCI: iproc: Hard-code PCIe capability offset instead of searching 2016-10-11 22:44:22 -05:00
pcie-iproc.h PCI: iproc: Add iProc PCIe MSI support 2016-01-06 18:04:35 -06:00
pcie-qcom.c PCI: qcom: Reorder struct qcom_pcie 2016-10-11 23:27:46 -05:00
pcie-rcar.c PCI: rcar: Remove DRV_NAME macro 2016-10-11 23:34:49 -05:00
pcie-rockchip.c PCI: rockchip: Indent "if" statement body 2016-10-12 07:14:09 -05:00
pcie-spear13xx.c PCI: spear: Clean up struct device usage 2016-10-11 08:45:47 -05:00
pcie-xilinx-nwl.c PCI: xilinx-nwl: Remove unused platform data 2016-10-12 00:00:51 -05:00
pcie-xilinx.c PCI: xilinx: Removed unused xilinx_pcie_assign_msi() argument 2016-10-12 00:00:00 -05:00
vmd.c PCI changes for the v4.9 merge window: 2016-10-07 11:46:37 -07:00