mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 15:12:13 +02:00
PCI: j721e: Fix host/endpoint dependencies
The j721e driver has a single platform driver that can be built-in or a loadable module, but it calls two separate backend drivers depending on whether it is a host or endpoint. If the two modes are not the same, we can end up with a situation where the built-in pci-j721e driver tries to call the modular host or endpoint driver, which causes a link failure: ld.lld-21: error: undefined symbol: cdns_pcie_ep_setup >>> referenced by pci-j721e.c >>> drivers/pci/controller/cadence/pci-j721e.o:(j721e_pcie_probe) in archive vmlinux.a ld.lld-21: error: undefined symbol: cdns_pcie_host_setup >>> referenced by pci-j721e.c >>> drivers/pci/controller/cadence/pci-j721e.o:(j721e_pcie_probe) in archive vmlinux.a Rework the dependencies so that the 'select' is done by the common Kconfig symbol, based on which of the two are enabled. Effectively this means that having one built-in makes the other either built-in or disabled, but all configurations will now build. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Siddharth Vadapalli <s-vadapalli@ti.com> Link: https://patch.msgid.link/20250423162523.2060405-1-arnd@kernel.org
This commit is contained in:
parent
a2790bf81f
commit
3c05e88413
|
|
@ -44,12 +44,13 @@ config PCIE_CADENCE_PLAT_EP
|
|||
|
||||
config PCI_J721E
|
||||
tristate
|
||||
select PCIE_CADENCE_HOST if PCI_J721E_HOST != n
|
||||
select PCIE_CADENCE_EP if PCI_J721E_EP != n
|
||||
|
||||
config PCI_J721E_HOST
|
||||
tristate "TI J721E PCIe controller (host mode)"
|
||||
depends on ARCH_K3 || COMPILE_TEST
|
||||
depends on OF
|
||||
select PCIE_CADENCE_HOST
|
||||
select PCI_J721E
|
||||
help
|
||||
Say Y here if you want to support the TI J721E PCIe platform
|
||||
|
|
@ -61,7 +62,6 @@ config PCI_J721E_EP
|
|||
depends on ARCH_K3 || COMPILE_TEST
|
||||
depends on OF
|
||||
depends on PCI_ENDPOINT
|
||||
select PCIE_CADENCE_EP
|
||||
select PCI_J721E
|
||||
help
|
||||
Say Y here if you want to support the TI J721E PCIe platform
|
||||
|
|
|
|||
|
|
@ -475,7 +475,7 @@ static int j721e_pcie_probe(struct platform_device *pdev)
|
|||
|
||||
switch (mode) {
|
||||
case PCI_MODE_RC:
|
||||
if (!IS_ENABLED(CONFIG_PCIE_CADENCE_HOST))
|
||||
if (!IS_ENABLED(CONFIG_PCI_J721E_HOST))
|
||||
return -ENODEV;
|
||||
|
||||
bridge = devm_pci_alloc_host_bridge(dev, sizeof(*rc));
|
||||
|
|
@ -494,7 +494,7 @@ static int j721e_pcie_probe(struct platform_device *pdev)
|
|||
pcie->cdns_pcie = cdns_pcie;
|
||||
break;
|
||||
case PCI_MODE_EP:
|
||||
if (!IS_ENABLED(CONFIG_PCIE_CADENCE_EP))
|
||||
if (!IS_ENABLED(CONFIG_PCI_J721E_EP))
|
||||
return -ENODEV;
|
||||
|
||||
ep = devm_kzalloc(dev, sizeof(*ep), GFP_KERNEL);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user