mirror of
https://github.com/torvalds/linux.git
synced 2025-11-02 09:40:27 +02:00
PCI: host-common: Convert to library for host controller drivers
This common library will be used as a placeholder for helper functions shared by the host controller drivers. This avoids placing the host controller drivers specific helpers in drivers/pci/*.c, to avoid enlarging the kernel image on platforms that do not use host controller drivers at all (like x86/ACPI platforms). Suggested-by: Lukas Wunner <lukas@wunner.de> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Link: https://patch.msgid.link/20250508-pcie-reset-slot-v4-3-7050093e2b50@linaro.org
This commit is contained in:
parent
1a176b25f5
commit
d1c696dba1
10 changed files with 33 additions and 12 deletions
|
|
@ -3,6 +3,10 @@
|
|||
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
|
||||
|
|
@ -119,10 +123,6 @@ config PCI_FTPCI100
|
|||
depends on OF
|
||||
default ARCH_GEMINI
|
||||
|
||||
config PCI_HOST_COMMON
|
||||
tristate
|
||||
select PCI_ECAM
|
||||
|
||||
config PCI_HOST_GENERIC
|
||||
tristate "Generic PCI host controller"
|
||||
depends on OF
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
#include <linux/pci-acpi.h>
|
||||
#include <linux/pci-ecam.h>
|
||||
#include "../../pci.h"
|
||||
#include "../pci-host-common.h"
|
||||
|
||||
#if defined(CONFIG_PCI_HISI) || (defined(CONFIG_ACPI) && defined(CONFIG_PCI_QUIRKS))
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Generic PCI host driver common code
|
||||
* Common library for PCI host controller drivers
|
||||
*
|
||||
* Copyright (C) 2014 ARM Limited
|
||||
*
|
||||
|
|
@ -15,6 +15,8 @@
|
|||
#include <linux/pci-ecam.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include "pci-host-common.h"
|
||||
|
||||
static void gen_pci_unmap_cfg(void *ptr)
|
||||
{
|
||||
pci_ecam_free((struct pci_config_window *)ptr);
|
||||
|
|
@ -94,5 +96,5 @@ void pci_host_common_remove(struct platform_device *pdev)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(pci_host_common_remove);
|
||||
|
||||
MODULE_DESCRIPTION("Generic PCI host common driver");
|
||||
MODULE_DESCRIPTION("Common library for PCI host controller drivers");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
|
|
|
|||
16
drivers/pci/controller/pci-host-common.h
Normal file
16
drivers/pci/controller/pci-host-common.h
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Common library for PCI host controller drivers
|
||||
*
|
||||
* Copyright (C) 2014 ARM Limited
|
||||
*
|
||||
* Author: Will Deacon <will.deacon@arm.com>
|
||||
*/
|
||||
|
||||
#ifndef _PCI_HOST_COMMON_H
|
||||
#define _PCI_HOST_COMMON_H
|
||||
|
||||
int pci_host_common_probe(struct platform_device *pdev);
|
||||
void pci_host_common_remove(struct platform_device *pdev);
|
||||
|
||||
#endif
|
||||
|
|
@ -14,6 +14,8 @@
|
|||
#include <linux/pci-ecam.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include "pci-host-common.h"
|
||||
|
||||
static const struct pci_ecam_ops gen_pci_cfg_cam_bus_ops = {
|
||||
.bus_shift = 16,
|
||||
.pci_ops = {
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@
|
|||
#include <linux/pci-ecam.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include "pci-host-common.h"
|
||||
|
||||
#if defined(CONFIG_PCI_HOST_THUNDER_ECAM) || (defined(CONFIG_ACPI) && defined(CONFIG_PCI_QUIRKS))
|
||||
|
||||
static void set_val(u32 v, int where, int size, u32 *val)
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
#include <linux/platform_device.h>
|
||||
#include <linux/io-64-nonatomic-lo-hi.h>
|
||||
#include "../pci.h"
|
||||
#include "pci-host-common.h"
|
||||
|
||||
#if defined(CONFIG_PCI_HOST_THUNDER_PEM) || (defined(CONFIG_ACPI) && defined(CONFIG_PCI_QUIRKS))
|
||||
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@
|
|||
#include <linux/of_irq.h>
|
||||
#include <linux/pci-ecam.h>
|
||||
|
||||
#include "pci-host-common.h"
|
||||
|
||||
#define CORE_RC_PHYIF_CTL 0x00024
|
||||
#define CORE_RC_PHYIF_CTL_RUN BIT(0)
|
||||
#define CORE_RC_PHYIF_STAT 0x00028
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
#include <linux/wordpart.h>
|
||||
|
||||
#include "../../pci.h"
|
||||
#include "../pci-host-common.h"
|
||||
#include "pcie-plda.h"
|
||||
|
||||
#define MC_MAX_NUM_INBOUND_WINDOWS 8
|
||||
|
|
|
|||
|
|
@ -93,10 +93,4 @@ extern const struct pci_ecam_ops al_pcie_ops; /* Amazon Annapurna Labs PCIe */
|
|||
extern const struct pci_ecam_ops tegra194_pcie_ops; /* Tegra194 PCIe */
|
||||
extern const struct pci_ecam_ops loongson_pci_ecam_ops; /* Loongson PCIe */
|
||||
#endif
|
||||
|
||||
#if IS_ENABLED(CONFIG_PCI_HOST_COMMON)
|
||||
/* for DT-based PCI controllers that support ECAM */
|
||||
int pci_host_common_probe(struct platform_device *pdev);
|
||||
void pci_host_common_remove(struct platform_device *pdev);
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in a new issue