Loading...
1# SPDX-License-Identifier: GPL-2.0
2
3menu "PCI controller drivers"
4 depends on PCI
5
6config PCI_MVEBU
7 bool "Marvell EBU PCIe controller"
8 depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST
9 depends on MVEBU_MBUS
10 depends on ARM
11 depends on OF
12 select PCI_BRIDGE_EMUL
13
14config PCI_AARDVARK
15 bool "Aardvark PCIe controller"
16 depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
17 depends on OF
18 depends on PCI_MSI_IRQ_DOMAIN
19 select PCI_BRIDGE_EMUL
20 help
21 Add support for Aardvark 64bit PCIe Host Controller. This
22 controller is part of the South Bridge of the Marvel Armada
23 3700 SoC.
24
25config PCIE_XILINX_NWL
26 bool "NWL PCIe Core"
27 depends on ARCH_ZYNQMP || COMPILE_TEST
28 depends on PCI_MSI_IRQ_DOMAIN
29 help
30 Say 'Y' here if you want kernel support for Xilinx
31 NWL PCIe controller. The controller can act as Root Port
32 or End Point. The current option selection will only
33 support root port enabling.
34
35config PCI_FTPCI100
36 bool "Faraday Technology FTPCI100 PCI controller"
37 depends on OF
38 default ARCH_GEMINI
39
40config PCI_TEGRA
41 bool "NVIDIA Tegra PCIe controller"
42 depends on ARCH_TEGRA || COMPILE_TEST
43 depends on PCI_MSI_IRQ_DOMAIN
44 help
45 Say Y here if you want support for the PCIe host controller found
46 on NVIDIA Tegra SoCs.
47
48config PCI_RCAR_GEN2
49 bool "Renesas R-Car Gen2 Internal PCI controller"
50 depends on ARCH_RENESAS || COMPILE_TEST
51 depends on ARM
52 help
53 Say Y here if you want internal PCI support on R-Car Gen2 SoC.
54 There are 3 internal PCI controllers available with a single
55 built-in EHCI/OHCI host controller present on each one.
56
57config PCIE_RCAR
58 bool "Renesas R-Car PCIe controller"
59 depends on ARCH_RENESAS || COMPILE_TEST
60 depends on PCI_MSI_IRQ_DOMAIN
61 select PCIE_RCAR_HOST
62 help
63 Say Y here if you want PCIe controller support on R-Car SoCs.
64 This option will be removed after arm64 defconfig is updated.
65
66config PCIE_RCAR_HOST
67 bool "Renesas R-Car PCIe host controller"
68 depends on ARCH_RENESAS || COMPILE_TEST
69 depends on PCI_MSI_IRQ_DOMAIN
70 help
71 Say Y here if you want PCIe controller support on R-Car SoCs in host
72 mode.
73
74config PCIE_RCAR_EP
75 bool "Renesas R-Car PCIe endpoint controller"
76 depends on ARCH_RENESAS || COMPILE_TEST
77 depends on PCI_ENDPOINT
78 help
79 Say Y here if you want PCIe controller support on R-Car SoCs in
80 endpoint mode.
81
82config PCI_HOST_COMMON
83 tristate
84 select PCI_ECAM
85
86config PCI_HOST_GENERIC
87 tristate "Generic PCI host controller"
88 depends on OF
89 select PCI_HOST_COMMON
90 select IRQ_DOMAIN
91 help
92 Say Y here if you want to support a simple generic PCI host
93 controller, such as the one emulated by kvmtool.
94
95config PCIE_XILINX
96 bool "Xilinx AXI PCIe host bridge support"
97 depends on OF || COMPILE_TEST
98 help
99 Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
100 Host Bridge driver.
101
102config PCIE_XILINX_CPM
103 bool "Xilinx Versal CPM host bridge support"
104 depends on ARCH_ZYNQMP || COMPILE_TEST
105 select PCI_HOST_COMMON
106 help
107 Say 'Y' here if you want kernel support for the
108 Xilinx Versal CPM host bridge.
109
110config PCI_XGENE
111 bool "X-Gene PCIe controller"
112 depends on ARM64 || COMPILE_TEST
113 depends on OF || (ACPI && PCI_QUIRKS)
114 help
115 Say Y here if you want internal PCI support on APM X-Gene SoC.
116 There are 5 internal PCIe ports available. Each port is GEN3 capable
117 and have varied lanes from x1 to x8.
118
119config PCI_XGENE_MSI
120 bool "X-Gene v1 PCIe MSI feature"
121 depends on PCI_XGENE
122 depends on PCI_MSI_IRQ_DOMAIN
123 default y
124 help
125 Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
126 This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC.
127
128config PCI_V3_SEMI
129 bool "V3 Semiconductor PCI controller"
130 depends on OF
131 depends on ARM || COMPILE_TEST
132 default ARCH_INTEGRATOR_AP
133
134config PCI_VERSATILE
135 bool "ARM Versatile PB PCI controller"
136 depends on ARCH_VERSATILE || COMPILE_TEST
137
138config PCIE_IPROC
139 tristate
140 help
141 This enables the iProc PCIe core controller support for Broadcom's
142 iProc family of SoCs. An appropriate bus interface driver needs
143 to be enabled to select this.
144
145config PCIE_IPROC_PLATFORM
146 tristate "Broadcom iProc PCIe platform bus driver"
147 depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST)
148 depends on OF
149 select PCIE_IPROC
150 default ARCH_BCM_IPROC
151 help
152 Say Y here if you want to use the Broadcom iProc PCIe controller
153 through the generic platform bus interface
154
155config PCIE_IPROC_BCMA
156 tristate "Broadcom iProc PCIe BCMA bus driver"
157 depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST)
158 select PCIE_IPROC
159 select BCMA
160 default ARCH_BCM_5301X
161 help
162 Say Y here if you want to use the Broadcom iProc PCIe controller
163 through the BCMA bus interface
164
165config PCIE_IPROC_MSI
166 bool "Broadcom iProc PCIe MSI support"
167 depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA
168 depends on PCI_MSI_IRQ_DOMAIN
169 default ARCH_BCM_IPROC
170 help
171 Say Y here if you want to enable MSI support for Broadcom's iProc
172 PCIe controller
173
174config PCIE_ALTERA
175 tristate "Altera PCIe controller"
176 depends on ARM || NIOS2 || ARM64 || COMPILE_TEST
177 help
178 Say Y here if you want to enable PCIe controller support on Altera
179 FPGA.
180
181config PCIE_ALTERA_MSI
182 tristate "Altera PCIe MSI feature"
183 depends on PCIE_ALTERA
184 depends on PCI_MSI_IRQ_DOMAIN
185 help
186 Say Y here if you want PCIe MSI support for the Altera FPGA.
187 This MSI driver supports Altera MSI to GIC controller IP.
188
189config PCI_HOST_THUNDER_PEM
190 bool "Cavium Thunder PCIe controller to off-chip devices"
191 depends on ARM64 || COMPILE_TEST
192 depends on OF || (ACPI && PCI_QUIRKS)
193 select PCI_HOST_COMMON
194 help
195 Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs.
196
197config PCI_HOST_THUNDER_ECAM
198 bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"
199 depends on ARM64 || COMPILE_TEST
200 depends on OF || (ACPI && PCI_QUIRKS)
201 select PCI_HOST_COMMON
202 help
203 Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs.
204
205config PCIE_ROCKCHIP
206 bool
207 depends on PCI
208
209config PCIE_ROCKCHIP_HOST
210 tristate "Rockchip PCIe host controller"
211 depends on ARCH_ROCKCHIP || COMPILE_TEST
212 depends on OF
213 depends on PCI_MSI_IRQ_DOMAIN
214 select MFD_SYSCON
215 select PCIE_ROCKCHIP
216 help
217 Say Y here if you want internal PCI support on Rockchip SoC.
218 There is 1 internal PCIe port available to support GEN2 with
219 4 slots.
220
221config PCIE_ROCKCHIP_EP
222 bool "Rockchip PCIe endpoint controller"
223 depends on ARCH_ROCKCHIP || COMPILE_TEST
224 depends on OF
225 depends on PCI_ENDPOINT
226 select MFD_SYSCON
227 select PCIE_ROCKCHIP
228 help
229 Say Y here if you want to support Rockchip PCIe controller in
230 endpoint mode on Rockchip SoC. There is 1 internal PCIe port
231 available to support GEN2 with 4 slots.
232
233config PCIE_MEDIATEK
234 tristate "MediaTek PCIe controller"
235 depends on ARCH_MEDIATEK || COMPILE_TEST
236 depends on OF
237 depends on PCI_MSI_IRQ_DOMAIN
238 help
239 Say Y here if you want to enable PCIe controller support on
240 MediaTek SoCs.
241
242config PCIE_TANGO_SMP8759
243 bool "Tango SMP8759 PCIe controller (DANGEROUS)"
244 depends on ARCH_TANGO && PCI_MSI && OF
245 depends on BROKEN
246 select PCI_HOST_COMMON
247 help
248 Say Y here to enable PCIe controller support for Sigma Designs
249 Tango SMP8759-based systems.
250
251 Note: The SMP8759 controller multiplexes PCI config and MMIO
252 accesses, and Linux doesn't provide a way to serialize them.
253 This can lead to data corruption if drivers perform concurrent
254 config and MMIO accesses.
255
256config VMD
257 depends on PCI_MSI && X86_64 && SRCU
258 tristate "Intel Volume Management Device Driver"
259 help
260 Adds support for the Intel Volume Management Device (VMD). VMD is a
261 secondary PCI host bridge that allows PCI Express root ports,
262 and devices attached to them, to be removed from the default
263 PCI domain and placed within the VMD domain. This provides
264 more bus resources than are otherwise possible with a
265 single domain. If you know your system provides one of these and
266 has devices attached to it, say Y; if you are not sure, say N.
267
268 To compile this driver as a module, choose M here: the
269 module will be called vmd.
270
271config PCIE_BRCMSTB
272 tristate "Broadcom Brcmstb PCIe host controller"
273 depends on ARCH_BCM2835 || COMPILE_TEST
274 depends on OF
275 depends on PCI_MSI_IRQ_DOMAIN
276 help
277 Say Y here to enable PCIe host controller support for
278 Broadcom STB based SoCs, like the Raspberry Pi 4.
279
280config PCI_HYPERV_INTERFACE
281 tristate "Hyper-V PCI Interface"
282 depends on X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64
283 help
284 The Hyper-V PCI Interface is a helper driver allows other drivers to
285 have a common interface with the Hyper-V PCI frontend driver.
286
287config PCI_LOONGSON
288 bool "LOONGSON PCI Controller"
289 depends on MACH_LOONGSON64 || COMPILE_TEST
290 depends on OF
291 depends on PCI_QUIRKS
292 default MACH_LOONGSON64
293 help
294 Say Y here if you want to enable PCI controller support on
295 Loongson systems.
296
297source "drivers/pci/controller/dwc/Kconfig"
298source "drivers/pci/controller/mobiveil/Kconfig"
299source "drivers/pci/controller/cadence/Kconfig"
300endmenu
1# SPDX-License-Identifier: GPL-2.0
2
3menu "PCI controller drivers"
4 depends on PCI
5
6config PCI_MVEBU
7 bool "Marvell EBU PCIe controller"
8 depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST
9 depends on MVEBU_MBUS
10 depends on ARM
11 depends on OF
12 select PCI_BRIDGE_EMUL
13
14config PCI_AARDVARK
15 bool "Aardvark PCIe controller"
16 depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
17 depends on OF
18 depends on PCI_MSI_IRQ_DOMAIN
19 select PCI_BRIDGE_EMUL
20 help
21 Add support for Aardvark 64bit PCIe Host Controller. This
22 controller is part of the South Bridge of the Marvel Armada
23 3700 SoC.
24
25menu "Cadence PCIe controllers support"
26
27config PCIE_CADENCE
28 bool
29
30config PCIE_CADENCE_HOST
31 bool "Cadence PCIe host controller"
32 depends on OF
33 depends on PCI
34 select IRQ_DOMAIN
35 select PCIE_CADENCE
36 help
37 Say Y here if you want to support the Cadence PCIe controller in host
38 mode. This PCIe controller may be embedded into many different vendors
39 SoCs.
40
41config PCIE_CADENCE_EP
42 bool "Cadence PCIe endpoint controller"
43 depends on OF
44 depends on PCI_ENDPOINT
45 select PCIE_CADENCE
46 help
47 Say Y here if you want to support the Cadence PCIe controller in
48 endpoint mode. This PCIe controller may be embedded into many
49 different vendors SoCs.
50
51endmenu
52
53config PCIE_XILINX_NWL
54 bool "NWL PCIe Core"
55 depends on ARCH_ZYNQMP || COMPILE_TEST
56 depends on PCI_MSI_IRQ_DOMAIN
57 help
58 Say 'Y' here if you want kernel support for Xilinx
59 NWL PCIe controller. The controller can act as Root Port
60 or End Point. The current option selection will only
61 support root port enabling.
62
63config PCI_FTPCI100
64 bool "Faraday Technology FTPCI100 PCI controller"
65 depends on OF
66 default ARCH_GEMINI
67
68config PCI_TEGRA
69 bool "NVIDIA Tegra PCIe controller"
70 depends on ARCH_TEGRA || COMPILE_TEST
71 depends on PCI_MSI_IRQ_DOMAIN
72 help
73 Say Y here if you want support for the PCIe host controller found
74 on NVIDIA Tegra SoCs.
75
76config PCI_RCAR_GEN2
77 bool "Renesas R-Car Gen2 Internal PCI controller"
78 depends on ARCH_RENESAS || COMPILE_TEST
79 depends on ARM
80 help
81 Say Y here if you want internal PCI support on R-Car Gen2 SoC.
82 There are 3 internal PCI controllers available with a single
83 built-in EHCI/OHCI host controller present on each one.
84
85config PCIE_RCAR
86 bool "Renesas R-Car PCIe controller"
87 depends on ARCH_RENESAS || COMPILE_TEST
88 depends on PCI_MSI_IRQ_DOMAIN
89 help
90 Say Y here if you want PCIe controller support on R-Car SoCs.
91
92config PCI_HOST_COMMON
93 bool
94 select PCI_ECAM
95
96config PCI_HOST_GENERIC
97 bool "Generic PCI host controller"
98 depends on OF
99 select PCI_HOST_COMMON
100 select IRQ_DOMAIN
101 help
102 Say Y here if you want to support a simple generic PCI host
103 controller, such as the one emulated by kvmtool.
104
105config PCIE_XILINX
106 bool "Xilinx AXI PCIe host bridge support"
107 depends on OF || COMPILE_TEST
108 help
109 Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
110 Host Bridge driver.
111
112config PCI_XGENE
113 bool "X-Gene PCIe controller"
114 depends on ARM64 || COMPILE_TEST
115 depends on OF || (ACPI && PCI_QUIRKS)
116 help
117 Say Y here if you want internal PCI support on APM X-Gene SoC.
118 There are 5 internal PCIe ports available. Each port is GEN3 capable
119 and have varied lanes from x1 to x8.
120
121config PCI_XGENE_MSI
122 bool "X-Gene v1 PCIe MSI feature"
123 depends on PCI_XGENE
124 depends on PCI_MSI_IRQ_DOMAIN
125 default y
126 help
127 Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
128 This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC.
129
130config PCI_V3_SEMI
131 bool "V3 Semiconductor PCI controller"
132 depends on OF
133 depends on ARM || COMPILE_TEST
134 default ARCH_INTEGRATOR_AP
135
136config PCI_VERSATILE
137 bool "ARM Versatile PB PCI controller"
138 depends on ARCH_VERSATILE
139
140config PCIE_IPROC
141 tristate
142 help
143 This enables the iProc PCIe core controller support for Broadcom's
144 iProc family of SoCs. An appropriate bus interface driver needs
145 to be enabled to select this.
146
147config PCIE_IPROC_PLATFORM
148 tristate "Broadcom iProc PCIe platform bus driver"
149 depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST)
150 depends on OF
151 select PCIE_IPROC
152 default ARCH_BCM_IPROC
153 help
154 Say Y here if you want to use the Broadcom iProc PCIe controller
155 through the generic platform bus interface
156
157config PCIE_IPROC_BCMA
158 tristate "Broadcom iProc PCIe BCMA bus driver"
159 depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST)
160 select PCIE_IPROC
161 select BCMA
162 default ARCH_BCM_5301X
163 help
164 Say Y here if you want to use the Broadcom iProc PCIe controller
165 through the BCMA bus interface
166
167config PCIE_IPROC_MSI
168 bool "Broadcom iProc PCIe MSI support"
169 depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA
170 depends on PCI_MSI_IRQ_DOMAIN
171 default ARCH_BCM_IPROC
172 help
173 Say Y here if you want to enable MSI support for Broadcom's iProc
174 PCIe controller
175
176config PCIE_ALTERA
177 tristate "Altera PCIe controller"
178 depends on ARM || NIOS2 || ARM64 || COMPILE_TEST
179 help
180 Say Y here if you want to enable PCIe controller support on Altera
181 FPGA.
182
183config PCIE_ALTERA_MSI
184 tristate "Altera PCIe MSI feature"
185 depends on PCIE_ALTERA
186 depends on PCI_MSI_IRQ_DOMAIN
187 help
188 Say Y here if you want PCIe MSI support for the Altera FPGA.
189 This MSI driver supports Altera MSI to GIC controller IP.
190
191config PCI_HOST_THUNDER_PEM
192 bool "Cavium Thunder PCIe controller to off-chip devices"
193 depends on ARM64 || COMPILE_TEST
194 depends on OF || (ACPI && PCI_QUIRKS)
195 select PCI_HOST_COMMON
196 help
197 Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs.
198
199config PCI_HOST_THUNDER_ECAM
200 bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"
201 depends on ARM64 || COMPILE_TEST
202 depends on OF || (ACPI && PCI_QUIRKS)
203 select PCI_HOST_COMMON
204 help
205 Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs.
206
207config PCIE_ROCKCHIP
208 bool
209 depends on PCI
210
211config PCIE_ROCKCHIP_HOST
212 tristate "Rockchip PCIe host controller"
213 depends on ARCH_ROCKCHIP || COMPILE_TEST
214 depends on OF
215 depends on PCI_MSI_IRQ_DOMAIN
216 select MFD_SYSCON
217 select PCIE_ROCKCHIP
218 help
219 Say Y here if you want internal PCI support on Rockchip SoC.
220 There is 1 internal PCIe port available to support GEN2 with
221 4 slots.
222
223config PCIE_ROCKCHIP_EP
224 bool "Rockchip PCIe endpoint controller"
225 depends on ARCH_ROCKCHIP || COMPILE_TEST
226 depends on OF
227 depends on PCI_ENDPOINT
228 select MFD_SYSCON
229 select PCIE_ROCKCHIP
230 help
231 Say Y here if you want to support Rockchip PCIe controller in
232 endpoint mode on Rockchip SoC. There is 1 internal PCIe port
233 available to support GEN2 with 4 slots.
234
235config PCIE_MEDIATEK
236 tristate "MediaTek PCIe controller"
237 depends on ARCH_MEDIATEK || COMPILE_TEST
238 depends on OF
239 depends on PCI_MSI_IRQ_DOMAIN
240 help
241 Say Y here if you want to enable PCIe controller support on
242 MediaTek SoCs.
243
244config PCIE_MOBIVEIL
245 bool "Mobiveil AXI PCIe controller"
246 depends on ARCH_ZYNQMP || COMPILE_TEST
247 depends on OF
248 depends on PCI_MSI_IRQ_DOMAIN
249 help
250 Say Y here if you want to enable support for the Mobiveil AXI PCIe
251 Soft IP. It has up to 8 outbound and inbound windows
252 for address translation and it is a PCIe Gen4 IP.
253
254config PCIE_TANGO_SMP8759
255 bool "Tango SMP8759 PCIe controller (DANGEROUS)"
256 depends on ARCH_TANGO && PCI_MSI && OF
257 depends on BROKEN
258 select PCI_HOST_COMMON
259 help
260 Say Y here to enable PCIe controller support for Sigma Designs
261 Tango SMP8759-based systems.
262
263 Note: The SMP8759 controller multiplexes PCI config and MMIO
264 accesses, and Linux doesn't provide a way to serialize them.
265 This can lead to data corruption if drivers perform concurrent
266 config and MMIO accesses.
267
268config VMD
269 depends on PCI_MSI && X86_64 && SRCU
270 select X86_DEV_DMA_OPS
271 tristate "Intel Volume Management Device Driver"
272 ---help---
273 Adds support for the Intel Volume Management Device (VMD). VMD is a
274 secondary PCI host bridge that allows PCI Express root ports,
275 and devices attached to them, to be removed from the default
276 PCI domain and placed within the VMD domain. This provides
277 more bus resources than are otherwise possible with a
278 single domain. If you know your system provides one of these and
279 has devices attached to it, say Y; if you are not sure, say N.
280
281 To compile this driver as a module, choose M here: the
282 module will be called vmd.
283
284config PCI_HYPERV_INTERFACE
285 tristate "Hyper-V PCI Interface"
286 depends on X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64
287 help
288 The Hyper-V PCI Interface is a helper driver allows other drivers to
289 have a common interface with the Hyper-V PCI frontend driver.
290
291source "drivers/pci/controller/dwc/Kconfig"
292endmenu