alistair23-linux/drivers/pci/host/Kconfig
Linus Walleij 68a15eb7bd PCI: v3-semi: Add V3 Semiconductor PCI host driver
This PCI host bridge from V3 Semiconductor needs no further
introduction. An ancient driver for it has been sitting in
arch/arm/mach-integrator/pci_v3.* since before v2.6.12 and the
initial migration to git.

But we need to get the drivers out of arch/arm/* and get proper handling of
the old drivers, rewrite and clean up so the PCI maintainer can control the
mass of drivers without having to run all over the kernel. We also switch
swiftly to all the new infrastructure found in the PCI hosts as of late.

Some code is preserved so I have added an extensive list of authors in the
top comment section.

This driver probes with the following result:

  OF: PCI: host bridge /pciv3@62000000 ranges:
  OF: PCI:   No bus range found for /pciv3@62000000, using [bus 00-ff]
  OF: PCI:    IO 0x60000000..0x6000ffff -> 0x00000000
  OF: PCI:   MEM 0x40000000..0x4fffffff -> 0x40000000
  OF: PCI:   MEM 0x50000000..0x5fffffff -> 0x50000000
  pci-v3-semi 62000000.pciv3: initialized PCI V3 Integrator/AP integration
  pci-v3-semi 62000000.pciv3: PCI host bridge to bus 0000:00
  pci_bus 0000:00: root bus resource [bus 00-ff]
  pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
  pci_bus 0000:00: root bus resource [mem 0x40000000-0x4fffffff]
  pci_bus 0000:00: root bus resource [mem 0x50000000-0x5fffffff pref]
  pci-v3-semi 62000000.pciv3: parity error interrupt
  pci-v3-semi 62000000.pciv3: master abort error interrupt
  pci-v3-semi 62000000.pciv3: PCI target LB->PCI READ abort interrupt
  pci-v3-semi 62000000.pciv3: master abort error interrupt
  (repeats a few times)
  pci 0000:00:09.0: [1011:0024] type 01 class 0x060400
  pci-v3-semi 62000000.pciv3: master abort error interrupt
  pci-v3-semi 62000000.pciv3: PCI target LB->PCI READ abort interrupt
  pci 0000:00:0b.0: [8086:1229] type 00 class 0x020000
  pci 0000:00:0b.0: reg 0x10: [mem 0x00000000-0x00000fff pref]
  pci 0000:00:0b.0: reg 0x14: [io  0x0000-0x001f]
  pci 0000:00:0b.0: reg 0x18: [mem 0x00000000-0x000fffff]
  pci 0000:00:0b.0: reg 0x30: [mem 0x00000000-0x000fffff pref]
  pci 0000:00:0b.0: supports D1 D2
  pci 0000:00:0b.0: PME# supported from D0 D1 D2 D3hot
  pci 0000:00:0c.0: [5333:8811] type 00 class 0x030000
  pci 0000:00:0c.0: reg 0x10: [mem 0x00000000-0x03ffffff]
  pci 0000:00:0c.0: reg 0x30: [mem 0x00000000-0x0000ffff pref]
  pci 0000:00:0c.0: vgaarb: VGA device added: decodes=io+mem,owns=io,locks=none
  PCI: bus0: Fast back to back transfers disabled
  PCI: bus1: Fast back to back transfers enabled
  pci 0000:00:0c.0: BAR 0: assigned [mem 0x40000000-0x43ffffff]
  pci 0000:00:0b.0: BAR 2: assigned [mem 0x44000000-0x440fffff]
  pci 0000:00:0b.0: BAR 6: assigned [mem 0x50000000-0x500fffff pref]
  pci 0000:00:0c.0: BAR 6: assigned [mem 0x50100000-0x5010ffff pref]
  pci 0000:00:0b.0: BAR 0: assigned [mem 0x50110000-0x50110fff pref]
  pci 0000:00:0b.0: BAR 1: assigned [io  0x1000-0x101f]
  pci 0000:00:09.0: PCI bridge to [bus 01]
  pci 0000:00:0b.0: Firmware left e100 interrupts enabled; disabling
  (...)
  e100: Intel(R) PRO/100 Network Driver, 3.5.24-k2-NAPI
  e100: Copyright(c) 1999-2006 Intel Corporation
  e100 0000:00:0b.0: enabling device (0146 -> 0147)
  e100 0000:00:0b.0 eth0: addr 0x50110000, irq 31, MAC addr 00:08:c7:99:d2:57

> lspci
  00:0b.0 Class 0200: 8086:1229
  00:09.0 Class 0604: 1011:0024
  00:0c.0 Class 0300: 5333:8811

> cat /proc/iomem
  40000000-4fffffff : V3 PCI NON-PRE-MEM
    40000000-43ffffff : 0000:00:0c.0
    44000000-440fffff : 0000:00:0b.0
      44000000-440fffff : e100
  50000000-5fffffff : V3 PCI PRE-MEM
    50000000-500fffff : 0000:00:0b.0
    50100000-5010ffff : 0000:00:0c.0
    50110000-50110fff : 0000:00:0b.0
      50110000-50110fff : e100
  61000000-61ffffff : /pciv3@62000000
  62000000-6200ffff : /pciv3@62000000

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
[bhelgaas: fold in %pR fixes from Arnd Bergmann <arnd@arndb.de>:
http://lkml.kernel.org/r/20171011140224.3770968-1-arnd@arndb.de]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
CC: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
2017-10-05 15:52:55 -05:00

230 lines
6.5 KiB
Plaintext

menu "PCI host controller drivers"
depends on PCI
config PCI_MVEBU
bool "Marvell EBU PCIe controller"
depends on ARCH_MVEBU || ARCH_DOVE
depends on ARM
depends on OF
config PCI_AARDVARK
bool "Aardvark PCIe controller"
depends on ARCH_MVEBU && ARM64
depends on OF
depends on PCI_MSI_IRQ_DOMAIN
help
Add support for Aardvark 64bit PCIe Host Controller. This
controller is part of the South Bridge of the Marvel Armada
3700 SoC.
config PCIE_XILINX_NWL
bool "NWL PCIe Core"
depends on ARCH_ZYNQMP
depends on PCI_MSI_IRQ_DOMAIN
help
Say 'Y' here if you want kernel support for Xilinx
NWL PCIe controller. The controller can act as Root Port
or End Point. The current option selection will only
support root port enabling.
config PCI_FTPCI100
bool "Faraday Technology FTPCI100 PCI controller"
depends on OF
depends on ARM
default ARCH_GEMINI
config PCI_TEGRA
bool "NVIDIA Tegra PCIe controller"
depends on ARCH_TEGRA
help
Say Y here if you want support for the PCIe host controller found
on NVIDIA Tegra SoCs.
config PCI_RCAR_GEN2
bool "Renesas R-Car Gen2 Internal PCI controller"
depends on ARM
depends on ARCH_RENESAS || COMPILE_TEST
help
Say Y here if you want internal PCI support on R-Car Gen2 SoC.
There are 3 internal PCI controllers available with a single
built-in EHCI/OHCI host controller present on each one.
config PCIE_RCAR
bool "Renesas R-Car PCIe controller"
depends on ARCH_RENESAS || (ARM && COMPILE_TEST)
depends on PCI_MSI_IRQ_DOMAIN
help
Say Y here if you want PCIe controller support on R-Car SoCs.
config PCI_HOST_COMMON
bool
select PCI_ECAM
config PCI_HOST_GENERIC
bool "Generic PCI host controller"
depends on (ARM || ARM64) && OF
select PCI_HOST_COMMON
select IRQ_DOMAIN
help
Say Y here if you want to support a simple generic PCI host
controller, such as the one emulated by kvmtool.
config PCIE_XILINX
bool "Xilinx AXI PCIe host bridge support"
depends on ARCH_ZYNQ || MICROBLAZE || (MIPS && PCI_DRIVERS_GENERIC)
help
Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
Host Bridge driver.
config PCI_XGENE
bool "X-Gene PCIe controller"
depends on ARM64
depends on OF || (ACPI && PCI_QUIRKS)
select PCIEPORTBUS
help
Say Y here if you want internal PCI support on APM X-Gene SoC.
There are 5 internal PCIe ports available. Each port is GEN3 capable
and have varied lanes from x1 to x8.
config PCI_XGENE_MSI
bool "X-Gene v1 PCIe MSI feature"
depends on PCI_XGENE
depends on PCI_MSI_IRQ_DOMAIN
default y
help
Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC.
config PCI_V3_SEMI
bool "V3 Semiconductor PCI controller"
depends on OF
depends on ARM
default ARCH_INTEGRATOR_AP
config PCI_VERSATILE
bool "ARM Versatile PB PCI controller"
depends on ARCH_VERSATILE
config PCIE_IPROC
tristate
select PCI_DOMAINS
help
This enables the iProc PCIe core controller support for Broadcom's
iProc family of SoCs. An appropriate bus interface driver needs
to be enabled to select this.
config PCIE_IPROC_PLATFORM
tristate "Broadcom iProc PCIe platform bus driver"
depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST)
depends on OF
select PCIE_IPROC
default ARCH_BCM_IPROC
help
Say Y here if you want to use the Broadcom iProc PCIe controller
through the generic platform bus interface
config PCIE_IPROC_BCMA
tristate "Broadcom iProc PCIe BCMA bus driver"
depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST)
select PCIE_IPROC
select BCMA
default ARCH_BCM_5301X
help
Say Y here if you want to use the Broadcom iProc PCIe controller
through the BCMA bus interface
config PCIE_IPROC_MSI
bool "Broadcom iProc PCIe MSI support"
depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA
depends on PCI_MSI_IRQ_DOMAIN
default ARCH_BCM_IPROC
help
Say Y here if you want to enable MSI support for Broadcom's iProc
PCIe controller
config PCIE_ALTERA
bool "Altera PCIe controller"
depends on ARM || NIOS2
depends on OF_PCI
select PCI_DOMAINS
help
Say Y here if you want to enable PCIe controller support on Altera
FPGA.
config PCIE_ALTERA_MSI
bool "Altera PCIe MSI feature"
depends on PCIE_ALTERA
depends on PCI_MSI_IRQ_DOMAIN
help
Say Y here if you want PCIe MSI support for the Altera FPGA.
This MSI driver supports Altera MSI to GIC controller IP.
config PCI_HOST_THUNDER_PEM
bool "Cavium Thunder PCIe controller to off-chip devices"
depends on ARM64
depends on OF || (ACPI && PCI_QUIRKS)
select PCI_HOST_COMMON
help
Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs.
config PCI_HOST_THUNDER_ECAM
bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"
depends on ARM64
depends on OF || (ACPI && PCI_QUIRKS)
select PCI_HOST_COMMON
help
Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs.
config PCIE_ROCKCHIP
tristate "Rockchip PCIe controller"
depends on ARCH_ROCKCHIP || COMPILE_TEST
depends on OF
depends on PCI_MSI_IRQ_DOMAIN
select MFD_SYSCON
help
Say Y here if you want internal PCI support on Rockchip SoC.
There is 1 internal PCIe port available to support GEN2 with
4 slots.
config PCIE_MEDIATEK
bool "MediaTek PCIe controller"
depends on (ARM || ARM64) && (ARCH_MEDIATEK || COMPILE_TEST)
depends on OF
depends on PCI
select PCIEPORTBUS
help
Say Y here if you want to enable PCIe controller support on
MediaTek SoCs.
config PCIE_TANGO_SMP8759
bool "Tango SMP8759 PCIe controller (DANGEROUS)"
depends on ARCH_TANGO && PCI_MSI && OF
depends on BROKEN
select PCI_HOST_COMMON
help
Say Y here to enable PCIe controller support for Sigma Designs
Tango SMP8759-based systems.
Note: The SMP8759 controller multiplexes PCI config and MMIO
accesses, and Linux doesn't provide a way to serialize them.
This can lead to data corruption if drivers perform concurrent
config and MMIO accesses.
config VMD
depends on PCI_MSI && X86_64 && SRCU
tristate "Intel Volume Management Device Driver"
default N
---help---
Adds support for the Intel Volume Management Device (VMD). VMD is a
secondary PCI host bridge that allows PCI Express root ports,
and devices attached to them, to be removed from the default
PCI domain and placed within the VMD domain. This provides
more bus resources than are otherwise possible with a
single domain. If you know your system provides one of these and
has devices attached to it, say Y; if you are not sure, say N.
To compile this driver as a module, choose M here: the
module will be called vmd.
endmenu