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)15static inline bool pci_ats_supported(struct pci_dev *d) 16 { return false; } pci_enable_ats(struct pci_dev * d,int ps)17static inline int pci_enable_ats(struct pci_dev *d, int ps) 18 { return -ENODEV; } pci_disable_ats(struct pci_dev * d)19static inline void pci_disable_ats(struct pci_dev *d) { } pci_ats_queue_depth(struct pci_dev * d)20static inline int pci_ats_queue_depth(struct pci_dev *d) 21 { return -ENODEV; } pci_ats_page_aligned(struct pci_dev * dev)22static 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)33static 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)43static inline int pci_enable_pasid(struct pci_dev *pdev, int features) 44 { return -EINVAL; } pci_disable_pasid(struct pci_dev * pdev)45static inline void pci_disable_pasid(struct pci_dev *pdev) { } pci_pasid_features(struct pci_dev * pdev)46static inline int pci_pasid_features(struct pci_dev *pdev) 47 { return -EINVAL; } pci_max_pasids(struct pci_dev * pdev)48static 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