diff options
Diffstat (limited to 'drivers/pci/pci.h')
-rw-r--r-- | drivers/pci/pci.h | 66 |
1 files changed, 15 insertions, 51 deletions
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index 6beb11b617a9..3a39bf1f1e2c 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h | |||
@@ -11,7 +11,7 @@ | |||
11 | extern int pci_uevent(struct device *dev, struct kobj_uevent_env *env); | 11 | extern int pci_uevent(struct device *dev, struct kobj_uevent_env *env); |
12 | extern int pci_create_sysfs_dev_files(struct pci_dev *pdev); | 12 | extern int pci_create_sysfs_dev_files(struct pci_dev *pdev); |
13 | extern void pci_remove_sysfs_dev_files(struct pci_dev *pdev); | 13 | extern void pci_remove_sysfs_dev_files(struct pci_dev *pdev); |
14 | #ifndef CONFIG_DMI | 14 | #if !defined(CONFIG_DMI) && !defined(CONFIG_ACPI) |
15 | static inline void pci_create_firmware_label_files(struct pci_dev *pdev) | 15 | static inline void pci_create_firmware_label_files(struct pci_dev *pdev) |
16 | { return; } | 16 | { return; } |
17 | static inline void pci_remove_firmware_label_files(struct pci_dev *pdev) | 17 | static inline void pci_remove_firmware_label_files(struct pci_dev *pdev) |
@@ -22,8 +22,13 @@ extern void pci_remove_firmware_label_files(struct pci_dev *pdev); | |||
22 | #endif | 22 | #endif |
23 | extern void pci_cleanup_rom(struct pci_dev *dev); | 23 | extern void pci_cleanup_rom(struct pci_dev *dev); |
24 | #ifdef HAVE_PCI_MMAP | 24 | #ifdef HAVE_PCI_MMAP |
25 | enum pci_mmap_api { | ||
26 | PCI_MMAP_SYSFS, /* mmap on /sys/bus/pci/devices/<BDF>/resource<N> */ | ||
27 | PCI_MMAP_PROCFS /* mmap on /proc/bus/pci/<BDF> */ | ||
28 | }; | ||
25 | extern int pci_mmap_fits(struct pci_dev *pdev, int resno, | 29 | extern int pci_mmap_fits(struct pci_dev *pdev, int resno, |
26 | struct vm_area_struct *vma); | 30 | struct vm_area_struct *vmai, |
31 | enum pci_mmap_api mmap_api); | ||
27 | #endif | 32 | #endif |
28 | int pci_probe_reset_function(struct pci_dev *dev); | 33 | int pci_probe_reset_function(struct pci_dev *dev); |
29 | 34 | ||
@@ -63,15 +68,18 @@ struct pci_platform_pm_ops { | |||
63 | extern int pci_set_platform_pm(struct pci_platform_pm_ops *ops); | 68 | extern int pci_set_platform_pm(struct pci_platform_pm_ops *ops); |
64 | extern void pci_update_current_state(struct pci_dev *dev, pci_power_t state); | 69 | extern void pci_update_current_state(struct pci_dev *dev, pci_power_t state); |
65 | extern void pci_disable_enabled_device(struct pci_dev *dev); | 70 | extern void pci_disable_enabled_device(struct pci_dev *dev); |
66 | extern bool pci_check_pme_status(struct pci_dev *dev); | ||
67 | extern int pci_finish_runtime_suspend(struct pci_dev *dev); | 71 | extern int pci_finish_runtime_suspend(struct pci_dev *dev); |
68 | extern void pci_wakeup_event(struct pci_dev *dev); | ||
69 | extern int __pci_pme_wakeup(struct pci_dev *dev, void *ign); | 72 | extern int __pci_pme_wakeup(struct pci_dev *dev, void *ign); |
70 | extern void pci_pme_wakeup_bus(struct pci_bus *bus); | ||
71 | extern void pci_pm_init(struct pci_dev *dev); | 73 | extern void pci_pm_init(struct pci_dev *dev); |
72 | extern void platform_pci_wakeup_init(struct pci_dev *dev); | 74 | extern void platform_pci_wakeup_init(struct pci_dev *dev); |
73 | extern void pci_allocate_cap_save_buffers(struct pci_dev *dev); | 75 | extern void pci_allocate_cap_save_buffers(struct pci_dev *dev); |
74 | 76 | ||
77 | static inline void pci_wakeup_event(struct pci_dev *dev) | ||
78 | { | ||
79 | /* Wait 100 ms before the system can be put into a sleep state. */ | ||
80 | pm_wakeup_event(&dev->dev, 100); | ||
81 | } | ||
82 | |||
75 | static inline bool pci_is_bridge(struct pci_dev *pci_dev) | 83 | static inline bool pci_is_bridge(struct pci_dev *pci_dev) |
76 | { | 84 | { |
77 | return !!(pci_dev->subordinate); | 85 | return !!(pci_dev->subordinate); |
@@ -138,13 +146,7 @@ static inline void pci_no_msi(void) { } | |||
138 | static inline void pci_msi_init_pci_dev(struct pci_dev *dev) { } | 146 | static inline void pci_msi_init_pci_dev(struct pci_dev *dev) { } |
139 | #endif | 147 | #endif |
140 | 148 | ||
141 | #ifdef CONFIG_PCIEAER | 149 | extern void pci_realloc(void); |
142 | void pci_no_aer(void); | ||
143 | bool pci_aer_available(void); | ||
144 | #else | ||
145 | static inline void pci_no_aer(void) { } | ||
146 | static inline bool pci_aer_available(void) { return false; } | ||
147 | #endif | ||
148 | 150 | ||
149 | static inline int pci_no_d1d2(struct pci_dev *dev) | 151 | static inline int pci_no_d1d2(struct pci_dev *dev) |
150 | { | 152 | { |
@@ -156,8 +158,7 @@ static inline int pci_no_d1d2(struct pci_dev *dev) | |||
156 | 158 | ||
157 | } | 159 | } |
158 | extern struct device_attribute pci_dev_attrs[]; | 160 | extern struct device_attribute pci_dev_attrs[]; |
159 | extern struct device_attribute dev_attr_cpuaffinity; | 161 | extern struct device_attribute pcibus_dev_attrs[]; |
160 | extern struct device_attribute dev_attr_cpulistaffinity; | ||
161 | #ifdef CONFIG_HOTPLUG | 162 | #ifdef CONFIG_HOTPLUG |
162 | extern struct bus_attribute pci_bus_attrs[]; | 163 | extern struct bus_attribute pci_bus_attrs[]; |
163 | #else | 164 | #else |
@@ -250,15 +251,6 @@ struct pci_sriov { | |||
250 | u8 __iomem *mstate; /* VF Migration State Array */ | 251 | u8 __iomem *mstate; /* VF Migration State Array */ |
251 | }; | 252 | }; |
252 | 253 | ||
253 | /* Address Translation Service */ | ||
254 | struct pci_ats { | ||
255 | int pos; /* capability position */ | ||
256 | int stu; /* Smallest Translation Unit */ | ||
257 | int qdep; /* Invalidate Queue Depth */ | ||
258 | int ref_cnt; /* Physical Function reference count */ | ||
259 | unsigned int is_enabled:1; /* Enable bit is set */ | ||
260 | }; | ||
261 | |||
262 | #ifdef CONFIG_PCI_IOV | 254 | #ifdef CONFIG_PCI_IOV |
263 | extern int pci_iov_init(struct pci_dev *dev); | 255 | extern int pci_iov_init(struct pci_dev *dev); |
264 | extern void pci_iov_release(struct pci_dev *dev); | 256 | extern void pci_iov_release(struct pci_dev *dev); |
@@ -269,19 +261,6 @@ extern resource_size_t pci_sriov_resource_alignment(struct pci_dev *dev, | |||
269 | extern void pci_restore_iov_state(struct pci_dev *dev); | 261 | extern void pci_restore_iov_state(struct pci_dev *dev); |
270 | extern int pci_iov_bus_range(struct pci_bus *bus); | 262 | extern int pci_iov_bus_range(struct pci_bus *bus); |
271 | 263 | ||
272 | extern int pci_enable_ats(struct pci_dev *dev, int ps); | ||
273 | extern void pci_disable_ats(struct pci_dev *dev); | ||
274 | extern int pci_ats_queue_depth(struct pci_dev *dev); | ||
275 | /** | ||
276 | * pci_ats_enabled - query the ATS status | ||
277 | * @dev: the PCI device | ||
278 | * | ||
279 | * Returns 1 if ATS capability is enabled, or 0 if not. | ||
280 | */ | ||
281 | static inline int pci_ats_enabled(struct pci_dev *dev) | ||
282 | { | ||
283 | return dev->ats && dev->ats->is_enabled; | ||
284 | } | ||
285 | #else | 264 | #else |
286 | static inline int pci_iov_init(struct pci_dev *dev) | 265 | static inline int pci_iov_init(struct pci_dev *dev) |
287 | { | 266 | { |
@@ -304,21 +283,6 @@ static inline int pci_iov_bus_range(struct pci_bus *bus) | |||
304 | return 0; | 283 | return 0; |
305 | } | 284 | } |
306 | 285 | ||
307 | static inline int pci_enable_ats(struct pci_dev *dev, int ps) | ||
308 | { | ||
309 | return -ENODEV; | ||
310 | } | ||
311 | static inline void pci_disable_ats(struct pci_dev *dev) | ||
312 | { | ||
313 | } | ||
314 | static inline int pci_ats_queue_depth(struct pci_dev *dev) | ||
315 | { | ||
316 | return -ENODEV; | ||
317 | } | ||
318 | static inline int pci_ats_enabled(struct pci_dev *dev) | ||
319 | { | ||
320 | return 0; | ||
321 | } | ||
322 | #endif /* CONFIG_PCI_IOV */ | 286 | #endif /* CONFIG_PCI_IOV */ |
323 | 287 | ||
324 | static inline resource_size_t pci_resource_alignment(struct pci_dev *dev, | 288 | static inline resource_size_t pci_resource_alignment(struct pci_dev *dev, |