diff options
Diffstat (limited to 'include/linux/pci.h')
| -rw-r--r-- | include/linux/pci.h | 44 | 
1 files changed, 28 insertions, 16 deletions
diff --git a/include/linux/pci.h b/include/linux/pci.h index 77448215ef5b..dd436da7eccc 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -344,10 +344,13 @@ struct pci_dev {  						   D3cold, not set for devices  						   powered on/off by the  						   corresponding bridge */ +	unsigned int	skip_bus_pm:1;	/* Internal: Skip bus-level PM */  	unsigned int	ignore_hotplug:1;	/* Ignore hotplug events */  	unsigned int	hotplug_user_indicators:1; /* SlotCtl indicators  						      controlled exclusively by  						      user sysfs */ +	unsigned int	clear_retrain_link:1;	/* Need to clear Retrain Link +						   bit manually */  	unsigned int	d3_delay;	/* D3->D0 transition time in ms */  	unsigned int	d3cold_delay;	/* D3cold->D0 transition time in ms */ @@ -490,6 +493,7 @@ struct pci_host_bridge {  	void		*sysdata;  	int		busnr;  	struct list_head windows;	/* resource_entry */ +	struct list_head dma_ranges;	/* dma ranges resource list */  	u8 (*swizzle_irq)(struct pci_dev *, u8 *); /* Platform IRQ swizzler */  	int (*map_irq)(const struct pci_dev *, u8, u8);  	void (*release_fn)(struct pci_host_bridge *); @@ -596,6 +600,11 @@ struct pci_bus {  #define to_pci_bus(n)	container_of(n, struct pci_bus, dev) +static inline u16 pci_dev_id(struct pci_dev *dev) +{ +	return PCI_DEVID(dev->bus->number, dev->devfn); +} +  /*   * Returns true if the PCI bus is root (behind host-PCI bridge),   * false otherwise @@ -1233,7 +1242,6 @@ int __must_check pci_request_regions(struct pci_dev *, const char *);  int __must_check pci_request_regions_exclusive(struct pci_dev *, const char *);  void pci_release_regions(struct pci_dev *);  int __must_check pci_request_region(struct pci_dev *, int, const char *); -int __must_check pci_request_region_exclusive(struct pci_dev *, int, const char *);  void pci_release_region(struct pci_dev *, int);  int pci_request_selected_regions(struct pci_dev *, int, const char *);  int pci_request_selected_regions_exclusive(struct pci_dev *, int, const char *); @@ -1521,21 +1529,6 @@ static inline void pcie_ecrc_get_policy(char *str) { }  bool pci_ats_disabled(void); -#ifdef CONFIG_PCI_ATS -/* Address Translation Service */ -void pci_ats_init(struct pci_dev *dev); -int pci_enable_ats(struct pci_dev *dev, int ps); -void pci_disable_ats(struct pci_dev *dev); -int pci_ats_queue_depth(struct pci_dev *dev); -int pci_ats_page_aligned(struct pci_dev *dev); -#else -static inline void pci_ats_init(struct pci_dev *d) { } -static inline int pci_enable_ats(struct pci_dev *d, int ps) { return -ENODEV; } -static inline void pci_disable_ats(struct pci_dev *d) { } -static inline int pci_ats_queue_depth(struct pci_dev *d) { return -ENODEV; } -static inline int pci_ats_page_aligned(struct pci_dev *dev) { return 0; } -#endif -  #ifdef CONFIG_PCIE_PTM  int pci_enable_ptm(struct pci_dev *dev, u8 *granularity);  #else @@ -1728,8 +1721,24 @@ static inline int pci_irqd_intx_xlate(struct irq_domain *d,  static inline const struct pci_device_id *pci_match_id(const struct pci_device_id *ids,  							 struct pci_dev *dev)  { return NULL; } +static inline bool pci_ats_disabled(void) { return true; }  #endif /* CONFIG_PCI */ +#ifdef CONFIG_PCI_ATS +/* Address Translation Service */ +void pci_ats_init(struct pci_dev *dev); +int pci_enable_ats(struct pci_dev *dev, int ps); +void pci_disable_ats(struct pci_dev *dev); +int pci_ats_queue_depth(struct pci_dev *dev); +int pci_ats_page_aligned(struct pci_dev *dev); +#else +static inline void pci_ats_init(struct pci_dev *d) { } +static inline int pci_enable_ats(struct pci_dev *d, int ps) { return -ENODEV; } +static inline void pci_disable_ats(struct pci_dev *d) { } +static inline int pci_ats_queue_depth(struct pci_dev *d) { return -ENODEV; } +static inline int pci_ats_page_aligned(struct pci_dev *dev) { return 0; } +#endif +  /* Include architecture-dependent settings and functions */  #include <asm/pci.h> @@ -2363,4 +2372,7 @@ void pci_uevent_ers(struct pci_dev *pdev, enum  pci_ers_result err_type);  #define pci_info(pdev, fmt, arg...)	dev_info(&(pdev)->dev, fmt, ##arg)  #define pci_dbg(pdev, fmt, arg...)	dev_dbg(&(pdev)->dev, fmt, ##arg) +#define pci_notice_ratelimited(pdev, fmt, arg...) \ +	dev_notice_ratelimited(&(pdev)->dev, fmt, ##arg) +  #endif /* LINUX_PCI_H */  |