smp, irq_work: Continue smp_call_function*() and irq_work*() integration
[sfrench/cifs-2.6.git] / include / linux / pci-ats.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef LINUX_PCI_ATS_H
3 #define LINUX_PCI_ATS_H
4
5 #include <linux/pci.h>
6
7 #ifdef CONFIG_PCI_ATS
8 /* Address Translation Service */
9 bool pci_ats_supported(struct pci_dev *dev);
10 int pci_enable_ats(struct pci_dev *dev, int ps);
11 void pci_disable_ats(struct pci_dev *dev);
12 int pci_ats_queue_depth(struct pci_dev *dev);
13 int pci_ats_page_aligned(struct pci_dev *dev);
14 #else /* CONFIG_PCI_ATS */
15 static inline bool pci_ats_supported(struct pci_dev *d)
16 { return false; }
17 static inline int pci_enable_ats(struct pci_dev *d, int ps)
18 { return -ENODEV; }
19 static inline void pci_disable_ats(struct pci_dev *d) { }
20 static inline int pci_ats_queue_depth(struct pci_dev *d)
21 { return -ENODEV; }
22 static inline int pci_ats_page_aligned(struct pci_dev *dev)
23 { return 0; }
24 #endif /* CONFIG_PCI_ATS */
25
26 #ifdef CONFIG_PCI_PRI
27 int pci_enable_pri(struct pci_dev *pdev, u32 reqs);
28 void pci_disable_pri(struct pci_dev *pdev);
29 int pci_reset_pri(struct pci_dev *pdev);
30 int pci_prg_resp_pasid_required(struct pci_dev *pdev);
31 #endif /* CONFIG_PCI_PRI */
32
33 #ifdef CONFIG_PCI_PASID
34 int pci_enable_pasid(struct pci_dev *pdev, int features);
35 void pci_disable_pasid(struct pci_dev *pdev);
36 int pci_pasid_features(struct pci_dev *pdev);
37 int pci_max_pasids(struct pci_dev *pdev);
38 #else /* CONFIG_PCI_PASID */
39 static inline int pci_enable_pasid(struct pci_dev *pdev, int features)
40 { return -EINVAL; }
41 static inline void pci_disable_pasid(struct pci_dev *pdev) { }
42 static inline int pci_pasid_features(struct pci_dev *pdev)
43 { return -EINVAL; }
44 static inline int pci_max_pasids(struct pci_dev *pdev)
45 { return -EINVAL; }
46 #endif /* CONFIG_PCI_PASID */
47
48 #endif /* LINUX_PCI_ATS_H */