diff options
| author | Bjorn Helgaas <bhelgaas@google.com> | 2016-12-12 11:25:12 -0600 |
|---|---|---|
| committer | Bjorn Helgaas <bhelgaas@google.com> | 2016-12-12 11:25:12 -0600 |
| commit | d34efd22acace472ad33887842117933ee631391 (patch) | |
| tree | b6165ad701cb1a07a3758177f332761105679b6c /include | |
| parent | f77b3244c18781d3b6bb7ffd7273a6c79d135f9e (diff) | |
| parent | af099eab35c3aea52534002203f8b9c7ebdc9861 (diff) | |
Merge branch 'pci/host-tegra' into next
* pci/host-tegra:
arm64: tegra: Enable PCIe on Jetson TX1
arm64: tegra: Add PCIe host bridge on Tegra210
PCI: tegra: Enable the driver on 64-bit ARM
PCI: tegra: Add Tegra210 support
PCI: tegra: Implement PCA enable workaround
dt-bindings: pci: tegra: Add Tegra210 support
PCI: tegra: Use new pci_register_host_bridge() interface
PCI: Export host bridge registration interface
PCI: Allow driver-specific data in host bridge
PCI: Add pci_register_host_bridge() interface
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/pci.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/linux/pci.h b/include/linux/pci.h index 0e49f70dbd9b..aa5e8af16cfc 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -420,9 +420,13 @@ static inline int pci_channel_offline(struct pci_dev *pdev) struct pci_host_bridge { struct device dev; struct pci_bus *bus; /* root bus */ + struct pci_ops *ops; + void *sysdata; + int busnr; struct list_head windows; /* resource_entry */ void (*release_fn)(struct pci_host_bridge *); void *release_data; + struct msi_controller *msi; unsigned int ignore_reset_delay:1; /* for entire hierarchy */ /* Resource alignment requirements */ resource_size_t (*align_resource)(struct pci_dev *dev, @@ -430,10 +434,23 @@ struct pci_host_bridge { resource_size_t start, resource_size_t size, resource_size_t align); + unsigned long private[0] ____cacheline_aligned; }; #define to_pci_host_bridge(n) container_of(n, struct pci_host_bridge, dev) +static inline void *pci_host_bridge_priv(struct pci_host_bridge *bridge) +{ + return (void *)bridge->private; +} + +static inline struct pci_host_bridge *pci_host_bridge_from_priv(void *priv) +{ + return container_of(priv, struct pci_host_bridge, private); +} + +struct pci_host_bridge *pci_alloc_host_bridge(size_t priv); +int pci_register_host_bridge(struct pci_host_bridge *bridge); struct pci_host_bridge *pci_find_host_bridge(struct pci_bus *bus); void pci_set_host_bridge_release(struct pci_host_bridge *bridge, |
