56 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef LINUX_PCI_ATS_H3#define LINUX_PCI_ATS_H4 5#include <linux/pci.h>6 7#ifdef CONFIG_PCI_ATS8/* 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_PRI30int 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#else36static inline bool pci_pri_supported(struct pci_dev *pdev)37{ return false; }38#endif /* CONFIG_PCI_PRI */39 40#ifdef CONFIG_PCI_PASID41int 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);45#else /* CONFIG_PCI_PASID */46static inline int pci_enable_pasid(struct pci_dev *pdev, int features)47{ return -EINVAL; }48static inline void pci_disable_pasid(struct pci_dev *pdev) { }49static inline int pci_pasid_features(struct pci_dev *pdev)50{ return -EINVAL; }51static inline int pci_max_pasids(struct pci_dev *pdev)52{ return -EINVAL; }53#endif /* CONFIG_PCI_PASID */54 55#endif /* LINUX_PCI_ATS_H */56