aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/pci.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/pci.h')
-rw-r--r--include/linux/pci.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 30d6c162e053..e2d1a124216a 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)
420struct pci_host_bridge { 420struct pci_host_bridge {
421 struct device dev; 421 struct device dev;
422 struct pci_bus *bus; /* root bus */ 422 struct pci_bus *bus; /* root bus */
423 struct pci_ops *ops;
424 void *sysdata;
425 int busnr;
423 struct list_head windows; /* resource_entry */ 426 struct list_head windows; /* resource_entry */
424 void (*release_fn)(struct pci_host_bridge *); 427 void (*release_fn)(struct pci_host_bridge *);
425 void *release_data; 428 void *release_data;
429 struct msi_controller *msi;
426 unsigned int ignore_reset_delay:1; /* for entire hierarchy */ 430 unsigned int ignore_reset_delay:1; /* for entire hierarchy */
427 /* Resource alignment requirements */ 431 /* Resource alignment requirements */
428 resource_size_t (*align_resource)(struct pci_dev *dev, 432 resource_size_t (*align_resource)(struct pci_dev *dev,
@@ -430,10 +434,23 @@ struct pci_host_bridge {
430 resource_size_t start, 434 resource_size_t start,
431 resource_size_t size, 435 resource_size_t size,
432 resource_size_t align); 436 resource_size_t align);
437 unsigned long private[0] ____cacheline_aligned;
433}; 438};
434 439
435#define to_pci_host_bridge(n) container_of(n, struct pci_host_bridge, dev) 440#define to_pci_host_bridge(n) container_of(n, struct pci_host_bridge, dev)
436 441
442static inline void *pci_host_bridge_priv(struct pci_host_bridge *bridge)
443{
444 return (void *)bridge->private;
445}
446
447static inline struct pci_host_bridge *pci_host_bridge_from_priv(void *priv)
448{
449 return container_of(priv, struct pci_host_bridge, private);
450}
451
452struct pci_host_bridge *pci_alloc_host_bridge(size_t priv);
453int pci_register_host_bridge(struct pci_host_bridge *bridge);
437struct pci_host_bridge *pci_find_host_bridge(struct pci_bus *bus); 454struct pci_host_bridge *pci_find_host_bridge(struct pci_bus *bus);
438 455
439void pci_set_host_bridge_release(struct pci_host_bridge *bridge, 456void pci_set_host_bridge_release(struct pci_host_bridge *bridge,