diff options
Diffstat (limited to 'include/linux/pci.h')
| -rw-r--r-- | include/linux/pci.h | 21 | 
1 files changed, 21 insertions, 0 deletions
| diff --git a/include/linux/pci.h b/include/linux/pci.h index e90eb22de628..6ae25aae88fd 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -412,9 +412,18 @@ struct pci_host_bridge {  	void (*release_fn)(struct pci_host_bridge *);  	void *release_data;  	unsigned int ignore_reset_delay:1;	/* for entire hierarchy */ +	/* Resource alignment requirements */ +	resource_size_t (*align_resource)(struct pci_dev *dev, +			const struct resource *res, +			resource_size_t start, +			resource_size_t size, +			resource_size_t align);  };  #define	to_pci_host_bridge(n) container_of(n, struct pci_host_bridge, dev) + +struct pci_host_bridge *pci_find_host_bridge(struct pci_bus *bus); +  void pci_set_host_bridge_release(struct pci_host_bridge *bridge,  		     void (*release_fn)(struct pci_host_bridge *),  		     void *release_data); @@ -820,6 +829,7 @@ void pci_bus_add_device(struct pci_dev *dev);  void pci_read_bridge_bases(struct pci_bus *child);  struct resource *pci_find_parent_resource(const struct pci_dev *dev,  					  struct resource *res); +struct pci_dev *pci_find_pcie_root_port(struct pci_dev *dev);  u8 pci_swizzle_interrupt_pin(const struct pci_dev *dev, u8 pin);  int pci_get_interrupt_pin(struct pci_dev *dev, struct pci_dev **bridge);  u8 pci_common_swizzle(struct pci_dev *dev, u8 *pinp); @@ -1192,6 +1202,17 @@ void pci_unregister_driver(struct pci_driver *dev);  	module_driver(__pci_driver, pci_register_driver, \  		       pci_unregister_driver) +/** + * builtin_pci_driver() - Helper macro for registering a PCI driver + * @__pci_driver: pci_driver struct + * + * Helper macro for PCI drivers which do not do anything special in their + * init code. This eliminates a lot of boilerplate. Each driver may only + * use this macro once, and calling it replaces device_initcall(...) + */ +#define builtin_pci_driver(__pci_driver) \ +	builtin_driver(__pci_driver, pci_register_driver) +  struct pci_driver *pci_dev_driver(const struct pci_dev *dev);  int pci_add_dynid(struct pci_driver *drv,  		  unsigned int vendor, unsigned int device, |