at master 2.1 kB view raw
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); 11int pci_prepare_ats(struct pci_dev *dev, int ps); 12void pci_disable_ats(struct pci_dev *dev); 13int pci_ats_queue_depth(struct pci_dev *dev); 14int pci_ats_page_aligned(struct pci_dev *dev); 15#else /* CONFIG_PCI_ATS */ 16static inline bool pci_ats_supported(struct pci_dev *d) 17{ return false; } 18static inline int pci_enable_ats(struct pci_dev *d, int ps) 19{ return -ENODEV; } 20static inline int pci_prepare_ats(struct pci_dev *dev, int ps) 21{ return -ENODEV; } 22static inline void pci_disable_ats(struct pci_dev *d) { } 23static inline int pci_ats_queue_depth(struct pci_dev *d) 24{ return -ENODEV; } 25static inline int pci_ats_page_aligned(struct pci_dev *dev) 26{ return 0; } 27#endif /* CONFIG_PCI_ATS */ 28 29#ifdef CONFIG_PCI_PRI 30int pci_enable_pri(struct pci_dev *pdev, u32 reqs); 31void pci_disable_pri(struct pci_dev *pdev); 32int pci_reset_pri(struct pci_dev *pdev); 33int pci_prg_resp_pasid_required(struct pci_dev *pdev); 34bool pci_pri_supported(struct pci_dev *pdev); 35#else 36static inline bool pci_pri_supported(struct pci_dev *pdev) 37{ return false; } 38#endif /* CONFIG_PCI_PRI */ 39 40#ifdef CONFIG_PCI_PASID 41int pci_enable_pasid(struct pci_dev *pdev, int features); 42void pci_disable_pasid(struct pci_dev *pdev); 43int pci_pasid_features(struct pci_dev *pdev); 44int pci_max_pasids(struct pci_dev *pdev); 45int pci_pasid_status(struct pci_dev *pdev); 46#else /* CONFIG_PCI_PASID */ 47static inline int pci_enable_pasid(struct pci_dev *pdev, int features) 48{ return -EINVAL; } 49static inline void pci_disable_pasid(struct pci_dev *pdev) { } 50static inline int pci_pasid_features(struct pci_dev *pdev) 51{ return -EINVAL; } 52static inline int pci_max_pasids(struct pci_dev *pdev) 53{ return -EINVAL; } 54static inline int pci_pasid_status(struct pci_dev *pdev) 55{ return -EINVAL; } 56#endif /* CONFIG_PCI_PASID */ 57 58#endif /* LINUX_PCI_ATS_H */