diff options
author | 2024-12-04 15:01:44 +0000 | |
---|---|---|
committer | 2025-01-15 14:52:12 -0600 | |
commit | 477ac7b0a7984e12e8db07fe54ad64443c5f8928 (patch) | |
tree | f5ade3c2df2266ac69387d1c18e87d3e8cd33aa0 | |
parent | PCI: imx6: Add IOMMU and ITS MSI support for i.MX95 (diff) | |
download | wireguard-linux-477ac7b0a7984e12e8db07fe54ad64443c5f8928.tar.xz wireguard-linux-477ac7b0a7984e12e8db07fe54ad64443c5f8928.zip |
PCI: host-generic: Allow {en,dis}able_device() to be provided via pci_ecam_ops
In order to let host controller drivers using the host-generic
infrastructure use the {en,dis}able_device() callbacks that can be used to
configure sideband RID mapping hardware, provide these two callbacks as
part of the pci_ecam_ops structure.
Link: https://lore.kernel.org/r/20241204150145.800408-2-maz@kernel.org
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Diffstat (limited to '')
-rw-r--r-- | drivers/pci/controller/pci-host-common.c | 2 | ||||
-rw-r--r-- | include/linux/pci-ecam.h | 4 |
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/pci/controller/pci-host-common.c b/drivers/pci/controller/pci-host-common.c index cf5f59a745b3..f441bfd6f96a 100644 --- a/drivers/pci/controller/pci-host-common.c +++ b/drivers/pci/controller/pci-host-common.c @@ -75,6 +75,8 @@ int pci_host_common_probe(struct platform_device *pdev) bridge->sysdata = cfg; bridge->ops = (struct pci_ops *)&ops->pci_ops; + bridge->enable_device = ops->enable_device; + bridge->disable_device = ops->disable_device; bridge->msi_domain = true; return pci_host_probe(bridge); diff --git a/include/linux/pci-ecam.h b/include/linux/pci-ecam.h index 3a4860bd2758..3a10f8cfc3ad 100644 --- a/include/linux/pci-ecam.h +++ b/include/linux/pci-ecam.h @@ -45,6 +45,10 @@ struct pci_ecam_ops { unsigned int bus_shift; struct pci_ops pci_ops; int (*init)(struct pci_config_window *); + int (*enable_device)(struct pci_host_bridge *, + struct pci_dev *); + void (*disable_device)(struct pci_host_bridge *, + struct pci_dev *); }; /* |