Merge branch 'pci/host-vmd' into next
[platform/kernel/linux-rpi.git] / drivers / pci / host / Kconfig
1 menu "PCI host controller drivers"
2         depends on PCI
3
4 config PCI_DRA7XX
5         bool "TI DRA7xx PCIe controller"
6         depends on OF && HAS_IOMEM && TI_PIPE3
7         depends on PCI_MSI_IRQ_DOMAIN
8         select PCIE_DW
9         help
10          Enables support for the PCIe controller in the DRA7xx SoC.  There
11          are two instances of PCIe controller in DRA7xx.  This controller can
12          act both as EP and RC.  This reuses the Designware core.
13
14 config PCI_MVEBU
15         bool "Marvell EBU PCIe controller"
16         depends on ARCH_MVEBU || ARCH_DOVE
17         depends on ARM
18         depends on OF
19
20 config PCI_AARDVARK
21         bool "Aardvark PCIe controller"
22         depends on ARCH_MVEBU && ARM64
23         depends on OF
24         depends on PCI_MSI_IRQ_DOMAIN
25         help
26          Add support for Aardvark 64bit PCIe Host Controller. This
27          controller is part of the South Bridge of the Marvel Armada
28          3700 SoC.
29
30 config PCIE_XILINX_NWL
31         bool "NWL PCIe Core"
32         depends on ARCH_ZYNQMP
33         depends on PCI_MSI_IRQ_DOMAIN
34         help
35          Say 'Y' here if you want kernel support for Xilinx
36          NWL PCIe controller. The controller can act as Root Port
37          or End Point. The current option selection will only
38          support root port enabling.
39
40 config PCIE_DW_PLAT
41         bool "Platform bus based DesignWare PCIe Controller"
42         depends on PCI_MSI_IRQ_DOMAIN
43         select PCIE_DW
44         ---help---
45          This selects the DesignWare PCIe controller support. Select this if
46          you have a PCIe controller on Platform bus.
47
48          If you have a controller with this interface, say Y or M here.
49
50          If unsure, say N.
51
52 config PCIE_DW
53         bool
54         depends on PCI_MSI_IRQ_DOMAIN
55
56 config PCI_EXYNOS
57         bool "Samsung Exynos PCIe controller"
58         depends on SOC_EXYNOS5440
59         depends on PCI_MSI_IRQ_DOMAIN
60         select PCIEPORTBUS
61         select PCIE_DW
62
63 config PCI_IMX6
64         bool "Freescale i.MX6 PCIe controller"
65         depends on SOC_IMX6Q
66         depends on PCI_MSI_IRQ_DOMAIN
67         select PCIEPORTBUS
68         select PCIE_DW
69
70 config PCI_TEGRA
71         bool "NVIDIA Tegra PCIe controller"
72         depends on ARCH_TEGRA
73         help
74           Say Y here if you want support for the PCIe host controller found
75           on NVIDIA Tegra SoCs.
76
77 config PCI_RCAR_GEN2
78         bool "Renesas R-Car Gen2 Internal PCI controller"
79         depends on ARM
80         depends on ARCH_RENESAS || COMPILE_TEST
81         help
82           Say Y here if you want internal PCI support on R-Car Gen2 SoC.
83           There are 3 internal PCI controllers available with a single
84           built-in EHCI/OHCI host controller present on each one.
85
86 config PCIE_RCAR
87         bool "Renesas R-Car PCIe controller"
88         depends on ARCH_RENESAS || (ARM && COMPILE_TEST)
89         depends on PCI_MSI_IRQ_DOMAIN
90         help
91           Say Y here if you want PCIe controller support on R-Car SoCs.
92
93 config PCI_HOST_COMMON
94         bool
95         select PCI_ECAM
96
97 config PCI_HOST_GENERIC
98         bool "Generic PCI host controller"
99         depends on (ARM || ARM64) && OF
100         select PCI_HOST_COMMON
101         select IRQ_DOMAIN
102         help
103           Say Y here if you want to support a simple generic PCI host
104           controller, such as the one emulated by kvmtool.
105
106 config PCIE_SPEAR13XX
107         bool "STMicroelectronics SPEAr PCIe controller"
108         depends on ARCH_SPEAR13XX
109         depends on PCI_MSI_IRQ_DOMAIN
110         select PCIEPORTBUS
111         select PCIE_DW
112         help
113           Say Y here if you want PCIe support on SPEAr13XX SoCs.
114
115 config PCI_KEYSTONE
116         bool "TI Keystone PCIe controller"
117         depends on ARCH_KEYSTONE
118         depends on PCI_MSI_IRQ_DOMAIN
119         select PCIE_DW
120         select PCIEPORTBUS
121         help
122           Say Y here if you want to enable PCI controller support on Keystone
123           SoCs. The PCI controller on Keystone is based on Designware hardware
124           and therefore the driver re-uses the Designware core functions to
125           implement the driver.
126
127 config PCIE_XILINX
128         bool "Xilinx AXI PCIe host bridge support"
129         depends on ARCH_ZYNQ || MICROBLAZE
130         help
131           Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
132           Host Bridge driver.
133
134 config PCI_XGENE
135         bool "X-Gene PCIe controller"
136         depends on ARM64
137         depends on OF || (ACPI && PCI_QUIRKS)
138         select PCIEPORTBUS
139         help
140           Say Y here if you want internal PCI support on APM X-Gene SoC.
141           There are 5 internal PCIe ports available. Each port is GEN3 capable
142           and have varied lanes from x1 to x8.
143
144 config PCI_XGENE_MSI
145         bool "X-Gene v1 PCIe MSI feature"
146         depends on PCI_XGENE
147         depends on PCI_MSI_IRQ_DOMAIN
148         default y
149         help
150           Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
151           This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC.
152
153 config PCI_LAYERSCAPE
154         bool "Freescale Layerscape PCIe controller"
155         depends on OF && (ARM || ARCH_LAYERSCAPE)
156         depends on PCI_MSI_IRQ_DOMAIN
157         select PCIE_DW
158         select MFD_SYSCON
159         help
160           Say Y here if you want PCIe controller support on Layerscape SoCs.
161
162 config PCI_VERSATILE
163         bool "ARM Versatile PB PCI controller"
164         depends on ARCH_VERSATILE
165
166 config PCIE_IPROC
167         tristate
168         help
169           This enables the iProc PCIe core controller support for Broadcom's
170           iProc family of SoCs. An appropriate bus interface driver needs
171           to be enabled to select this.
172
173 config PCIE_IPROC_PLATFORM
174         tristate "Broadcom iProc PCIe platform bus driver"
175         depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST)
176         depends on OF
177         select PCIE_IPROC
178         default ARCH_BCM_IPROC
179         help
180           Say Y here if you want to use the Broadcom iProc PCIe controller
181           through the generic platform bus interface
182
183 config PCIE_IPROC_BCMA
184         tristate "Broadcom iProc PCIe BCMA bus driver"
185         depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST)
186         select PCIE_IPROC
187         select BCMA
188         select PCI_DOMAINS
189         default ARCH_BCM_5301X
190         help
191           Say Y here if you want to use the Broadcom iProc PCIe controller
192           through the BCMA bus interface
193
194 config PCIE_IPROC_MSI
195         bool "Broadcom iProc PCIe MSI support"
196         depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA
197         depends on PCI_MSI_IRQ_DOMAIN
198         default ARCH_BCM_IPROC
199         help
200           Say Y here if you want to enable MSI support for Broadcom's iProc
201           PCIe controller
202
203 config PCIE_ALTERA
204         bool "Altera PCIe controller"
205         depends on ARM || NIOS2
206         depends on OF_PCI
207         select PCI_DOMAINS
208         help
209           Say Y here if you want to enable PCIe controller support on Altera
210           FPGA.
211
212 config PCIE_ALTERA_MSI
213         bool "Altera PCIe MSI feature"
214         depends on PCIE_ALTERA
215         depends on PCI_MSI_IRQ_DOMAIN
216         help
217           Say Y here if you want PCIe MSI support for the Altera FPGA.
218           This MSI driver supports Altera MSI to GIC controller IP.
219
220 config PCI_HISI
221         depends on OF && ARM64
222         bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers"
223         depends on PCI_MSI_IRQ_DOMAIN
224         select PCIEPORTBUS
225         select PCIE_DW
226         help
227           Say Y here if you want PCIe controller support on HiSilicon
228           Hip05 and Hip06 SoCs
229
230 config PCIE_QCOM
231         bool "Qualcomm PCIe controller"
232         depends on ARCH_QCOM && OF
233         depends on PCI_MSI_IRQ_DOMAIN
234         select PCIE_DW
235         select PCIEPORTBUS
236         help
237           Say Y here to enable PCIe controller support on Qualcomm SoCs. The
238           PCIe controller uses the Designware core plus Qualcomm-specific
239           hardware wrappers.
240
241 config PCI_HOST_THUNDER_PEM
242         bool "Cavium Thunder PCIe controller to off-chip devices"
243         depends on ARM64
244         depends on OF || (ACPI && PCI_QUIRKS)
245         select PCI_HOST_COMMON
246         help
247           Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs.
248
249 config PCI_HOST_THUNDER_ECAM
250         bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"
251         depends on ARM64
252         depends on OF || (ACPI && PCI_QUIRKS)
253         select PCI_HOST_COMMON
254         help
255           Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs.
256
257 config PCIE_ARMADA_8K
258         bool "Marvell Armada-8K PCIe controller"
259         depends on ARCH_MVEBU
260         depends on PCI_MSI_IRQ_DOMAIN
261         select PCIE_DW
262         select PCIEPORTBUS
263         help
264           Say Y here if you want to enable PCIe controller support on
265           Armada-8K SoCs. The PCIe controller on Armada-8K is based on
266           Designware hardware and therefore the driver re-uses the
267           Designware core functions to implement the driver.
268
269 config PCIE_ARTPEC6
270         bool "Axis ARTPEC-6 PCIe controller"
271         depends on MACH_ARTPEC6
272         depends on PCI_MSI_IRQ_DOMAIN
273         select PCIE_DW
274         select PCIEPORTBUS
275         help
276           Say Y here to enable PCIe controller support on Axis ARTPEC-6
277           SoCs.  This PCIe controller uses the DesignWare core.
278
279 config PCIE_ROCKCHIP
280         bool "Rockchip PCIe controller"
281         depends on ARCH_ROCKCHIP || COMPILE_TEST
282         depends on OF
283         depends on PCI_MSI_IRQ_DOMAIN
284         select MFD_SYSCON
285         help
286           Say Y here if you want internal PCI support on Rockchip SoC.
287           There is 1 internal PCIe port available to support GEN2 with
288           4 slots.
289
290 config VMD
291         depends on PCI_MSI && X86_64 && SRCU
292         tristate "Intel Volume Management Device Driver"
293         default N
294         ---help---
295           Adds support for the Intel Volume Management Device (VMD). VMD is a
296           secondary PCI host bridge that allows PCI Express root ports,
297           and devices attached to them, to be removed from the default
298           PCI domain and placed within the VMD domain. This provides
299           more bus resources than are otherwise possible with a
300           single domain. If you know your system provides one of these and
301           has devices attached to it, say Y; if you are not sure, say N.
302
303           To compile this driver as a module, choose M here: the
304           module will be called vmd.
305
306 endmenu