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 */
pci_ats_supported(struct pci_dev * d)15 static inline bool pci_ats_supported(struct pci_dev *d)
16 { return false; }
pci_enable_ats(struct pci_dev * d,int ps)17 static inline int pci_enable_ats(struct pci_dev *d, int ps)
18 { return -ENODEV; }
pci_disable_ats(struct pci_dev * d)19 static inline void pci_disable_ats(struct pci_dev *d) { }
pci_ats_queue_depth(struct pci_dev * d)20 static inline int pci_ats_queue_depth(struct pci_dev *d)
21 { return -ENODEV; }
pci_ats_page_aligned(struct pci_dev * dev)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 bool pci_pri_supported(struct pci_dev *pdev);
32 #else
pci_pri_supported(struct pci_dev * pdev)33 static inline bool pci_pri_supported(struct pci_dev *pdev)
34 { return false; }
35 #endif /* CONFIG_PCI_PRI */
36 
37 #ifdef CONFIG_PCI_PASID
38 int pci_enable_pasid(struct pci_dev *pdev, int features);
39 void pci_disable_pasid(struct pci_dev *pdev);
40 int pci_pasid_features(struct pci_dev *pdev);
41 int pci_max_pasids(struct pci_dev *pdev);
42 #else /* CONFIG_PCI_PASID */
pci_enable_pasid(struct pci_dev * pdev,int features)43 static inline int pci_enable_pasid(struct pci_dev *pdev, int features)
44 { return -EINVAL; }
pci_disable_pasid(struct pci_dev * pdev)45 static inline void pci_disable_pasid(struct pci_dev *pdev) { }
pci_pasid_features(struct pci_dev * pdev)46 static inline int pci_pasid_features(struct pci_dev *pdev)
47 { return -EINVAL; }
pci_max_pasids(struct pci_dev * pdev)48 static inline int pci_max_pasids(struct pci_dev *pdev)
49 { return -EINVAL; }
50 #endif /* CONFIG_PCI_PASID */
51 
52 #endif /* LINUX_PCI_ATS_H */
53