Blame view

include/linux/pci-ats.h 2.59 KB
5cdede240   Joerg Roedel   PCI: Move ATS dec...
1
2
  #ifndef LINUX_PCI_ATS_H
  #define LINUX_PCI_ATS_H
db3c33c6d   Joerg Roedel   PCI: Move ATS imp...
3
  #include <linux/pci.h>
5cdede240   Joerg Roedel   PCI: Move ATS dec...
4
5
6
7
8
9
10
11
  /* Address Translation Service */
  struct pci_ats {
  	int pos;        /* capability position */
  	int stu;        /* Smallest Translation Unit */
  	int qdep;       /* Invalidate Queue Depth */
  	int ref_cnt;    /* Physical Function reference count */
  	unsigned int is_enabled:1;      /* Enable bit is set */
  };
466b3ddfb   Joerg Roedel   PCI: Fix compile ...
12
  #ifdef CONFIG_PCI_ATS
5cdede240   Joerg Roedel   PCI: Move ATS dec...
13
14
15
16
  
  extern int pci_enable_ats(struct pci_dev *dev, int ps);
  extern void pci_disable_ats(struct pci_dev *dev);
  extern int pci_ats_queue_depth(struct pci_dev *dev);
c320b976d   Joerg Roedel   PCI: Add implemen...
17

5cdede240   Joerg Roedel   PCI: Move ATS dec...
18
19
20
21
22
23
24
25
26
27
  /**
   * pci_ats_enabled - query the ATS status
   * @dev: the PCI device
   *
   * Returns 1 if ATS capability is enabled, or 0 if not.
   */
  static inline int pci_ats_enabled(struct pci_dev *dev)
  {
  	return dev->ats && dev->ats->is_enabled;
  }
466b3ddfb   Joerg Roedel   PCI: Fix compile ...
28
  #else /* CONFIG_PCI_ATS */
5cdede240   Joerg Roedel   PCI: Move ATS dec...
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
  
  static inline int pci_enable_ats(struct pci_dev *dev, int ps)
  {
  	return -ENODEV;
  }
  
  static inline void pci_disable_ats(struct pci_dev *dev)
  {
  }
  
  static inline int pci_ats_queue_depth(struct pci_dev *dev)
  {
  	return -ENODEV;
  }
  
  static inline int pci_ats_enabled(struct pci_dev *dev)
  {
  	return 0;
  }
466b3ddfb   Joerg Roedel   PCI: Fix compile ...
48
  #endif /* CONFIG_PCI_ATS */
5cdede240   Joerg Roedel   PCI: Move ATS dec...
49

c320b976d   Joerg Roedel   PCI: Add implemen...
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
  #ifdef CONFIG_PCI_PRI
  
  extern int  pci_enable_pri(struct pci_dev *pdev, u32 reqs);
  extern void pci_disable_pri(struct pci_dev *pdev);
  extern bool pci_pri_enabled(struct pci_dev *pdev);
  extern int  pci_reset_pri(struct pci_dev *pdev);
  extern bool pci_pri_stopped(struct pci_dev *pdev);
  extern int  pci_pri_status(struct pci_dev *pdev);
  
  #else /* CONFIG_PCI_PRI */
  
  static inline int pci_enable_pri(struct pci_dev *pdev, u32 reqs)
  {
  	return -ENODEV;
  }
  
  static inline void pci_disable_pri(struct pci_dev *pdev)
  {
  }
  
  static inline bool pci_pri_enabled(struct pci_dev *pdev)
  {
  	return false;
  }
  
  static inline int pci_reset_pri(struct pci_dev *pdev)
  {
  	return -ENODEV;
  }
  
  static inline bool pci_pri_stopped(struct pci_dev *pdev)
  {
  	return true;
  }
  
  static inline int pci_pri_status(struct pci_dev *pdev)
  {
  	return -ENODEV;
  }
  #endif /* CONFIG_PCI_PRI */
086ac11f6   Joerg Roedel   PCI: Add support ...
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
  #ifdef CONFIG_PCI_PASID
  
  extern int pci_enable_pasid(struct pci_dev *pdev, int features);
  extern void pci_disable_pasid(struct pci_dev *pdev);
  extern int pci_pasid_features(struct pci_dev *pdev);
  extern int pci_max_pasids(struct pci_dev *pdev);
  
  #else  /* CONFIG_PCI_PASID */
  
  static inline int pci_enable_pasid(struct pci_dev *pdev, int features)
  {
  	return -EINVAL;
  }
  
  static inline void pci_disable_pasid(struct pci_dev *pdev)
  {
  }
  
  static inline int pci_pasid_features(struct pci_dev *pdev)
  {
  	return -EINVAL;
  }
  
  static inline int pci_max_pasids(struct pci_dev *pdev)
  {
  	return -EINVAL;
  }
  
  #endif /* CONFIG_PCI_PASID */
5cdede240   Joerg Roedel   PCI: Move ATS dec...
119
  #endif /* LINUX_PCI_ATS_H*/