1description: >
2    This defines a PCIe device to be exposed for system management.  It includes
3    the device properties and function properties for all 8 possible functions
4    that are needed for the device identification.
5
6properties:
7    - name: DeviceType
8      type: string
9      description: >
10          Indicates if the device is MultiFunction or SingleFunction.
11    - name: GenerationInUse
12      type: enum[xyz.openbmc_project.Inventory.Item.PCIeSlot.Generations]
13      default: "Unknown"
14      description: >
15          The PCIe interface generation in use by the device.
16    - name: GenerationSupported
17      type: enum[xyz.openbmc_project.Inventory.Item.PCIeSlot.Generations]
18      default: "Unknown"
19      description: >
20          The maximum PCIe generation supported by the device.
21
22    - name: Function0ClassCode
23      type: string
24      description: >
25          The Class Code for this function.
26    - name: Function0DeviceClass
27      type: string
28      description: >
29          The Device Class for this function.
30    - name: Function0DeviceId
31      type: string
32      description: >
33          The Device ID for this function.
34    - name: Function0FunctionType
35      type: string
36      description: >
37          Indicates if the function is Physical or Virtual
38    - name: Function0RevisionId
39      type: string
40      description: >
41          The Revision ID for this function.
42    - name: Function0SubsystemId
43      type: string
44      description: >
45          The Subsystem ID for this function.
46    - name: Function0SubsystemVendorId
47      type: string
48      description: >
49          The Subsystem Vendor ID for this function.
50    - name: Function0VendorId
51      type: string
52      description: >
53          The Vendor ID for this function.
54
55    - name: Function1ClassCode
56      type: string
57      description: >
58          The Class Code for this function.
59    - name: Function1DeviceClass
60      type: string
61      description: >
62          The Device Class for this function.
63    - name: Function1DeviceId
64      type: string
65      description: >
66          The Device ID for this function.
67    - name: Function1FunctionType
68      type: string
69      description: >
70          Indicates if the function is Physical or Virtual
71    - name: Function1RevisionId
72      type: string
73      description: >
74          The Revision ID for this function.
75    - name: Function1SubsystemId
76      type: string
77      description: >
78          The Subsystem ID for this function.
79    - name: Function1SubsystemVendorId
80      type: string
81      description: >
82          The Subsystem Vendor ID for this function.
83    - name: Function1VendorId
84      type: string
85      description: >
86          The Vendor ID for this function.
87
88    - name: Function2ClassCode
89      type: string
90      description: >
91          The Class Code for this function.
92    - name: Function2DeviceClass
93      type: string
94      description: >
95          The Device Class for this function.
96    - name: Function2DeviceId
97      type: string
98      description: >
99          The Device ID for this function.
100    - name: Function2FunctionType
101      type: string
102      description: >
103          Indicates if the function is Physical or Virtual
104    - name: Function2RevisionId
105      type: string
106      description: >
107          The Revision ID for this function.
108    - name: Function2SubsystemId
109      type: string
110      description: >
111          The Subsystem ID for this function.
112    - name: Function2SubsystemVendorId
113      type: string
114      description: >
115          The Subsystem Vendor ID for this function.
116    - name: Function2VendorId
117      type: string
118      description: >
119          The Vendor ID for this function.
120
121    - name: Function3ClassCode
122      type: string
123      description: >
124          The Class Code for this function.
125    - name: Function3DeviceClass
126      type: string
127      description: >
128          The Device Class for this function.
129    - name: Function3DeviceId
130      type: string
131      description: >
132          The Device ID for this function.
133    - name: Function3FunctionType
134      type: string
135      description: >
136          Indicates if the function is Physical or Virtual
137    - name: Function3RevisionId
138      type: string
139      description: >
140          The Revision ID for this function.
141    - name: Function3SubsystemId
142      type: string
143      description: >
144          The Subsystem ID for this function.
145    - name: Function3SubsystemVendorId
146      type: string
147      description: >
148          The Subsystem Vendor ID for this function.
149    - name: Function3VendorId
150      type: string
151      description: >
152          The Vendor ID for this function.
153
154    - name: Function4ClassCode
155      type: string
156      description: >
157          The Class Code for this function.
158    - name: Function4DeviceClass
159      type: string
160      description: >
161          The Device Class for this function.
162    - name: Function4DeviceId
163      type: string
164      description: >
165          The Device ID for this function.
166    - name: Function4FunctionType
167      type: string
168      description: >
169          Indicates if the function is Physical or Virtual
170    - name: Function4RevisionId
171      type: string
172      description: >
173          The Revision ID for this function.
174    - name: Function4SubsystemId
175      type: string
176      description: >
177          The Subsystem ID for this function.
178    - name: Function4SubsystemVendorId
179      type: string
180      description: >
181          The Subsystem Vendor ID for this function.
182    - name: Function4VendorId
183      type: string
184      description: >
185          The Vendor ID for this function.
186
187    - name: Function5ClassCode
188      type: string
189      description: >
190          The Class Code for this function.
191    - name: Function5DeviceClass
192      type: string
193      description: >
194          The Device Class for this function.
195    - name: Function5DeviceId
196      type: string
197      description: >
198          The Device ID for this function.
199    - name: Function5FunctionType
200      type: string
201      description: >
202          Indicates if the function is Physical or Virtual
203    - name: Function5RevisionId
204      type: string
205      description: >
206          The Revision ID for this function.
207    - name: Function5SubsystemId
208      type: string
209      description: >
210          The Subsystem ID for this function.
211    - name: Function5SubsystemVendorId
212      type: string
213      description: >
214          The Subsystem Vendor ID for this function.
215    - name: Function5VendorId
216      type: string
217      description: >
218          The Vendor ID for this function.
219
220    - name: Function6ClassCode
221      type: string
222      description: >
223          The Class Code for this function.
224    - name: Function6DeviceClass
225      type: string
226      description: >
227          The Device Class for this function.
228    - name: Function6DeviceId
229      type: string
230      description: >
231          The Device ID for this function.
232    - name: Function6FunctionType
233      type: string
234      description: >
235          Indicates if the function is Physical or Virtual
236    - name: Function6RevisionId
237      type: string
238      description: >
239          The Revision ID for this function.
240    - name: Function6SubsystemId
241      type: string
242      description: >
243          The Subsystem ID for this function.
244    - name: Function6SubsystemVendorId
245      type: string
246      description: >
247          The Subsystem Vendor ID for this function.
248    - name: Function6VendorId
249      type: string
250      description: >
251          The Vendor ID for this function.
252
253    - name: Function7ClassCode
254      type: string
255      description: >
256          The Class Code for this function.
257    - name: Function7DeviceClass
258      type: string
259      description: >
260          The Device Class for this function.
261    - name: Function7DeviceId
262      type: string
263      description: >
264          The Device ID for this function.
265    - name: Function7FunctionType
266      type: string
267      description: >
268          Indicates if the function is Physical or Virtual
269    - name: Function7RevisionId
270      type: string
271      description: >
272          The Revision ID for this function.
273    - name: Function7SubsystemId
274      type: string
275      description: >
276          The Subsystem ID for this function.
277    - name: Function7SubsystemVendorId
278      type: string
279      description: >
280          The Subsystem Vendor ID for this function.
281    - name: Function7VendorId
282      type: string
283      description: >
284          The Vendor ID for this function.
285
286    - name: MaxLanes
287      type: size
288      default: 0
289      description: >
290          The maximum number of PCIe lanes supported by the PCIe Device
291
292    - name: LanesInUse
293      type: size
294      default: maxint
295      description: >
296          The number of PCIe lanes in use by this device. Default value of
297          maxint is to accommodate the situation where the value of this
298          property is not known due to some unknown reason, like hardware
299          failure. The value of 0 indicates that the link is not active.
300
301associations:
302    - name: upstream_pcie_slot
303      description: >
304          Objects that implement PCIeDevice can optionally implement the
305          upstream_pcie_slot association to provide a link back to a PCIe slot.
306      reverse_names:
307          - associated_pcie_device
308      required_endpoint_interfaces:
309          - xyz.openbmc_project.Inventory.Item.PCIeSlot
310