mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
With the new PCI pwrctrl API and PCI slot binding and power drivers, we now have a way to describe and power up WiFi/BT adapters connected through a PCIe or M.2 slot, or populated onto the mainboard itself. The latter case has the adapter layout or design copied verbatim, replacing the slot with direct connections. Integrate the PCI pwrctrl API into the PCIe driver, so that power is properly enabled before PCIe link training is done, allowing the card to successfully be detected. Signed-off-by: Chen-Yu Tsai <wenst@chromium.org> Signed-off-by: Manivannan Sadhasivam <mani@kernel.org> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> Reviewed-by: Manivannan Sadhasivam <mani@kernel.org> Link: https://patch.msgid.link/20260324052002.4072430-8-wenst@chromium.org
393 lines
11 KiB
Plaintext
393 lines
11 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
menu "PCI controller drivers"
|
|
depends on PCI
|
|
|
|
config PCI_HOST_COMMON
|
|
tristate
|
|
select PCI_ECAM
|
|
|
|
config PCI_AARDVARK
|
|
tristate "Aardvark PCIe controller"
|
|
depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
|
|
depends on OF
|
|
depends on PCI_MSI
|
|
select PCI_BRIDGE_EMUL
|
|
select IRQ_MSI_LIB
|
|
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_ALTERA
|
|
tristate "Altera PCIe controller"
|
|
depends on ARM || NIOS2 || ARM64 || COMPILE_TEST
|
|
help
|
|
Say Y here if you want to enable PCIe controller support on Altera
|
|
FPGA.
|
|
|
|
config PCIE_ALTERA_MSI
|
|
tristate "Altera PCIe MSI feature"
|
|
depends on PCIE_ALTERA
|
|
depends on PCI_MSI
|
|
select IRQ_MSI_LIB
|
|
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 PCIE_APPLE_MSI_DOORBELL_ADDR
|
|
hex
|
|
default 0xfffff000
|
|
depends on PCIE_APPLE
|
|
|
|
config PCIE_APPLE
|
|
tristate "Apple PCIe controller"
|
|
depends on ARCH_APPLE || COMPILE_TEST
|
|
depends on OF
|
|
depends on PCI_MSI
|
|
select PCI_HOST_COMMON
|
|
select IRQ_MSI_LIB
|
|
help
|
|
Say Y here if you want to enable PCIe controller support on Apple
|
|
system-on-chips, like the Apple M1. This is required for the USB
|
|
type-A ports, Ethernet, Wi-Fi, and Bluetooth.
|
|
|
|
If unsure, say Y if you have an Apple Silicon system.
|
|
|
|
config PCI_VERSATILE
|
|
bool "ARM Versatile PB PCI controller"
|
|
depends on ARCH_VERSATILE || COMPILE_TEST
|
|
|
|
config PCIE_ASPEED
|
|
bool "ASPEED PCIe controller"
|
|
depends on ARCH_ASPEED || COMPILE_TEST
|
|
depends on OF
|
|
depends on PCI_MSI
|
|
select IRQ_MSI_LIB
|
|
help
|
|
Enable this option to support the PCIe controller found on ASPEED
|
|
SoCs.
|
|
|
|
This driver provides initialization and management for PCIe
|
|
Root Complex functionality, including INTx and MSI support.
|
|
|
|
Select Y if your platform uses an ASPEED SoC and requires PCIe
|
|
connectivity.
|
|
|
|
config PCIE_BRCMSTB
|
|
tristate "Broadcom Brcmstb PCIe controller"
|
|
depends on ARCH_BRCMSTB || ARCH_BCM2835 || ARCH_BCMBCA || \
|
|
BMIPS_GENERIC || COMPILE_TEST
|
|
depends on OF
|
|
depends on PCI_MSI
|
|
select IRQ_MSI_LIB
|
|
default ARCH_BRCMSTB || BMIPS_GENERIC
|
|
help
|
|
Say Y here to enable PCIe host controller support for
|
|
Broadcom STB based SoCs, like the Raspberry Pi 4.
|
|
|
|
config PCIE_IPROC
|
|
tristate
|
|
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 BCMA PCIe controller"
|
|
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
|
|
select IRQ_MSI_LIB
|
|
default ARCH_BCM_IPROC
|
|
help
|
|
Say Y here if you want to enable MSI support for Broadcom's iProc
|
|
PCIe controller
|
|
|
|
config PCI_HOST_THUNDER_PEM
|
|
bool "Cavium Thunder PCIe controller to off-chip devices"
|
|
depends on ARM64 || COMPILE_TEST
|
|
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 || COMPILE_TEST
|
|
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 PCI_FTPCI100
|
|
bool "Faraday Technology FTPCI100 PCI controller"
|
|
depends on OF
|
|
default ARCH_GEMINI
|
|
|
|
config PCI_HOST_GENERIC
|
|
tristate "Generic PCI host controller"
|
|
depends on 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_HISI_ERR
|
|
depends on ACPI_APEI_GHES && (ARM64 || COMPILE_TEST)
|
|
bool "HiSilicon HIP PCIe controller error handling driver"
|
|
help
|
|
Say Y here if you want error handling support
|
|
for the PCIe controller's errors on HiSilicon HIP SoCs
|
|
|
|
config PCI_IXP4XX
|
|
bool "Intel IXP4xx PCI controller"
|
|
depends on OF
|
|
depends on ARCH_IXP4XX || COMPILE_TEST
|
|
default ARCH_IXP4XX
|
|
help
|
|
Say Y here if you want support for the PCI host controller found
|
|
in the Intel IXP4xx XScale-based network processor SoC.
|
|
|
|
config VMD
|
|
depends on PCI_MSI && X86_64 && !UML
|
|
tristate "Intel Volume Management Device Driver"
|
|
select IRQ_MSI_LIB
|
|
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.
|
|
|
|
config PCI_LOONGSON
|
|
bool "LOONGSON PCIe controller"
|
|
depends on MACH_LOONGSON64 || COMPILE_TEST
|
|
depends on OF || ACPI
|
|
depends on PCI_QUIRKS
|
|
default MACH_LOONGSON64
|
|
help
|
|
Say Y here if you want to enable PCI controller support on
|
|
Loongson systems.
|
|
|
|
config PCI_MVEBU
|
|
tristate "Marvell EBU PCIe controller"
|
|
depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST
|
|
depends on MVEBU_MBUS
|
|
depends on ARM
|
|
depends on OF
|
|
select PCI_BRIDGE_EMUL
|
|
help
|
|
Add support for Marvell EBU PCIe controller. This PCIe controller
|
|
is used on 32-bit Marvell ARM SoCs: Dove, Kirkwood, Armada 370,
|
|
Armada XP, Armada 375, Armada 38x and Armada 39x.
|
|
|
|
config PCIE_MEDIATEK
|
|
tristate "MediaTek PCIe controller"
|
|
depends on ARCH_AIROHA || ARCH_MEDIATEK || COMPILE_TEST
|
|
depends on OF
|
|
depends on PCI_MSI
|
|
select IRQ_MSI_LIB
|
|
help
|
|
Say Y here if you want to enable PCIe controller support on
|
|
MediaTek SoCs.
|
|
|
|
config PCIE_MEDIATEK_GEN3
|
|
tristate "MediaTek Gen3 PCIe controller"
|
|
depends on ARCH_AIROHA || ARCH_MEDIATEK || COMPILE_TEST
|
|
depends on PCI_MSI
|
|
select IRQ_MSI_LIB
|
|
select PCI_PWRCTRL_GENERIC
|
|
help
|
|
Adds support for PCIe Gen3 MAC controller for MediaTek SoCs.
|
|
This PCIe controller is compatible with Gen3, Gen2 and Gen1 speed,
|
|
and support up to 256 MSI interrupt numbers for
|
|
multi-function devices.
|
|
|
|
Say Y here if you want to enable Gen3 PCIe controller support on
|
|
MediaTek SoCs.
|
|
|
|
config PCIE_MT7621
|
|
tristate "MediaTek MT7621 PCIe controller"
|
|
depends on SOC_MT7621 || COMPILE_TEST
|
|
select PHY_MT7621_PCI
|
|
default SOC_MT7621
|
|
help
|
|
This selects a driver for the MediaTek MT7621 PCIe Controller.
|
|
|
|
config PCI_HYPERV_INTERFACE
|
|
tristate "Microsoft Hyper-V PCI Interface"
|
|
depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI
|
|
help
|
|
The Hyper-V PCI Interface is a helper driver that allows other
|
|
drivers to have a common interface with the Hyper-V PCI frontend
|
|
driver.
|
|
|
|
config PCI_TEGRA
|
|
tristate "NVIDIA Tegra PCIe controller"
|
|
depends on ARCH_TEGRA || COMPILE_TEST
|
|
depends on PCI_MSI
|
|
select IRQ_MSI_LIB
|
|
help
|
|
Say Y here if you want support for the PCIe host controller found
|
|
on NVIDIA Tegra SoCs.
|
|
|
|
config PCIE_RCAR_HOST
|
|
bool "Renesas R-Car PCIe controller (host mode)"
|
|
depends on ARCH_RENESAS || COMPILE_TEST
|
|
depends on OF
|
|
depends on PCI_MSI
|
|
select IRQ_MSI_LIB
|
|
help
|
|
Say Y here if you want PCIe controller support on R-Car SoCs in host
|
|
mode.
|
|
|
|
config PCIE_RCAR_EP
|
|
bool "Renesas R-Car PCIe controller (endpoint mode)"
|
|
depends on ARCH_RENESAS || COMPILE_TEST
|
|
depends on PCI_ENDPOINT
|
|
help
|
|
Say Y here if you want PCIe controller support on R-Car SoCs in
|
|
endpoint mode.
|
|
|
|
config PCI_RCAR_GEN2
|
|
bool "Renesas R-Car Gen2 Internal PCI controller"
|
|
depends on (ARCH_RENESAS && ARM) || COMPILE_TEST
|
|
help
|
|
Say Y here if you want internal PCI support on R-Car Gen2 SoC.
|
|
Each internal PCI controller contains a single built-in EHCI/OHCI
|
|
host controller.
|
|
|
|
config PCIE_RENESAS_RZG3S_HOST
|
|
bool "Renesas RZ/G3S PCIe host controller"
|
|
depends on ARCH_RENESAS || COMPILE_TEST
|
|
select MFD_SYSCON
|
|
select IRQ_MSI_LIB
|
|
help
|
|
Say Y here if you want PCIe host controller support on Renesas RZ/G3S
|
|
SoC.
|
|
|
|
config PCIE_ROCKCHIP
|
|
bool
|
|
depends on PCI
|
|
|
|
config PCIE_ROCKCHIP_HOST
|
|
tristate "Rockchip PCIe controller (host mode)"
|
|
depends on ARCH_ROCKCHIP || COMPILE_TEST
|
|
depends on OF
|
|
depends on PCI_MSI
|
|
select MFD_SYSCON
|
|
select PCIE_ROCKCHIP
|
|
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_ROCKCHIP_EP
|
|
bool "Rockchip PCIe controller (endpoint mode)"
|
|
depends on ARCH_ROCKCHIP || COMPILE_TEST
|
|
depends on OF
|
|
depends on PCI_ENDPOINT
|
|
select MFD_SYSCON
|
|
select PCIE_ROCKCHIP
|
|
help
|
|
Say Y here if you want to support Rockchip PCIe controller in
|
|
endpoint mode on Rockchip SoC. There is 1 internal PCIe port
|
|
available to support GEN2 with 4 slots.
|
|
|
|
config PCI_V3_SEMI
|
|
bool "V3 Semiconductor PCI controller"
|
|
depends on OF
|
|
depends on ARM || COMPILE_TEST
|
|
default ARCH_INTEGRATOR_AP
|
|
|
|
config PCI_XGENE
|
|
bool "X-Gene PCIe controller"
|
|
depends on ARM64 || COMPILE_TEST
|
|
depends on OF || (ACPI && PCI_QUIRKS)
|
|
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
|
|
select IRQ_MSI_LIB
|
|
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 PCIE_XILINX
|
|
bool "Xilinx AXI PCIe controller"
|
|
depends on OF
|
|
depends on PCI_MSI
|
|
select IRQ_MSI_LIB
|
|
help
|
|
Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
|
|
Host Bridge driver.
|
|
|
|
config PCIE_XILINX_DMA_PL
|
|
bool "Xilinx DMA PL PCIe host bridge support"
|
|
depends on ARCH_ZYNQMP || COMPILE_TEST
|
|
depends on PCI_MSI
|
|
select PCI_HOST_COMMON
|
|
select IRQ_MSI_LIB
|
|
help
|
|
Say 'Y' here if you want kernel support for the Xilinx PL DMA
|
|
PCIe host bridge. The controller is a Soft IP which can act as
|
|
Root Port. If your system provides Xilinx PCIe host controller
|
|
bridge DMA as Soft IP say 'Y'; if you are not sure, say 'N'.
|
|
|
|
config PCIE_XILINX_NWL
|
|
bool "Xilinx NWL PCIe controller"
|
|
depends on ARCH_ZYNQMP || COMPILE_TEST
|
|
depends on PCI_MSI
|
|
select IRQ_MSI_LIB
|
|
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 PCIE_XILINX_CPM
|
|
bool "Xilinx Versal CPM PCI controller"
|
|
depends on ARCH_ZYNQMP || COMPILE_TEST
|
|
select PCI_HOST_COMMON
|
|
help
|
|
Say 'Y' here if you want kernel support for the
|
|
Xilinx Versal CPM host bridge.
|
|
|
|
source "drivers/pci/controller/cadence/Kconfig"
|
|
source "drivers/pci/controller/dwc/Kconfig"
|
|
source "drivers/pci/controller/mobiveil/Kconfig"
|
|
source "drivers/pci/controller/plda/Kconfig"
|
|
endmenu
|