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