pci-ats.h (1802B)
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 */ 9bool pci_ats_supported(struct pci_dev *dev); 10int pci_enable_ats(struct pci_dev *dev, int ps); 11void pci_disable_ats(struct pci_dev *dev); 12int pci_ats_queue_depth(struct pci_dev *dev); 13int pci_ats_page_aligned(struct pci_dev *dev); 14#else /* CONFIG_PCI_ATS */ 15static inline bool pci_ats_supported(struct pci_dev *d) 16{ return false; } 17static inline int pci_enable_ats(struct pci_dev *d, int ps) 18{ return -ENODEV; } 19static inline void pci_disable_ats(struct pci_dev *d) { } 20static inline int pci_ats_queue_depth(struct pci_dev *d) 21{ return -ENODEV; } 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 27int pci_enable_pri(struct pci_dev *pdev, u32 reqs); 28void pci_disable_pri(struct pci_dev *pdev); 29int pci_reset_pri(struct pci_dev *pdev); 30int pci_prg_resp_pasid_required(struct pci_dev *pdev); 31bool pci_pri_supported(struct pci_dev *pdev); 32#else 33static inline bool pci_pri_supported(struct pci_dev *pdev) 34{ return false; } 35#endif /* CONFIG_PCI_PRI */ 36 37#ifdef CONFIG_PCI_PASID 38int pci_enable_pasid(struct pci_dev *pdev, int features); 39void pci_disable_pasid(struct pci_dev *pdev); 40int pci_pasid_features(struct pci_dev *pdev); 41int pci_max_pasids(struct pci_dev *pdev); 42#else /* CONFIG_PCI_PASID */ 43static inline int pci_enable_pasid(struct pci_dev *pdev, int features) 44{ return -EINVAL; } 45static inline void pci_disable_pasid(struct pci_dev *pdev) { } 46static inline int pci_pasid_features(struct pci_dev *pdev) 47{ return -EINVAL; } 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 */